From 507edf53c908348eb77eafb2b924b48ae42f7952 Mon Sep 17 00:00:00 2001 From: Nick Recobra Date: Mon, 26 Sep 2011 15:55:43 +0400 Subject: [PATCH] Run unmerge smoothly on problem which migration form err was incorrect. --- app/models/problem.rb | 4 +++- spec/models/problem_spec.rb | 11 ++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/models/problem.rb b/app/models/problem.rb index 1ad61b1..83e1750 100644 --- a/app/models/problem.rb +++ b/app/models/problem.rb @@ -76,7 +76,9 @@ class Problem end def unmerge! - [self] + errs[1..-1].map(&:id).map do |err_id| + problem_errs = errs.to_a + problem_errs.shift + [self] + problem_errs.map(&:id).map do |err_id| err = Err.find(err_id) app.problems.create.tap do |new_problem| err.update_attribute(:problem_id, new_problem.id) diff --git a/spec/models/problem_spec.rb b/spec/models/problem_spec.rb index c4dc89f..76f2014 100644 --- a/spec/models/problem_spec.rb +++ b/spec/models/problem_spec.rb @@ -98,11 +98,12 @@ describe Problem do merged_problem = Problem.merge!(problem1, problem2) merged_problem.errs.length.should == 2 - lambda { - problems = merged_problem.unmerge! - problems.length.should == 2 - merged_problem.errs(true).length.should == 1 - }.should change(Problem, :count).by(1) + expect { merged_problem.unmerge! }.to change(Problem, :count).by(1) + merged_problem.errs(true).length.should == 1 + end + + it "runs smoothly for problem without errs" do + expect { Factory(:problem).unmerge! }.not_to raise_error end end -- libgit2 0.21.2