Commit 95865da5 authored by Stan Hu's avatar Stan Hu

Fix bug where award emojis would be lost when moving issues between projects

Closes #33423
parent 3576d59a
...@@ -24,7 +24,7 @@ module Issues ...@@ -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 ...@@ -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 ...@@ -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
......
---
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 ...@@ -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 ...@@ -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
......
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