diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-14 03:09:07 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-14 03:09:07 +0300 |
commit | e144369009f3404072f7e0f969f7cded93195a01 (patch) | |
tree | d7a354e2c3c69a7ad65dc81aba8fe2ba59b0a26f /spec/services/merge_requests/create_service_spec.rb | |
parent | d466ee5042520ad078fe050cb078d81dc2ebe196 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/merge_requests/create_service_spec.rb')
-rw-r--r-- | spec/services/merge_requests/create_service_spec.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/spec/services/merge_requests/create_service_spec.rb b/spec/services/merge_requests/create_service_spec.rb index 8490127058c..aebead481ce 100644 --- a/spec/services/merge_requests/create_service_spec.rb +++ b/spec/services/merge_requests/create_service_spec.rb @@ -291,6 +291,46 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do expect { service.execute }.to change { counter.read(:create) }.by(1) end + + context 'after_save callback to store_mentions' do + let(:labels) { create_pair(:label, project: project) } + let(:milestone) { create(:milestone, project: project) } + let(:req_opts) { { source_branch: 'feature', target_branch: 'master' } } + + context 'when mentionable attributes change' do + let(:opts) { { title: 'Title', description: "Description with #{user.to_reference}" }.merge(req_opts) } + + it 'saves mentions' do + expect_next_instance_of(MergeRequest) do |instance| + expect(instance).to receive(:store_mentions!).and_call_original + end + expect(merge_request.user_mentions.count).to eq 1 + end + end + + context 'when mentionable attributes do not change' do + let(:opts) { { label_ids: labels.map(&:id), milestone_id: milestone.id }.merge(req_opts) } + + it 'does not call store_mentions' do + expect_next_instance_of(MergeRequest) do |instance| + expect(instance).not_to receive(:store_mentions!).and_call_original + end + expect(merge_request.valid?).to be false + expect(merge_request.user_mentions.count).to eq 0 + end + end + + context 'when save fails' do + let(:opts) { { label_ids: labels.map(&:id), milestone_id: milestone.id } } + + it 'does not call store_mentions' do + expect_next_instance_of(MergeRequest) do |instance| + expect(instance).not_to receive(:store_mentions!).and_call_original + end + expect(merge_request.valid?).to be false + end + end + end end it_behaves_like 'new issuable record that supports quick actions' do |