Fix bug where award emojis would be lost when moving issues between projects
Closes #33423
This commit is contained in:
parent
3576d59ae9
commit
95865da549
|
@ -24,7 +24,7 @@ module Issues
|
||||||
@new_issue = create_new_issue
|
@new_issue = create_new_issue
|
||||||
|
|
||||||
rewrite_notes
|
rewrite_notes
|
||||||
rewrite_award_emoji
|
rewrite_issue_award_emoji
|
||||||
add_note_moved_from
|
add_note_moved_from
|
||||||
|
|
||||||
# Old issue tasks
|
# Old issue tasks
|
||||||
|
@ -76,7 +76,7 @@ module Issues
|
||||||
end
|
end
|
||||||
|
|
||||||
def rewrite_notes
|
def rewrite_notes
|
||||||
@old_issue.notes.find_each do |note|
|
@old_issue.notes_with_associations.find_each do |note|
|
||||||
new_note = note.dup
|
new_note = note.dup
|
||||||
new_params = { project: @new_project, noteable: @new_issue,
|
new_params = { project: @new_project, noteable: @new_issue,
|
||||||
note: rewrite_content(new_note.note),
|
note: rewrite_content(new_note.note),
|
||||||
|
@ -84,13 +84,19 @@ module Issues
|
||||||
updated_at: note.updated_at }
|
updated_at: note.updated_at }
|
||||||
|
|
||||||
new_note.update(new_params)
|
new_note.update(new_params)
|
||||||
|
|
||||||
|
rewrite_award_emoji(note, new_note)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def rewrite_award_emoji
|
def rewrite_issue_award_emoji
|
||||||
@old_issue.award_emoji.each do |award|
|
rewrite_award_emoji(@old_issue, @new_issue)
|
||||||
|
end
|
||||||
|
|
||||||
|
def rewrite_award_emoji(old_awardable, new_awardable)
|
||||||
|
old_awardable.award_emoji.each do |award|
|
||||||
new_award = award.dup
|
new_award = award.dup
|
||||||
new_award.awardable = @new_issue
|
new_award.awardable = new_awardable
|
||||||
new_award.save
|
new_award.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Fix bug where award emojis would be lost when moving issues between projects
|
||||||
|
merge_request:
|
||||||
|
author:
|
||||||
|
type: fixed
|
|
@ -179,13 +179,15 @@ describe Issues::MoveService do
|
||||||
{ system: true, note: 'Some system note' },
|
{ system: true, note: 'Some system note' },
|
||||||
{ system: false, note: 'Some comment 2' }]
|
{ system: false, note: 'Some comment 2' }]
|
||||||
end
|
end
|
||||||
|
let(:award_names) { %w(thumbsup thumbsdown facepalm) }
|
||||||
let(:notes_contents) { notes_params.map { |n| n[:note] } }
|
let(:notes_contents) { notes_params.map { |n| n[:note] } }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
note_params = { noteable: old_issue, project: old_project, author: author }
|
note_params = { noteable: old_issue, project: old_project, author: author }
|
||||||
notes_params.each do |note|
|
notes_params.each_with_index do |note, index|
|
||||||
create(:note, note_params.merge(note))
|
new_note = create(:note, note_params.merge(note))
|
||||||
|
award_emoji_params = { awardable: new_note, name: award_names[index] }
|
||||||
|
create(:award_emoji, award_emoji_params)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -199,6 +201,10 @@ describe Issues::MoveService do
|
||||||
expect(all_notes.pluck(:note).first(3)).to eq notes_contents
|
expect(all_notes.pluck(:note).first(3)).to eq notes_contents
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'creates new emojis for the new notes' do
|
||||||
|
expect(all_notes.map(&:award_emoji).to_a.flatten.map(&:name)).to eq award_names
|
||||||
|
end
|
||||||
|
|
||||||
it 'adds a system note about move after rewritten notes' do
|
it 'adds a system note about move after rewritten notes' do
|
||||||
expect(system_notes.last.note).to match /^moved from/
|
expect(system_notes.last.note).to match /^moved from/
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue