diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-06-12 21:43:20 +0300 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2017-06-12 21:43:20 +0300 |
commit | 8d7951d879d13894dcc1fd5d845c8d844bee321a (patch) | |
tree | ee1a7cc0f89edb8f79190ee66832c6fba2159d7f | |
parent | e889b4e8c2f9e31ceac6e456793de357d96067f7 (diff) | |
parent | 7360703aabe448af7fec36cb806a5f3680afefd1 (diff) |
Merge branch '32834-task-note-only' into 'master'
Prevent Description Change Notes When Toggling Tasks
Closes #32834
See merge request !12057
-rw-r--r-- | app/services/issuable_base_service.rb | 12 | ||||
-rw-r--r-- | changelogs/unreleased/32834-task-note-only.yml | 4 | ||||
-rw-r--r-- | spec/services/issues/update_service_spec.rb | 27 | ||||
-rw-r--r-- | spec/services/merge_requests/update_service_spec.rb | 13 | ||||
-rw-r--r-- | spec/services/system_note_service_spec.rb | 2 |
5 files changed, 47 insertions, 11 deletions
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb index e77a3e3eac1..a65d6e11c47 100644 --- a/app/services/issuable_base_service.rb +++ b/app/services/issuable_base_service.rb @@ -313,11 +313,13 @@ class IssuableBaseService < BaseService end if issuable.previous_changes.include?('description') - create_description_change_note(issuable) - end - - if issuable.previous_changes.include?('description') && issuable.tasks? - create_task_status_note(issuable) + if issuable.tasks? && issuable.updated_tasks.any? + create_task_status_note(issuable) + else + # TODO: Show this note if non-task content was modified. + # https://gitlab.com/gitlab-org/gitlab-ce/issues/33577 + create_description_change_note(issuable) + end end if issuable.previous_changes.include?('time_estimate') diff --git a/changelogs/unreleased/32834-task-note-only.yml b/changelogs/unreleased/32834-task-note-only.yml new file mode 100644 index 00000000000..c9ea61ec4ec --- /dev/null +++ b/changelogs/unreleased/32834-task-note-only.yml @@ -0,0 +1,4 @@ +--- +title: Prevent description change notes when toggling tasks +merge_request: 12057 +author: Jared Deckard <jared.deckard@gmail.com> diff --git a/spec/services/issues/update_service_spec.rb b/spec/services/issues/update_service_spec.rb index 5184c1d5f19..a78866a2c32 100644 --- a/spec/services/issues/update_service_spec.rb +++ b/spec/services/issues/update_service_spec.rb @@ -31,6 +31,13 @@ describe Issues::UpdateService, services: true do end end + def find_notes(action) + issue + .notes + .joins(:system_note_metadata) + .where(system_note_metadata: { action: action }) + end + def update_issue(opts) described_class.new(project, user, opts).execute(issue) end @@ -330,6 +337,9 @@ describe Issues::UpdateService, services: true do expect(note1).not_to be_nil expect(note2).not_to be_nil + + description_notes = find_notes('description') + expect(description_notes.length).to eq(1) end end @@ -345,6 +355,9 @@ describe Issues::UpdateService, services: true do expect(note1).not_to be_nil expect(note2).not_to be_nil + + description_notes = find_notes('description') + expect(description_notes.length).to eq(1) end end @@ -354,10 +367,12 @@ describe Issues::UpdateService, services: true do update_issue(description: "- [x] Task 1\n- [ ] Task 3\n- [ ] Task 2") end - it 'does not create a system note' do - note = find_note('marked the task **Task 2** as incomplete') + it 'does not create a system note for the task' do + task_note = find_note('marked the task **Task 2** as incomplete') + description_notes = find_notes('description') - expect(note).to be_nil + expect(task_note).to be_nil + expect(description_notes.length).to eq(2) end end @@ -368,9 +383,11 @@ describe Issues::UpdateService, services: true do end it 'does not create a system note referencing the position the old item' do - note = find_note('marked the task **Two** as incomplete') + task_note = find_note('marked the task **Two** as incomplete') + description_notes = find_notes('description') - expect(note).to be_nil + expect(task_note).to be_nil + expect(description_notes.length).to eq(2) end it 'does not generate a new note at all' do diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb index d371fc68312..091c193aaa6 100644 --- a/spec/services/merge_requests/update_service_spec.rb +++ b/spec/services/merge_requests/update_service_spec.rb @@ -30,6 +30,13 @@ describe MergeRequests::UpdateService, services: true do end end + def find_notes(action) + @merge_request + .notes + .joins(:system_note_metadata) + .where(system_note_metadata: { action: action }) + end + def update_merge_request(opts) @merge_request = MergeRequests::UpdateService.new(project, user, opts).execute(merge_request) @merge_request.reload @@ -394,6 +401,9 @@ describe MergeRequests::UpdateService, services: true do expect(note1).not_to be_nil expect(note2).not_to be_nil + + description_notes = find_notes('description') + expect(description_notes.length).to eq(1) end end @@ -409,6 +419,9 @@ describe MergeRequests::UpdateService, services: true do expect(note1).not_to be_nil expect(note2).not_to be_nil + + description_notes = find_notes('description') + expect(description_notes.length).to eq(1) end end end diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb index c499b1bb343..9295c09aefc 100644 --- a/spec/services/system_note_service_spec.rb +++ b/spec/services/system_note_service_spec.rb @@ -1052,7 +1052,7 @@ describe SystemNoteService, services: true do let(:action) { 'task' } end - it "posts the 'marked as a Work In Progress from commit' system note" do + it "posts the 'marked the task as complete' system note" do expect(subject.note).to eq("marked the task **task** as completed") end end |