Commit 8d7951d8 authored by Sean McGivern's avatar Sean McGivern

Merge branch '32834-task-note-only' into 'master'

Prevent Description Change Notes When Toggling Tasks

Closes #32834

See merge request !12057
parents e889b4e8 7360703a
......@@ -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')
......
---
title: Prevent description change notes when toggling tasks
merge_request: 12057
author: Jared Deckard <jared.deckard@gmail.com>
......@@ -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
......
......@@ -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
......
......@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment