Commit 4991842f9719930e91924303299ba6d0fb590204
Exists in
master
and in
1 other branch
Merge pull request #508 from shingara/features/merge_comment_too
Merge comment with problem during the merge of some problem
Showing
2 changed files
with
17 additions
and
1 deletions
Show diff stats
app/interactors/problem_merge.rb
@@ -11,7 +11,9 @@ class ProblemMerge | @@ -11,7 +11,9 @@ class ProblemMerge | ||
11 | 11 | ||
12 | def merge | 12 | def merge |
13 | child_problems.each do |problem| | 13 | child_problems.each do |problem| |
14 | - merged_problem.errs.concat Err.where(:problem_id => problem.id) | 14 | + merged_problem.errs.concat problem.errs |
15 | + merged_problem.comments.concat problem.comments | ||
16 | + problem.reload # deference all associate objet to avoid delete him after | ||
15 | ProblemDestroy.execute(problem) | 17 | ProblemDestroy.execute(problem) |
16 | end | 18 | end |
17 | reset_cached_attributes | 19 | reset_cached_attributes |
spec/interactors/problem_merge_spec.rb
@@ -29,6 +29,7 @@ describe ProblemMerge do | @@ -29,6 +29,7 @@ describe ProblemMerge do | ||
29 | let(:merged_errs) { problem_1.errs } | 29 | let(:merged_errs) { problem_1.errs } |
30 | let!(:notice) { Fabricate(:notice, :err => first_errs.first) } | 30 | let!(:notice) { Fabricate(:notice, :err => first_errs.first) } |
31 | let!(:notice_1) { Fabricate(:notice, :err => merged_errs.first) } | 31 | let!(:notice_1) { Fabricate(:notice, :err => merged_errs.first) } |
32 | + | ||
32 | it 'delete one of problem' do | 33 | it 'delete one of problem' do |
33 | expect { | 34 | expect { |
34 | problem_merge.merge | 35 | problem_merge.merge |
@@ -44,5 +45,18 @@ describe ProblemMerge do | @@ -44,5 +45,18 @@ describe ProblemMerge do | ||
44 | ProblemUpdaterCache.should_receive(:new).with(problem).and_return(mock(:update => true)) | 45 | ProblemUpdaterCache.should_receive(:new).with(problem).and_return(mock(:update => true)) |
45 | problem_merge.merge | 46 | problem_merge.merge |
46 | end | 47 | end |
48 | + | ||
49 | + context "with problem with comment" do | ||
50 | + let!(:comment) { Fabricate(:comment, :err => problem ) } | ||
51 | + let!(:comment_2) { Fabricate(:comment, :err => problem_1, :user => comment.user ) } | ||
52 | + it 'merge comment' do | ||
53 | + expect { | ||
54 | + problem_merge.merge | ||
55 | + }.to change{ | ||
56 | + problem.comments.size | ||
57 | + }.from(1).to(2) | ||
58 | + expect(comment_2.reload.err).to eq problem | ||
59 | + end | ||
60 | + end | ||
47 | end | 61 | end |
48 | end | 62 | end |