diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-11-24 09:38:45 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2017-11-24 09:38:45 +0000 |
commit | c4d844f08b99a5251f0d3cea7a493cb3480d5626 (patch) | |
tree | 8daa3c05bfa562c8e8dff93bc44c3ae38e943362 /spec | |
parent | 3dd5bedb54ce1bb150ab5304463c0a63d6e10ec9 (diff) | |
parent | 5c2c471a835f9588e39ec11fa79571c8b44979f8 (diff) | |
download | gitlab-ce-c4d844f08b99a5251f0d3cea7a493cb3480d5626.tar.gz |
Merge branch 'issue_40374' into 'master'
Fix WIP system note not being created
Closes #40374
See merge request gitlab-org/gitlab-ce!15528
Diffstat (limited to 'spec')
-rw-r--r-- | spec/services/issuable/common_system_notes_service_spec.rb | 43 | ||||
-rw-r--r-- | spec/services/system_note_service_spec.rb | 36 |
2 files changed, 61 insertions, 18 deletions
diff --git a/spec/services/issuable/common_system_notes_service_spec.rb b/spec/services/issuable/common_system_notes_service_spec.rb index 9f92b662be1..b8fa3e3d124 100644 --- a/spec/services/issuable/common_system_notes_service_spec.rb +++ b/spec/services/issuable/common_system_notes_service_spec.rb @@ -18,7 +18,18 @@ describe Issuable::CommonSystemNotesService do note = Note.last expect(note.note).to match(note_text) - expect(note.noteable_type).to eq('Issue') + expect(note.noteable_type).to eq(issuable.class.name) + end + end + + shared_examples 'WIP notes creation' do |wip_action| + subject { described_class.new(project, user).execute(issuable, []) } + + it 'creates WIP toggle and title change notes' do + expect { subject }.to change { Note.count }.from(0).to(2) + + expect(Note.first.note).to match("#{wip_action} as a **Work In Progress**") + expect(Note.second.note).to match('changed title') end end @@ -45,5 +56,35 @@ describe Issuable::CommonSystemNotesService do it_behaves_like 'system note creation', {}, 'changed milestone' end + + context 'with merge requests WIP note' do + context 'adding WIP note' do + let(:issuable) { create(:merge_request, title: "merge request") } + + it_behaves_like 'system note creation', { title: "WIP merge request" }, 'marked as a **Work In Progress**' + + context 'and changing title' do + before do + issuable.update_attribute(:title, "WIP changed title") + end + + it_behaves_like 'WIP notes creation', 'marked' + end + end + + context 'removing WIP note' do + let(:issuable) { create(:merge_request, title: "WIP merge request") } + + it_behaves_like 'system note creation', { title: "merge request" }, 'unmarked as a **Work In Progress**' + + context 'and changing title' do + before do + issuable.update_attribute(:title, "changed title") + end + + it_behaves_like 'WIP notes creation', 'unmarked' + end + end + end end end diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb index 0a6ab455abe..a918383ecd2 100644 --- a/spec/services/system_note_service_spec.rb +++ b/spec/services/system_note_service_spec.rb @@ -970,31 +970,33 @@ describe SystemNoteService do end end - describe '.remove_merge_request_wip' do - let(:noteable) { create(:issue, project: project, title: 'WIP: Lorem ipsum') } + describe '.handle_merge_request_wip' do + context 'adding wip note' do + let(:noteable) { create(:merge_request, source_project: project, title: 'WIP Lorem ipsum') } - subject { described_class.remove_merge_request_wip(noteable, project, author) } + subject { described_class.handle_merge_request_wip(noteable, project, author) } - it_behaves_like 'a system note' do - let(:action) { 'title' } - end + it_behaves_like 'a system note' do + let(:action) { 'title' } + end - it 'sets the note text' do - expect(subject.note).to eq 'unmarked as a **Work In Progress**' + it 'sets the note text' do + expect(subject.note).to eq 'marked as a **Work In Progress**' + end end - end - describe '.add_merge_request_wip' do - let(:noteable) { create(:issue, project: project, title: 'Lorem ipsum') } + context 'removing wip note' do + let(:noteable) { create(:merge_request, source_project: project, title: 'Lorem ipsum') } - subject { described_class.add_merge_request_wip(noteable, project, author) } + subject { described_class.handle_merge_request_wip(noteable, project, author) } - it_behaves_like 'a system note' do - let(:action) { 'title' } - end + it_behaves_like 'a system note' do + let(:action) { 'title' } + end - it 'sets the note text' do - expect(subject.note).to eq 'marked as a **Work In Progress**' + it 'sets the note text' do + expect(subject.note).to eq 'unmarked as a **Work In Progress**' + end end end |