annotate test/unit/issue_relation_test.rb @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents cbb26bc654de
children 433d4f72a19b
rev   line source
Chris@0 1 # Redmine - project management software
Chris@909 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@909 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@909 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@119 18 require File.expand_path('../../test_helper', __FILE__)
Chris@0 19
Chris@0 20 class IssueRelationTest < ActiveSupport::TestCase
Chris@0 21 fixtures :issue_relations, :issues
Chris@0 22
Chris@0 23 def test_create
Chris@0 24 from = Issue.find(1)
Chris@0 25 to = Issue.find(2)
Chris@909 26
Chris@909 27 relation = IssueRelation.new :issue_from => from, :issue_to => to,
Chris@909 28 :relation_type => IssueRelation::TYPE_PRECEDES
Chris@0 29 assert relation.save
Chris@0 30 relation.reload
Chris@0 31 assert_equal IssueRelation::TYPE_PRECEDES, relation.relation_type
Chris@0 32 assert_equal from, relation.issue_from
Chris@0 33 assert_equal to, relation.issue_to
Chris@0 34 end
Chris@909 35
Chris@909 36 def test_create_minimum
Chris@909 37 relation = IssueRelation.new :issue_from => Issue.find(1), :issue_to => Issue.find(2)
Chris@909 38 assert relation.save
Chris@909 39 assert_equal IssueRelation::TYPE_RELATES, relation.relation_type
Chris@909 40 end
Chris@909 41
Chris@0 42 def test_follows_relation_should_be_reversed
Chris@0 43 from = Issue.find(1)
Chris@0 44 to = Issue.find(2)
Chris@909 45
Chris@909 46 relation = IssueRelation.new :issue_from => from, :issue_to => to,
Chris@909 47 :relation_type => IssueRelation::TYPE_FOLLOWS
Chris@0 48 assert relation.save
Chris@0 49 relation.reload
Chris@0 50 assert_equal IssueRelation::TYPE_PRECEDES, relation.relation_type
Chris@0 51 assert_equal to, relation.issue_from
Chris@0 52 assert_equal from, relation.issue_to
Chris@0 53 end
Chris@909 54
Chris@0 55 def test_follows_relation_should_not_be_reversed_if_validation_fails
Chris@0 56 from = Issue.find(1)
Chris@0 57 to = Issue.find(2)
Chris@909 58
Chris@909 59 relation = IssueRelation.new :issue_from => from, :issue_to => to,
Chris@909 60 :relation_type => IssueRelation::TYPE_FOLLOWS,
Chris@909 61 :delay => 'xx'
Chris@0 62 assert !relation.save
Chris@0 63 assert_equal IssueRelation::TYPE_FOLLOWS, relation.relation_type
Chris@0 64 assert_equal from, relation.issue_from
Chris@0 65 assert_equal to, relation.issue_to
Chris@0 66 end
Chris@909 67
Chris@0 68 def test_relation_type_for
Chris@0 69 from = Issue.find(1)
Chris@0 70 to = Issue.find(2)
Chris@909 71
Chris@909 72 relation = IssueRelation.new :issue_from => from, :issue_to => to,
Chris@909 73 :relation_type => IssueRelation::TYPE_PRECEDES
Chris@0 74 assert_equal IssueRelation::TYPE_PRECEDES, relation.relation_type_for(from)
Chris@0 75 assert_equal IssueRelation::TYPE_FOLLOWS, relation.relation_type_for(to)
Chris@0 76 end
Chris@909 77
Chris@119 78 def test_set_issue_to_dates_without_issue_to
Chris@909 79 r = IssueRelation.new(:issue_from => Issue.new(:start_date => Date.today),
Chris@909 80 :relation_type => IssueRelation::TYPE_PRECEDES,
Chris@909 81 :delay => 1)
Chris@119 82 assert_nil r.set_issue_to_dates
Chris@119 83 end
Chris@909 84
Chris@119 85 def test_set_issue_to_dates_without_issues
Chris@119 86 r = IssueRelation.new(:relation_type => IssueRelation::TYPE_PRECEDES, :delay => 1)
Chris@119 87 assert_nil r.set_issue_to_dates
Chris@119 88 end
Chris@909 89
Chris@128 90 def test_validates_circular_dependency
Chris@128 91 IssueRelation.delete_all
Chris@128 92 assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_PRECEDES)
Chris@128 93 assert IssueRelation.create!(:issue_from => Issue.find(2), :issue_to => Issue.find(3), :relation_type => IssueRelation::TYPE_PRECEDES)
Chris@128 94 r = IssueRelation.new(:issue_from => Issue.find(3), :issue_to => Issue.find(1), :relation_type => IssueRelation::TYPE_PRECEDES)
Chris@128 95 assert !r.save
Chris@909 96 assert_not_nil r.errors[:base]
Chris@128 97 end
Chris@507 98
Chris@507 99 def test_validates_circular_dependency_on_reverse_relations
Chris@507 100 IssueRelation.delete_all
Chris@507 101 assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(3), :relation_type => IssueRelation::TYPE_BLOCKS)
Chris@507 102 assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_BLOCKED)
Chris@507 103 r = IssueRelation.new(:issue_from => Issue.find(2), :issue_to => Issue.find(1), :relation_type => IssueRelation::TYPE_BLOCKED)
Chris@507 104 assert !r.save
Chris@909 105 assert_not_nil r.errors[:base]
Chris@507 106 end
Chris@0 107 end