diff options
Diffstat (limited to 'spec/services')
-rw-r--r-- | spec/services/groups/create_service_spec.rb | 8 | ||||
-rw-r--r-- | spec/services/members/create_service_spec.rb | 20 | ||||
-rw-r--r-- | spec/services/merge_requests/after_create_service_spec.rb | 14 | ||||
-rw-r--r-- | spec/services/onboarding_progress_service_spec.rb | 28 | ||||
-rw-r--r-- | spec/services/post_receive_service_spec.rb | 11 |
5 files changed, 54 insertions, 27 deletions
diff --git a/spec/services/groups/create_service_spec.rb b/spec/services/groups/create_service_spec.rb index 4f5bc3a3d5a..f0cd42c1948 100644 --- a/spec/services/groups/create_service_spec.rb +++ b/spec/services/groups/create_service_spec.rb @@ -63,6 +63,10 @@ RSpec.describe Groups::CreateService, '#execute' do end it { is_expected.to be_persisted } + + it 'adds an onboarding progress record' do + expect { subject }.to change(OnboardingProgress, :count).from(0).to(1) + end end context 'when user can not create a group' do @@ -84,6 +88,10 @@ RSpec.describe Groups::CreateService, '#execute' do end it { is_expected.to be_persisted } + + it 'does not add an onboarding progress record' do + expect { subject }.not_to change(OnboardingProgress, :count).from(0) + end end context 'as guest' do diff --git a/spec/services/members/create_service_spec.rb b/spec/services/members/create_service_spec.rb index 7fd6b3e5b8d..50efee9f43c 100644 --- a/spec/services/members/create_service_spec.rb +++ b/spec/services/members/create_service_spec.rb @@ -13,14 +13,20 @@ RSpec.describe Members::CreateService, :clean_gitlab_redis_shared_state, :sideki subject(:execute_service) { described_class.new(user, params).execute(source) } before do - source.is_a?(Project) ? source.add_maintainer(user) : source.add_owner(user) + if source.is_a?(Project) + source.add_maintainer(user) + OnboardingProgress.onboard(source.namespace) + else + source.add_owner(user) + OnboardingProgress.onboard(source) + end end context 'when passing valid parameters' do it 'adds a user to members' do expect(execute_service[:status]).to eq(:success) expect(source.users).to include member - expect(NamespaceOnboardingAction.completed?(source.namespace, :user_added)).to be(true) + expect(OnboardingProgress.completed?(source.namespace, :user_added)).to be(true) end context 'when executing on a group' do @@ -29,7 +35,7 @@ RSpec.describe Members::CreateService, :clean_gitlab_redis_shared_state, :sideki it 'adds a user to members' do expect(execute_service[:status]).to eq(:success) expect(source.users).to include member - expect(NamespaceOnboardingAction.completed?(source, :user_added)).to be(true) + expect(OnboardingProgress.completed?(source, :user_added)).to be(true) end end end @@ -41,7 +47,7 @@ RSpec.describe Members::CreateService, :clean_gitlab_redis_shared_state, :sideki expect(execute_service[:status]).to eq(:error) expect(execute_service[:message]).to be_present expect(source.users).not_to include member - expect(NamespaceOnboardingAction.completed?(source.namespace, :user_added)).to be(false) + expect(OnboardingProgress.completed?(source.namespace, :user_added)).to be(false) end end @@ -52,7 +58,7 @@ RSpec.describe Members::CreateService, :clean_gitlab_redis_shared_state, :sideki expect(execute_service[:status]).to eq(:error) expect(execute_service[:message]).to be_present expect(source.users).not_to include member - expect(NamespaceOnboardingAction.completed?(source.namespace, :user_added)).to be(false) + expect(OnboardingProgress.completed?(source.namespace, :user_added)).to be(false) end end @@ -63,7 +69,7 @@ RSpec.describe Members::CreateService, :clean_gitlab_redis_shared_state, :sideki expect(execute_service[:status]).to eq(:error) expect(execute_service[:message]).to include("#{member.username}: Access level is not included in the list") expect(source.users).not_to include member - expect(NamespaceOnboardingAction.completed?(source.namespace, :user_added)).to be(false) + expect(OnboardingProgress.completed?(source.namespace, :user_added)).to be(false) end end @@ -73,7 +79,7 @@ RSpec.describe Members::CreateService, :clean_gitlab_redis_shared_state, :sideki it 'does not add a member' do expect(execute_service[:status]).to eq(:error) expect(execute_service[:message]).to eq('Invite email has already been taken') - expect(NamespaceOnboardingAction.completed?(source.namespace, :user_added)).to be(false) + expect(OnboardingProgress.completed?(source.namespace, :user_added)).to be(false) 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 bdc064a6269..9ae310d8cee 100644 --- a/spec/services/merge_requests/after_create_service_spec.rb +++ b/spec/services/merge_requests/after_create_service_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe MergeRequests::AfterCreateService do + include AfterNextHelpers + let_it_be(:merge_request) { create(:merge_request) } subject(:after_create_service) do @@ -64,11 +66,15 @@ RSpec.describe MergeRequests::AfterCreateService do 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 + it 'registers an onboarding progress action' do + OnboardingProgress.onboard(merge_request.target_project.namespace) + + expect_next(OnboardingProgressService, merge_request.target_project.namespace) + .to receive(:execute).with(action: :merge_request_created).and_call_original + + execute_service - expect { execute_service }.to change(NamespaceOnboardingAction, :count).by(1) + expect(OnboardingProgress.completed?(merge_request.target_project.namespace, :merge_request_created)).to be(true) end end end diff --git a/spec/services/onboarding_progress_service_spec.rb b/spec/services/onboarding_progress_service_spec.rb index de4c0d2a3ba..340face4ae8 100644 --- a/spec/services/onboarding_progress_service_spec.rb +++ b/spec/services/onboarding_progress_service_spec.rb @@ -11,32 +11,38 @@ RSpec.describe OnboardingProgressService do subject(:execute_service) { described_class.new(namespace).execute(action: :subscription_created) } context 'when the namespace is a root' do - it 'records a namespace onboarding progress action fot the given namespace' do - expect(NamespaceOnboardingAction).to receive(:create_action) - .with(namespace, :subscription_created).and_call_original + before do + OnboardingProgress.onboard(namespace) + end + + it 'registers a namespace onboarding progress action for the given namespace' do + execute_service - expect { execute_service }.to change(NamespaceOnboardingAction, :count).by(1) + expect(OnboardingProgress.completed?(namespace, :subscription_created)).to eq(true) end end context 'when the namespace is not the root' do let(:root_namespace) { build(:namespace) } - it 'records a namespace onboarding progress action for the root namespace' do - expect(NamespaceOnboardingAction).to receive(:create_action) - .with(root_namespace, :subscription_created).and_call_original + before do + OnboardingProgress.onboard(root_namespace) + end + + it 'registers a namespace onboarding progress action for the root namespace' do + execute_service - expect { execute_service }.to change(NamespaceOnboardingAction, :count).by(1) + expect(OnboardingProgress.completed?(root_namespace, :subscription_created)).to eq(true) end end context 'when no namespace is passed' do let(:namespace) { nil } - it 'does not record a namespace onboarding progress action' do - expect(NamespaceOnboardingAction).not_to receive(:create_action) - + it 'does not register a namespace onboarding progress action' do execute_service + + expect(OnboardingProgress.completed?(root_namespace, :subscription_created)).to be(nil) end end end diff --git a/spec/services/post_receive_service_spec.rb b/spec/services/post_receive_service_spec.rb index 4e303bfc20a..6e2cd7edf04 100644 --- a/spec/services/post_receive_service_spec.rb +++ b/spec/services/post_receive_service_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe PostReceiveService do include Gitlab::Routing + include AfterNextHelpers let_it_be(:user) { create(:user) } let_it_be(:project) { create(:project, :repository, :wiki_repo, namespace: user.namespace) } @@ -46,8 +47,8 @@ RSpec.describe PostReceiveService do expect(subject).to be_empty end - it 'does not record a namespace onboarding progress action' do - expect(NamespaceOnboardingAction).not_to receive(:create_action) + it 'does not record an onboarding progress action' do + expect_next(OnboardingProgressService).not_to receive(:execute) subject end @@ -87,9 +88,9 @@ RSpec.describe PostReceiveService do expect(response.reference_counter_decreased).to be(true) end - it 'records a namespace onboarding progress action' do - expect(NamespaceOnboardingAction).to receive(:create_action) - .with(project.namespace, :git_write) + it 'records an onboarding progress action' do + expect_next(OnboardingProgressService, project.namespace) + .to receive(:execute).with(action: :git_write) subject end |