diff options
Diffstat (limited to 'spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb')
-rw-r--r-- | spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb | 138 |
1 files changed, 52 insertions, 86 deletions
diff --git a/spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb index e08dc41d0cc..803eff05efe 100644 --- a/spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb +++ b/spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb @@ -8,42 +8,8 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:user3) { build(:user, id: 3) } let(:time) { Time.zone.now } - shared_examples 'tracks and counts action' do - before do - stub_application_setting(usage_ping_enabled: true) - end - - def count_unique(date_from:, date_to:) - Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(event_names: action, start_date: date_from, end_date: date_to) - end - - specify do - aggregate_failures do - expect(track_action(author: user1)).to be_truthy - expect(track_action(author: user1)).to be_truthy - expect(track_action(author: user2)).to be_truthy - expect(track_action(author: user3, time: time - 3.days)).to be_truthy - - expect(count_unique(date_from: time, date_to: time)).to eq(2) - expect(count_unique(date_from: time - 5.days, date_to: 1.day.since(time))).to eq(3) - end - end - - it 'does not track edit actions if author is not present' do - expect(track_action(author: nil)).to be_nil - end - - context 'when feature flag track_issue_activity_actions is disabled' do - it 'does not track edit actions' do - stub_feature_flags(track_issue_activity_actions: false) - - expect(track_action(author: user1)).to be_nil - end - end - end - context 'for Issue title edit actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_TITLE_CHANGED } def track_action(params) @@ -53,7 +19,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue description edit actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_DESCRIPTION_CHANGED } def track_action(params) @@ -63,7 +29,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue assignee edit actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_ASSIGNEE_CHANGED } def track_action(params) @@ -73,7 +39,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue make confidential actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_MADE_CONFIDENTIAL } def track_action(params) @@ -83,7 +49,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue make visible actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_MADE_VISIBLE } def track_action(params) @@ -93,7 +59,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue created actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_CREATED } def track_action(params) @@ -103,7 +69,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue closed actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_CLOSED } def track_action(params) @@ -113,7 +79,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue reopened actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_REOPENED } def track_action(params) @@ -123,7 +89,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue label changed actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_LABEL_CHANGED } def track_action(params) @@ -133,7 +99,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue cross-referenced actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_CROSS_REFERENCED } def track_action(params) @@ -143,7 +109,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue moved actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_MOVED } def track_action(params) @@ -153,7 +119,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue relate actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_RELATED } def track_action(params) @@ -163,7 +129,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue unrelate actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_UNRELATED } def track_action(params) @@ -173,7 +139,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue marked as duplicate actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_MARKED_AS_DUPLICATE } def track_action(params) @@ -183,7 +149,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue locked actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_LOCKED } def track_action(params) @@ -193,7 +159,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue unlocked actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_UNLOCKED } def track_action(params) @@ -202,38 +168,8 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end end - context 'for Issue added to epic actions' do - it_behaves_like 'tracks and counts action' do - let(:action) { described_class::ISSUE_ADDED_TO_EPIC} - - def track_action(params) - described_class.track_issue_added_to_epic_action(**params) - end - end - end - - context 'for Issue removed from epic actions' do - it_behaves_like 'tracks and counts action' do - let(:action) { described_class::ISSUE_REMOVED_FROM_EPIC} - - def track_action(params) - described_class.track_issue_removed_from_epic_action(**params) - end - end - end - - context 'for Issue changed epic actions' do - it_behaves_like 'tracks and counts action' do - let(:action) { described_class::ISSUE_CHANGED_EPIC} - - def track_action(params) - described_class.track_issue_changed_epic_action(**params) - end - end - end - context 'for Issue designs added actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_DESIGNS_ADDED } def track_action(params) @@ -243,7 +179,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue designs modified actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_DESIGNS_MODIFIED } def track_action(params) @@ -253,7 +189,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue designs removed actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_DESIGNS_REMOVED } def track_action(params) @@ -263,7 +199,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue due date changed actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_DUE_DATE_CHANGED } def track_action(params) @@ -273,7 +209,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue time estimate changed actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_TIME_ESTIMATE_CHANGED } def track_action(params) @@ -283,7 +219,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end context 'for Issue time spent changed actions' do - it_behaves_like 'tracks and counts action' do + it_behaves_like 'a tracked issue edit event' do let(:action) { described_class::ISSUE_TIME_SPENT_CHANGED } def track_action(params) @@ -292,6 +228,36 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git end end + context 'for Issue comment added actions' do + it_behaves_like 'a tracked issue edit event' do + let(:action) { described_class::ISSUE_COMMENT_ADDED } + + def track_action(params) + described_class.track_issue_comment_added_action(**params) + end + end + end + + context 'for Issue comment edited actions' do + it_behaves_like 'a tracked issue edit event' do + let(:action) { described_class::ISSUE_COMMENT_EDITED } + + def track_action(params) + described_class.track_issue_comment_edited_action(**params) + end + end + end + + context 'for Issue comment removed actions' do + it_behaves_like 'a tracked issue edit event' do + let(:action) { described_class::ISSUE_COMMENT_REMOVED } + + def track_action(params) + described_class.track_issue_comment_removed_action(**params) + end + end + end + it 'can return the count of actions per user deduplicated', :aggregate_failures do described_class.track_issue_title_changed_action(author: user1) described_class.track_issue_description_changed_action(author: user1) |