From 2306689575bbf87264f36063736af98fc37bdbf7 Mon Sep 17 00:00:00 2001 From: Alex Buijs Date: Thu, 3 Dec 2020 21:48:00 +0100 Subject: [PATCH] Add create merge request namespace onboarding action For tracking namespace onboarding progress --- app/models/namespace_onboarding_action.rb | 1 + .../merge_requests/after_create_service.rb | 2 ++ .../after_create_service_spec.rb | 19 ++++++++++++++----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/models/namespace_onboarding_action.rb b/app/models/namespace_onboarding_action.rb index e1121279e2e005..bf4df7de13ffa9 100644 --- a/app/models/namespace_onboarding_action.rb +++ b/app/models/namespace_onboarding_action.rb @@ -8,6 +8,7 @@ class NamespaceOnboardingAction < ApplicationRecord ACTIONS = { subscription_created: 1, git_write: 2, + merge_request_created: 3, git_read: 4 }.freeze diff --git a/app/services/merge_requests/after_create_service.rb b/app/services/merge_requests/after_create_service.rb index f0c85ae03c94f6..fbb9d5fa9dccea 100644 --- a/app/services/merge_requests/after_create_service.rb +++ b/app/services/merge_requests/after_create_service.rb @@ -11,6 +11,8 @@ def execute(merge_request) merge_request.diffs(include_stats: false).write_cache merge_request.create_cross_references!(current_user) + + NamespaceOnboardingAction.create_action(merge_request.target_project.namespace, :merge_request_created) end end end diff --git a/spec/services/merge_requests/after_create_service_spec.rb b/spec/services/merge_requests/after_create_service_spec.rb index 840b7bc0a1cfd7..69bab3b1ea42aa 100644 --- a/spec/services/merge_requests/after_create_service_spec.rb +++ b/spec/services/merge_requests/after_create_service_spec.rb @@ -18,32 +18,34 @@ allow(after_create_service).to receive(:notification_service).and_return(notification_service) end + subject(:execute_service) { after_create_service.execute(merge_request) } + it 'creates a merge request open event' do expect(event_service) .to receive(:open_mr).with(merge_request, merge_request.author) - after_create_service.execute(merge_request) + execute_service end it 'creates a new merge request notification' do expect(notification_service) .to receive(:new_merge_request).with(merge_request, merge_request.author) - after_create_service.execute(merge_request) + execute_service end it 'writes diffs to the cache' do expect(merge_request) .to receive_message_chain(:diffs, :write_cache) - after_create_service.execute(merge_request) + execute_service end it 'creates cross references' do expect(merge_request) .to receive(:create_cross_references!).with(merge_request.author) - after_create_service.execute(merge_request) + execute_service end it 'creates a pipeline and updates the HEAD pipeline' do @@ -51,7 +53,14 @@ .to receive(:create_pipeline_for).with(merge_request, merge_request.author) expect(merge_request).to receive(:update_head_pipeline) - after_create_service.execute(merge_request) + execute_service + end + + it 'records a namespace onboarding progress action' do + expect(NamespaceOnboardingAction).to receive(:create_action) + .with(merge_request.target_project.namespace, :merge_request_created).and_call_original + + expect { execute_service }.to change(NamespaceOnboardingAction, :count).by(1) end end end -- GitLab