comparison test/functional/issue_relations_controller_test.rb @ 1526:404aa68d4227

Merge from live branch
author Chris Cannam
date Thu, 11 Sep 2014 12:46:20 +0100
parents dffacf8a6908
children
comparison
equal deleted inserted replaced
1493:a5f2bdf3b486 1526:404aa68d4227
1 # Redmine - project management software 1 # Redmine - project management software
2 # Copyright (C) 2006-2012 Jean-Philippe Lang 2 # Copyright (C) 2006-2014 Jean-Philippe Lang
3 # 3 #
4 # This program is free software; you can redistribute it and/or 4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License 5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2 6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version. 7 # of the License, or (at your option) any later version.
26 :issues, 26 :issues,
27 :issue_statuses, 27 :issue_statuses,
28 :issue_relations, 28 :issue_relations,
29 :enabled_modules, 29 :enabled_modules,
30 :enumerations, 30 :enumerations,
31 :trackers 31 :trackers,
32 :projects_trackers
32 33
33 def setup 34 def setup
34 User.current = nil 35 User.current = nil
35 @request.session[:user_id] = 3 36 @request.session[:user_id] = 3
36 end 37 end
38 def test_create 39 def test_create
39 assert_difference 'IssueRelation.count' do 40 assert_difference 'IssueRelation.count' do
40 post :create, :issue_id => 1, 41 post :create, :issue_id => 1,
41 :relation => {:issue_to_id => '2', :relation_type => 'relates', :delay => ''} 42 :relation => {:issue_to_id => '2', :relation_type => 'relates', :delay => ''}
42 end 43 end
43 relation = IssueRelation.first(:order => 'id DESC') 44 relation = IssueRelation.order('id DESC').first
44 assert_equal 1, relation.issue_from_id 45 assert_equal 1, relation.issue_from_id
45 assert_equal 2, relation.issue_to_id 46 assert_equal 2, relation.issue_to_id
46 assert_equal 'relates', relation.relation_type 47 assert_equal 'relates', relation.relation_type
47 end 48 end
48 49
51 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''} 52 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''}
52 assert_response :success 53 assert_response :success
53 assert_template 'create' 54 assert_template 'create'
54 assert_equal 'text/javascript', response.content_type 55 assert_equal 'text/javascript', response.content_type
55 end 56 end
56 relation = IssueRelation.first(:order => 'id DESC') 57 relation = IssueRelation.order('id DESC').first
57 assert_equal 3, relation.issue_from_id 58 assert_equal 3, relation.issue_from_id
58 assert_equal 1, relation.issue_to_id 59 assert_equal 1, relation.issue_to_id
59 60
60 assert_match /Bug #1/, response.body 61 assert_match /Bug #1/, response.body
61 end 62 end
63 def test_create_should_accept_id_with_hash 64 def test_create_should_accept_id_with_hash
64 assert_difference 'IssueRelation.count' do 65 assert_difference 'IssueRelation.count' do
65 post :create, :issue_id => 1, 66 post :create, :issue_id => 1,
66 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''} 67 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''}
67 end 68 end
68 relation = IssueRelation.first(:order => 'id DESC') 69 relation = IssueRelation.order('id DESC').first
69 assert_equal 2, relation.issue_to_id 70 assert_equal 2, relation.issue_to_id
70 end 71 end
71 72
72 def test_create_should_strip_id 73 def test_create_should_strip_id
73 assert_difference 'IssueRelation.count' do 74 assert_difference 'IssueRelation.count' do
74 post :create, :issue_id => 1, 75 post :create, :issue_id => 1,
75 :relation => {:issue_to_id => ' 2 ', :relation_type => 'relates', :delay => ''} 76 :relation => {:issue_to_id => ' 2 ', :relation_type => 'relates', :delay => ''}
76 end 77 end
77 relation = IssueRelation.first(:order => 'id DESC') 78 relation = IssueRelation.order('id DESC').first
78 assert_equal 2, relation.issue_to_id 79 assert_equal 2, relation.issue_to_id
79 end 80 end
80 81
81 def test_create_should_not_break_with_non_numerical_id 82 def test_create_should_not_break_with_non_numerical_id
82 assert_no_difference 'IssueRelation.count' do 83 assert_no_difference 'IssueRelation.count' do
85 :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''} 86 :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''}
86 end 87 end
87 end 88 end
88 end 89 end
89 90
91 def test_create_follows_relation_should_update_relations_list
92 issue1 = Issue.generate!(:subject => 'Followed issue', :start_date => Date.yesterday, :due_date => Date.today)
93 issue2 = Issue.generate!
94
95 assert_difference 'IssueRelation.count' do
96 xhr :post, :create, :issue_id => issue2.id,
97 :relation => {:issue_to_id => issue1.id, :relation_type => 'follows', :delay => ''}
98 end
99 assert_match /Followed issue/, response.body
100 end
101
90 def test_should_create_relations_with_visible_issues_only 102 def test_should_create_relations_with_visible_issues_only
91 Setting.cross_project_issue_relations = '1' 103 Setting.cross_project_issue_relations = '1'
92 assert_nil Issue.visible(User.find(3)).find_by_id(4) 104 assert_nil Issue.visible(User.find(3)).find_by_id(4)
93 105
94 assert_no_difference 'IssueRelation.count' do 106 assert_no_difference 'IssueRelation.count' do
95 post :create, :issue_id => 1, 107 post :create, :issue_id => 1,
96 :relation => {:issue_to_id => '4', :relation_type => 'relates', :delay => ''} 108 :relation => {:issue_to_id => '4', :relation_type => 'relates', :delay => ''}
97 end 109 end
98 end 110 end
99
100 should "prevent relation creation when there's a circular dependency"
101 111
102 def test_create_xhr_with_failure 112 def test_create_xhr_with_failure
103 assert_no_difference 'IssueRelation.count' do 113 assert_no_difference 'IssueRelation.count' do
104 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '999', :relation_type => 'relates', :delay => ''} 114 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '999', :relation_type => 'relates', :delay => ''}
105 115