From f982c5b90d5258196774bccfa6a4c587f2a878c5 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Barth Date: Sun, 26 Jun 2011 12:47:15 +0000 Subject: Fixed circular dependencies possibly introduced when using reverse relations, for instance "blocked by" relations (#8616). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6124 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- test/unit/issue_relation_test.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'test/unit/issue_relation_test.rb') diff --git a/test/unit/issue_relation_test.rb b/test/unit/issue_relation_test.rb index f0b8fd666..7f1581a26 100644 --- a/test/unit/issue_relation_test.rb +++ b/test/unit/issue_relation_test.rb @@ -44,6 +44,9 @@ class IssueRelationTest < ActiveSupport::TestCase assert_equal from, relation.issue_to end + # TODO : document why it shouldn't be reversed if validation fails : having + # relations reversed before the validation would allow simpler code for the + # validation def test_follows_relation_should_not_be_reversed_if_validation_fails from = Issue.find(1) to = Issue.find(2) @@ -82,4 +85,13 @@ class IssueRelationTest < ActiveSupport::TestCase assert !r.save assert_not_nil r.errors.on(:base) end + + def test_validates_circular_dependency_on_reverse_relations + IssueRelation.delete_all + assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(3), :relation_type => IssueRelation::TYPE_BLOCKS) + assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_BLOCKED) + r = IssueRelation.new(:issue_from => Issue.find(2), :issue_to => Issue.find(1), :relation_type => IssueRelation::TYPE_BLOCKED) + assert !r.save + assert_not_nil r.errors.on(:base) + end end -- cgit v1.2.3