diff options
Diffstat (limited to 'spec/services/event_create_service_spec.rb')
-rw-r--r-- | spec/services/event_create_service_spec.rb | 106 |
1 files changed, 61 insertions, 45 deletions
diff --git a/spec/services/event_create_service_spec.rb b/spec/services/event_create_service_spec.rb index 73c089334ed..d10ed7d6640 100644 --- a/spec/services/event_create_service_spec.rb +++ b/spec/services/event_create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EventCreateService do +RSpec.describe EventCreateService do let(:service) { described_class.new } let_it_be(:user, reload: true) { create :user } @@ -16,7 +16,6 @@ describe EventCreateService do it "creates new event" do expect { service.open_issue(issue, issue.author) }.to change { Event.count } - expect { service.open_issue(issue, issue.author) }.to change { ResourceStateEvent.count } end end @@ -27,7 +26,6 @@ describe EventCreateService do it "creates new event" do expect { service.close_issue(issue, issue.author) }.to change { Event.count } - expect { service.close_issue(issue, issue.author) }.to change { ResourceStateEvent.count } end end @@ -38,7 +36,6 @@ describe EventCreateService do it "creates new event" do expect { service.reopen_issue(issue, issue.author) }.to change { Event.count } - expect { service.reopen_issue(issue, issue.author) }.to change { ResourceStateEvent.count } end end end @@ -51,7 +48,6 @@ describe EventCreateService do it "creates new event" do expect { service.open_mr(merge_request, merge_request.author) }.to change { Event.count } - expect { service.open_mr(merge_request, merge_request.author) }.to change { ResourceStateEvent.count } end end @@ -62,7 +58,6 @@ describe EventCreateService do it "creates new event" do expect { service.close_mr(merge_request, merge_request.author) }.to change { Event.count } - expect { service.close_mr(merge_request, merge_request.author) }.to change { ResourceStateEvent.count } end end @@ -73,7 +68,6 @@ describe EventCreateService do it "creates new event" do expect { service.merge_mr(merge_request, merge_request.author) }.to change { Event.count } - expect { service.merge_mr(merge_request, merge_request.author) }.to change { ResourceStateEvent.count } end end @@ -84,7 +78,18 @@ describe EventCreateService do it "creates new event" do expect { service.reopen_mr(merge_request, merge_request.author) }.to change { Event.count } - expect { service.reopen_mr(merge_request, merge_request.author) }.to change { ResourceStateEvent.count } + end + end + + describe '#approve_mr' do + let(:merge_request) { create(:merge_request) } + + it { expect(service.approve_mr(merge_request, user)).to be_truthy } + + it 'creates new event' do + service.approve_mr(merge_request, user) + + change { Event.approved_action.where(target: merge_request).count }.by(1) end end end @@ -161,7 +166,7 @@ describe EventCreateService do end end - describe '#wiki_event' do + describe '#wiki_event', :clean_gitlab_redis_shared_state do let_it_be(:user) { create(:user) } let_it_be(:wiki_page) { create(:wiki_page) } let_it_be(:meta) { create(:wiki_page_meta, :for_wiki_page, wiki_page: wiki_page) } @@ -181,6 +186,16 @@ describe EventCreateService do ) end + it 'records the event in the event counter' do + stub_feature_flags(Gitlab::UsageDataCounters::TrackUniqueActions::FEATURE_FLAG => true) + counter_class = Gitlab::UsageDataCounters::TrackUniqueActions + tracking_params = { event_action: counter_class::WIKI_ACTION, date_from: Date.yesterday, date_to: Date.today } + + expect { event } + .to change { counter_class.count_unique_events(tracking_params) } + .from(0).to(1) + end + it 'is idempotent', :aggregate_failures do expect { event }.to change(Event, :count).by(1) duplicate = nil @@ -188,16 +203,6 @@ describe EventCreateService do expect(duplicate).to eq(event) end - - context 'the feature is disabled' do - before do - stub_feature_flags(wiki_events: false) - end - - it 'does not create the event' do - expect { event }.not_to change(Event, :count) - end - end end end @@ -229,6 +234,16 @@ describe EventCreateService do subject { service.push(project, user, push_data) } it_behaves_like 'service for creating a push event', PushEventPayloadService + + it 'records the event in the event counter' do + stub_feature_flags(Gitlab::UsageDataCounters::TrackUniqueActions::FEATURE_FLAG => true) + counter_class = Gitlab::UsageDataCounters::TrackUniqueActions + tracking_params = { event_action: counter_class::PUSH_ACTION, date_from: Date.yesterday, date_to: Date.today } + + expect { subject } + .to change { counter_class.count_unique_events(tracking_params) } + .from(0).to(1) + end end describe '#bulk_push', :clean_gitlab_redis_shared_state do @@ -243,6 +258,16 @@ describe EventCreateService do subject { service.bulk_push(project, user, push_data) } it_behaves_like 'service for creating a push event', BulkPushEventPayloadService + + it 'records the event in the event counter' do + stub_feature_flags(Gitlab::UsageDataCounters::TrackUniqueActions::FEATURE_FLAG => true) + counter_class = Gitlab::UsageDataCounters::TrackUniqueActions + tracking_params = { event_action: counter_class::PUSH_ACTION, date_from: Date.yesterday, date_to: Date.today } + + expect { subject } + .to change { counter_class.count_unique_events(tracking_params) } + .from(0).to(1) + end end describe 'Project' do @@ -261,31 +286,10 @@ describe EventCreateService do end end - describe 'design events' do + describe 'design events', :clean_gitlab_redis_shared_state do let_it_be(:design) { create(:design, project: project) } let_it_be(:author) { user } - shared_examples 'feature flag gated multiple event creation' do - context 'the feature flag is off' do - before do - stub_feature_flags(design_activity_events: false) - end - - specify { expect(result).to be_empty } - specify { expect { result }.not_to change { Event.count } } - specify { expect { result }.not_to exceed_query_limit(0) } - end - - context 'the feature flag is enabled for a single project' do - before do - stub_feature_flags(design_activity_events: project) - end - - specify { expect(result).not_to be_empty } - specify { expect { result }.to change { Event.count }.by(1) } - end - end - describe '#save_designs' do let_it_be(:updated) { create_list(:design, 5) } let_it_be(:created) { create_list(:design, 3) } @@ -310,8 +314,14 @@ describe EventCreateService do expect(events.map(&:design)).to match_array(updated) end - it_behaves_like 'feature flag gated multiple event creation' do - let(:project) { created.first.project } + it 'records the event in the event counter' do + stub_feature_flags(Gitlab::UsageDataCounters::TrackUniqueActions::FEATURE_FLAG => true) + counter_class = Gitlab::UsageDataCounters::TrackUniqueActions + tracking_params = { event_action: counter_class::DESIGN_ACTION, date_from: Date.yesterday, date_to: Date.today } + + expect { result } + .to change { counter_class.count_unique_events(tracking_params) } + .from(0).to(1) end end @@ -332,8 +342,14 @@ describe EventCreateService do expect(events.map(&:design)).to match_array(designs) end - it_behaves_like 'feature flag gated multiple event creation' do - let(:project) { designs.first.project } + it 'records the event in the event counter' do + stub_feature_flags(Gitlab::UsageDataCounters::TrackUniqueActions::FEATURE_FLAG => true) + counter_class = Gitlab::UsageDataCounters::TrackUniqueActions + tracking_params = { event_action: counter_class::DESIGN_ACTION, date_from: Date.yesterday, date_to: Date.today } + + expect { result } + .to change { counter_class.count_unique_events(tracking_params) } + .from(0).to(1) end end end |