From ee84980b5781f86d06db5f0c836658c56faccb99 Mon Sep 17 00:00:00 2001 From: Cyril Mougel Date: Tue, 18 Jun 2013 15:44:40 +0200 Subject: [PATCH] Merge comment with problem during the merge of some problem --- app/interactors/problem_merge.rb | 4 +++- spec/interactors/problem_merge_spec.rb | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/interactors/problem_merge.rb b/app/interactors/problem_merge.rb index 4c7492a..7610fb2 100644 --- a/app/interactors/problem_merge.rb +++ b/app/interactors/problem_merge.rb @@ -11,7 +11,9 @@ class ProblemMerge def merge child_problems.each do |problem| - merged_problem.errs.concat Err.where(:problem_id => problem.id) + merged_problem.errs.concat problem.errs + merged_problem.comments.concat problem.comments + problem.reload # deference all associate objet to avoid delete him after ProblemDestroy.execute(problem) end reset_cached_attributes diff --git a/spec/interactors/problem_merge_spec.rb b/spec/interactors/problem_merge_spec.rb index b9afefb..6d5673d 100644 --- a/spec/interactors/problem_merge_spec.rb +++ b/spec/interactors/problem_merge_spec.rb @@ -29,6 +29,7 @@ describe ProblemMerge do let(:merged_errs) { problem_1.errs } let!(:notice) { Fabricate(:notice, :err => first_errs.first) } let!(:notice_1) { Fabricate(:notice, :err => merged_errs.first) } + it 'delete one of problem' do expect { problem_merge.merge @@ -44,5 +45,18 @@ describe ProblemMerge do ProblemUpdaterCache.should_receive(:new).with(problem).and_return(mock(:update => true)) problem_merge.merge end + + context "with problem with comment" do + let!(:comment) { Fabricate(:comment, :err => problem ) } + let!(:comment_2) { Fabricate(:comment, :err => problem_1, :user => comment.user ) } + it 'merge comment' do + expect { + problem_merge.merge + }.to change{ + problem.comments.size + }.from(1).to(2) + expect(comment_2.reload.err).to eq problem + end + end end end -- libgit2 0.21.2