Mercurial > hg > soundsoftware-site
comparison .svn/pristine/06/06efa9c81bf4ffa47e3211023e46fcb09d4eac0f.svn-base @ 1298:4f746d8966dd redmine_2.3_integration
Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author | Chris Cannam |
---|---|
date | Fri, 14 Jun 2013 09:28:30 +0100 |
parents | 622f24f53b42 |
children |
comparison
equal
deleted
inserted
replaced
1297:0a574315af3e | 1298:4f746d8966dd |
---|---|
1 # Redmine - project management software | |
2 # Copyright (C) 2006-2013 Jean-Philippe Lang | |
3 # | |
4 # This program is free software; you can redistribute it and/or | |
5 # modify it under the terms of the GNU General Public License | |
6 # as published by the Free Software Foundation; either version 2 | |
7 # of the License, or (at your option) any later version. | |
8 # | |
9 # This program is distributed in the hope that it will be useful, | |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 # GNU General Public License for more details. | |
13 # | |
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 | |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
17 | |
18 require File.expand_path('../../test_helper', __FILE__) | |
19 | |
20 class RolesControllerTest < ActionController::TestCase | |
21 fixtures :roles, :users, :members, :member_roles, :workflows, :trackers | |
22 | |
23 def setup | |
24 User.current = nil | |
25 @request.session[:user_id] = 1 # admin | |
26 end | |
27 | |
28 def test_index | |
29 get :index | |
30 assert_response :success | |
31 assert_template 'index' | |
32 | |
33 assert_not_nil assigns(:roles) | |
34 assert_equal Role.order('builtin, position').all, assigns(:roles) | |
35 | |
36 assert_tag :tag => 'a', :attributes => { :href => '/roles/1/edit' }, | |
37 :content => 'Manager' | |
38 end | |
39 | |
40 def test_new | |
41 get :new | |
42 assert_response :success | |
43 assert_template 'new' | |
44 end | |
45 | |
46 def test_new_with_copy | |
47 copy_from = Role.find(2) | |
48 | |
49 get :new, :copy => copy_from.id.to_s | |
50 assert_response :success | |
51 assert_template 'new' | |
52 | |
53 role = assigns(:role) | |
54 assert_equal copy_from.permissions, role.permissions | |
55 | |
56 assert_select 'form' do | |
57 # blank name | |
58 assert_select 'input[name=?][value=]', 'role[name]' | |
59 # edit_project permission checked | |
60 assert_select 'input[type=checkbox][name=?][value=edit_project][checked=checked]', 'role[permissions][]' | |
61 # add_project permission not checked | |
62 assert_select 'input[type=checkbox][name=?][value=add_project]', 'role[permissions][]' | |
63 assert_select 'input[type=checkbox][name=?][value=add_project][checked=checked]', 'role[permissions][]', 0 | |
64 # workflow copy selected | |
65 assert_select 'select[name=?]', 'copy_workflow_from' do | |
66 assert_select 'option[value=2][selected=selected]' | |
67 end | |
68 end | |
69 end | |
70 | |
71 def test_create_with_validaton_failure | |
72 post :create, :role => {:name => '', | |
73 :permissions => ['add_issues', 'edit_issues', 'log_time', ''], | |
74 :assignable => '0'} | |
75 | |
76 assert_response :success | |
77 assert_template 'new' | |
78 assert_tag :tag => 'div', :attributes => { :id => 'errorExplanation' } | |
79 end | |
80 | |
81 def test_create_without_workflow_copy | |
82 post :create, :role => {:name => 'RoleWithoutWorkflowCopy', | |
83 :permissions => ['add_issues', 'edit_issues', 'log_time', ''], | |
84 :assignable => '0'} | |
85 | |
86 assert_redirected_to '/roles' | |
87 role = Role.find_by_name('RoleWithoutWorkflowCopy') | |
88 assert_not_nil role | |
89 assert_equal [:add_issues, :edit_issues, :log_time], role.permissions | |
90 assert !role.assignable? | |
91 end | |
92 | |
93 def test_create_with_workflow_copy | |
94 post :create, :role => {:name => 'RoleWithWorkflowCopy', | |
95 :permissions => ['add_issues', 'edit_issues', 'log_time', ''], | |
96 :assignable => '0'}, | |
97 :copy_workflow_from => '1' | |
98 | |
99 assert_redirected_to '/roles' | |
100 role = Role.find_by_name('RoleWithWorkflowCopy') | |
101 assert_not_nil role | |
102 assert_equal Role.find(1).workflow_rules.size, role.workflow_rules.size | |
103 end | |
104 | |
105 def test_edit | |
106 get :edit, :id => 1 | |
107 assert_response :success | |
108 assert_template 'edit' | |
109 assert_equal Role.find(1), assigns(:role) | |
110 assert_select 'select[name=?]', 'role[issues_visibility]' | |
111 end | |
112 | |
113 def test_edit_anonymous | |
114 get :edit, :id => Role.anonymous.id | |
115 assert_response :success | |
116 assert_template 'edit' | |
117 assert_select 'select[name=?]', 'role[issues_visibility]', 0 | |
118 end | |
119 | |
120 def test_edit_invalid_should_respond_with_404 | |
121 get :edit, :id => 999 | |
122 assert_response 404 | |
123 end | |
124 | |
125 def test_update | |
126 put :update, :id => 1, | |
127 :role => {:name => 'Manager', | |
128 :permissions => ['edit_project', ''], | |
129 :assignable => '0'} | |
130 | |
131 assert_redirected_to '/roles' | |
132 role = Role.find(1) | |
133 assert_equal [:edit_project], role.permissions | |
134 end | |
135 | |
136 def test_update_with_failure | |
137 put :update, :id => 1, :role => {:name => ''} | |
138 assert_response :success | |
139 assert_template 'edit' | |
140 end | |
141 | |
142 def test_destroy | |
143 r = Role.create!(:name => 'ToBeDestroyed', :permissions => [:view_wiki_pages]) | |
144 | |
145 delete :destroy, :id => r | |
146 assert_redirected_to '/roles' | |
147 assert_nil Role.find_by_id(r.id) | |
148 end | |
149 | |
150 def test_destroy_role_in_use | |
151 delete :destroy, :id => 1 | |
152 assert_redirected_to '/roles' | |
153 assert_equal 'This role is in use and cannot be deleted.', flash[:error] | |
154 assert_not_nil Role.find_by_id(1) | |
155 end | |
156 | |
157 def test_get_permissions | |
158 get :permissions | |
159 assert_response :success | |
160 assert_template 'permissions' | |
161 | |
162 assert_not_nil assigns(:roles) | |
163 assert_equal Role.order('builtin, position').all, assigns(:roles) | |
164 | |
165 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | |
166 :name => 'permissions[3][]', | |
167 :value => 'add_issues', | |
168 :checked => 'checked' } | |
169 | |
170 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | |
171 :name => 'permissions[3][]', | |
172 :value => 'delete_issues', | |
173 :checked => nil } | |
174 end | |
175 | |
176 def test_post_permissions | |
177 post :permissions, :permissions => { '0' => '', '1' => ['edit_issues'], '3' => ['add_issues', 'delete_issues']} | |
178 assert_redirected_to '/roles' | |
179 | |
180 assert_equal [:edit_issues], Role.find(1).permissions | |
181 assert_equal [:add_issues, :delete_issues], Role.find(3).permissions | |
182 assert Role.find(2).permissions.empty? | |
183 end | |
184 | |
185 def test_clear_all_permissions | |
186 post :permissions, :permissions => { '0' => '' } | |
187 assert_redirected_to '/roles' | |
188 assert Role.find(1).permissions.empty? | |
189 end | |
190 | |
191 def test_move_highest | |
192 put :update, :id => 3, :role => {:move_to => 'highest'} | |
193 assert_redirected_to '/roles' | |
194 assert_equal 1, Role.find(3).position | |
195 end | |
196 | |
197 def test_move_higher | |
198 position = Role.find(3).position | |
199 put :update, :id => 3, :role => {:move_to => 'higher'} | |
200 assert_redirected_to '/roles' | |
201 assert_equal position - 1, Role.find(3).position | |
202 end | |
203 | |
204 def test_move_lower | |
205 position = Role.find(2).position | |
206 put :update, :id => 2, :role => {:move_to => 'lower'} | |
207 assert_redirected_to '/roles' | |
208 assert_equal position + 1, Role.find(2).position | |
209 end | |
210 | |
211 def test_move_lowest | |
212 put :update, :id => 2, :role => {:move_to => 'lowest'} | |
213 assert_redirected_to '/roles' | |
214 assert_equal Role.count, Role.find(2).position | |
215 end | |
216 end |