##// END OF EJS Templates
Test cleanup....
Jean-Philippe Lang -
r8963:45e2e57afbdc
parent child
Show More
@@ -1,183 +1,186
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 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.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19
19
20 class RolesControllerTest < ActionController::TestCase
20 class RolesControllerTest < ActionController::TestCase
21 fixtures :roles, :users, :members, :member_roles, :workflows, :trackers
21 fixtures :roles, :users, :members, :member_roles, :workflows, :trackers
22
22
23 def setup
23 def setup
24 @controller = RolesController.new
25 @request = ActionController::TestRequest.new
26 @response = ActionController::TestResponse.new
24 User.current = nil
27 User.current = nil
25 @request.session[:user_id] = 1 # admin
28 @request.session[:user_id] = 1 # admin
26 end
29 end
27
30
28 def test_index
31 def test_index
29 get :index
32 get :index
30 assert_response :success
33 assert_response :success
31 assert_template 'index'
34 assert_template 'index'
32
35
33 assert_not_nil assigns(:roles)
36 assert_not_nil assigns(:roles)
34 assert_equal Role.find(:all, :order => 'builtin, position'), assigns(:roles)
37 assert_equal Role.find(:all, :order => 'builtin, position'), assigns(:roles)
35
38
36 assert_tag :tag => 'a', :attributes => { :href => '/roles/1/edit' },
39 assert_tag :tag => 'a', :attributes => { :href => '/roles/1/edit' },
37 :content => 'Manager'
40 :content => 'Manager'
38 end
41 end
39
42
40 def test_new
43 def test_new
41 get :new
44 get :new
42 assert_response :success
45 assert_response :success
43 assert_template 'new'
46 assert_template 'new'
44 end
47 end
45
48
46 def test_create_with_validaton_failure
49 def test_create_with_validaton_failure
47 post :create, :role => {:name => '',
50 post :create, :role => {:name => '',
48 :permissions => ['add_issues', 'edit_issues', 'log_time', ''],
51 :permissions => ['add_issues', 'edit_issues', 'log_time', ''],
49 :assignable => '0'}
52 :assignable => '0'}
50
53
51 assert_response :success
54 assert_response :success
52 assert_template 'new'
55 assert_template 'new'
53 assert_tag :tag => 'div', :attributes => { :id => 'errorExplanation' }
56 assert_tag :tag => 'div', :attributes => { :id => 'errorExplanation' }
54 end
57 end
55
58
56 def test_create_without_workflow_copy
59 def test_create_without_workflow_copy
57 post :create, :role => {:name => 'RoleWithoutWorkflowCopy',
60 post :create, :role => {:name => 'RoleWithoutWorkflowCopy',
58 :permissions => ['add_issues', 'edit_issues', 'log_time', ''],
61 :permissions => ['add_issues', 'edit_issues', 'log_time', ''],
59 :assignable => '0'}
62 :assignable => '0'}
60
63
61 assert_redirected_to '/roles'
64 assert_redirected_to '/roles'
62 role = Role.find_by_name('RoleWithoutWorkflowCopy')
65 role = Role.find_by_name('RoleWithoutWorkflowCopy')
63 assert_not_nil role
66 assert_not_nil role
64 assert_equal [:add_issues, :edit_issues, :log_time], role.permissions
67 assert_equal [:add_issues, :edit_issues, :log_time], role.permissions
65 assert !role.assignable?
68 assert !role.assignable?
66 end
69 end
67
70
68 def test_create_with_workflow_copy
71 def test_create_with_workflow_copy
69 post :create, :role => {:name => 'RoleWithWorkflowCopy',
72 post :create, :role => {:name => 'RoleWithWorkflowCopy',
70 :permissions => ['add_issues', 'edit_issues', 'log_time', ''],
73 :permissions => ['add_issues', 'edit_issues', 'log_time', ''],
71 :assignable => '0'},
74 :assignable => '0'},
72 :copy_workflow_from => '1'
75 :copy_workflow_from => '1'
73
76
74 assert_redirected_to '/roles'
77 assert_redirected_to '/roles'
75 role = Role.find_by_name('RoleWithWorkflowCopy')
78 role = Role.find_by_name('RoleWithWorkflowCopy')
76 assert_not_nil role
79 assert_not_nil role
77 assert_equal Role.find(1).workflows.size, role.workflows.size
80 assert_equal Role.find(1).workflows.size, role.workflows.size
78 end
81 end
79
82
80 def test_edit
83 def test_edit
81 get :edit, :id => 1
84 get :edit, :id => 1
82 assert_response :success
85 assert_response :success
83 assert_template 'edit'
86 assert_template 'edit'
84 assert_equal Role.find(1), assigns(:role)
87 assert_equal Role.find(1), assigns(:role)
85 end
88 end
86
89
87 def test_edit_invalid_should_respond_with_404
90 def test_edit_invalid_should_respond_with_404
88 get :edit, :id => 999
91 get :edit, :id => 999
89 assert_response 404
92 assert_response 404
90 end
93 end
91
94
92 def test_update
95 def test_update
93 put :update, :id => 1,
96 put :update, :id => 1,
94 :role => {:name => 'Manager',
97 :role => {:name => 'Manager',
95 :permissions => ['edit_project', ''],
98 :permissions => ['edit_project', ''],
96 :assignable => '0'}
99 :assignable => '0'}
97
100
98 assert_redirected_to '/roles'
101 assert_redirected_to '/roles'
99 role = Role.find(1)
102 role = Role.find(1)
100 assert_equal [:edit_project], role.permissions
103 assert_equal [:edit_project], role.permissions
101 end
104 end
102
105
103 def test_update_with_failure
106 def test_update_with_failure
104 put :update, :id => 1, :role => {:name => ''}
107 put :update, :id => 1, :role => {:name => ''}
105 assert_response :success
108 assert_response :success
106 assert_template 'edit'
109 assert_template 'edit'
107 end
110 end
108
111
109 def test_destroy
112 def test_destroy
110 r = Role.create!(:name => 'ToBeDestroyed', :permissions => [:view_wiki_pages])
113 r = Role.create!(:name => 'ToBeDestroyed', :permissions => [:view_wiki_pages])
111
114
112 delete :destroy, :id => r
115 delete :destroy, :id => r
113 assert_redirected_to '/roles'
116 assert_redirected_to '/roles'
114 assert_nil Role.find_by_id(r.id)
117 assert_nil Role.find_by_id(r.id)
115 end
118 end
116
119
117 def test_destroy_role_in_use
120 def test_destroy_role_in_use
118 delete :destroy, :id => 1
121 delete :destroy, :id => 1
119 assert_redirected_to '/roles'
122 assert_redirected_to '/roles'
120 assert_equal 'This role is in use and cannot be deleted.', flash[:error]
123 assert_equal 'This role is in use and cannot be deleted.', flash[:error]
121 assert_not_nil Role.find_by_id(1)
124 assert_not_nil Role.find_by_id(1)
122 end
125 end
123
126
124 def test_get_permissions
127 def test_get_permissions
125 get :permissions
128 get :permissions
126 assert_response :success
129 assert_response :success
127 assert_template 'permissions'
130 assert_template 'permissions'
128
131
129 assert_not_nil assigns(:roles)
132 assert_not_nil assigns(:roles)
130 assert_equal Role.find(:all, :order => 'builtin, position'), assigns(:roles)
133 assert_equal Role.find(:all, :order => 'builtin, position'), assigns(:roles)
131
134
132 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
135 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
133 :name => 'permissions[3][]',
136 :name => 'permissions[3][]',
134 :value => 'add_issues',
137 :value => 'add_issues',
135 :checked => 'checked' }
138 :checked => 'checked' }
136
139
137 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
140 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
138 :name => 'permissions[3][]',
141 :name => 'permissions[3][]',
139 :value => 'delete_issues',
142 :value => 'delete_issues',
140 :checked => nil }
143 :checked => nil }
141 end
144 end
142
145
143 def test_post_permissions
146 def test_post_permissions
144 post :permissions, :permissions => { '0' => '', '1' => ['edit_issues'], '3' => ['add_issues', 'delete_issues']}
147 post :permissions, :permissions => { '0' => '', '1' => ['edit_issues'], '3' => ['add_issues', 'delete_issues']}
145 assert_redirected_to '/roles'
148 assert_redirected_to '/roles'
146
149
147 assert_equal [:edit_issues], Role.find(1).permissions
150 assert_equal [:edit_issues], Role.find(1).permissions
148 assert_equal [:add_issues, :delete_issues], Role.find(3).permissions
151 assert_equal [:add_issues, :delete_issues], Role.find(3).permissions
149 assert Role.find(2).permissions.empty?
152 assert Role.find(2).permissions.empty?
150 end
153 end
151
154
152 def test_clear_all_permissions
155 def test_clear_all_permissions
153 post :permissions, :permissions => { '0' => '' }
156 post :permissions, :permissions => { '0' => '' }
154 assert_redirected_to '/roles'
157 assert_redirected_to '/roles'
155 assert Role.find(1).permissions.empty?
158 assert Role.find(1).permissions.empty?
156 end
159 end
157
160
158 def test_move_highest
161 def test_move_highest
159 put :update, :id => 3, :role => {:move_to => 'highest'}
162 put :update, :id => 3, :role => {:move_to => 'highest'}
160 assert_redirected_to '/roles'
163 assert_redirected_to '/roles'
161 assert_equal 1, Role.find(3).position
164 assert_equal 1, Role.find(3).position
162 end
165 end
163
166
164 def test_move_higher
167 def test_move_higher
165 position = Role.find(3).position
168 position = Role.find(3).position
166 put :update, :id => 3, :role => {:move_to => 'higher'}
169 put :update, :id => 3, :role => {:move_to => 'higher'}
167 assert_redirected_to '/roles'
170 assert_redirected_to '/roles'
168 assert_equal position - 1, Role.find(3).position
171 assert_equal position - 1, Role.find(3).position
169 end
172 end
170
173
171 def test_move_lower
174 def test_move_lower
172 position = Role.find(2).position
175 position = Role.find(2).position
173 put :update, :id => 2, :role => {:move_to => 'lower'}
176 put :update, :id => 2, :role => {:move_to => 'lower'}
174 assert_redirected_to '/roles'
177 assert_redirected_to '/roles'
175 assert_equal position + 1, Role.find(2).position
178 assert_equal position + 1, Role.find(2).position
176 end
179 end
177
180
178 def test_move_lowest
181 def test_move_lowest
179 put :update, :id => 2, :role => {:move_to => 'lowest'}
182 put :update, :id => 2, :role => {:move_to => 'lowest'}
180 assert_redirected_to '/roles'
183 assert_redirected_to '/roles'
181 assert_equal Role.count, Role.find(2).position
184 assert_equal Role.count, Role.find(2).position
182 end
185 end
183 end
186 end
General Comments 0
You need to be logged in to leave comments. Login now