From fab695461afbc4d03fbbf8cfbf9c5d90760ce752 Mon Sep 17 00:00:00 2001
From: "Z.J. van de Weg" <zegerjan@gitlab.com>
Date: Wed, 1 Jun 2016 18:33:49 +0200
Subject: [PATCH] Move awardables too when issue is moved

---
 app/services/issues/move_service.rb       | 9 +++++++++
 spec/services/issues/move_service_spec.rb | 5 +++++
 2 files changed, 14 insertions(+)

diff --git a/app/services/issues/move_service.rb b/app/services/issues/move_service.rb
index e61628086f0..138730ca355 100644
--- a/app/services/issues/move_service.rb
+++ b/app/services/issues/move_service.rb
@@ -24,6 +24,7 @@ module Issues
         @new_issue = create_new_issue
 
         rewrite_notes
+        rewrite_award_emoji
         add_note_moved_from
 
         # Old issue tasks
@@ -72,6 +73,14 @@ module Issues
       end
     end
 
+    def rewrite_award_emoji
+       @old_issue.award_emoji.each do |award|
+         new_award = award.dup
+         new_award.awardable = @new_issue
+         new_award.save
+       end
+     end
+
     def rewrite_content(content)
       return unless content
 
diff --git a/spec/services/issues/move_service_spec.rb b/spec/services/issues/move_service_spec.rb
index 95fe6c2400a..93bf0f64963 100644
--- a/spec/services/issues/move_service_spec.rb
+++ b/spec/services/issues/move_service_spec.rb
@@ -39,6 +39,7 @@ describe Issues::MoveService, services: true do
       let!(:milestone2) do
         create(:milestone, project_id: new_project.id, title: 'v9.0')
       end
+      let!(:award_emoji) { create(:award_emoji, awardable: old_issue) }
 
       let!(:new_issue) { move_service.execute(old_issue, new_project) }
     end
@@ -115,6 +116,10 @@ describe Issues::MoveService, services: true do
         it 'preserves create time' do
           expect(old_issue.created_at).to eq new_issue.created_at
         end
+
+        it 'moves the award emoji' do
+          expect(old_issue.award_emoji.first.name).to eq new_issue.reload.award_emoji.first.name
+        end
       end
 
       context 'issue with notes' do
-- 
GitLab