Mercurial > hg > soundsoftware-site
comparison test/functional/queries_controller_test.rb @ 909:cbb26bc654de redmine-1.3
Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author | Chris Cannam |
---|---|
date | Fri, 24 Feb 2012 19:09:32 +0000 |
parents | cbce1fd3b1b7 |
children | 433d4f72a19b |
comparison
equal
deleted
inserted
replaced
908:c6c2cbd0afee | 909:cbb26bc654de |
---|---|
1 # redMine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2008 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__) |
21 # Re-raise errors caught by the controller. | 21 # Re-raise errors caught by the controller. |
22 class QueriesController; def rescue_action(e) raise e end; end | 22 class QueriesController; def rescue_action(e) raise e end; end |
23 | 23 |
24 class QueriesControllerTest < ActionController::TestCase | 24 class QueriesControllerTest < ActionController::TestCase |
25 fixtures :projects, :users, :members, :member_roles, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :queries | 25 fixtures :projects, :users, :members, :member_roles, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :queries |
26 | 26 |
27 def setup | 27 def setup |
28 @controller = QueriesController.new | 28 @controller = QueriesController.new |
29 @request = ActionController::TestRequest.new | 29 @request = ActionController::TestRequest.new |
30 @response = ActionController::TestResponse.new | 30 @response = ActionController::TestResponse.new |
31 User.current = nil | 31 User.current = nil |
32 end | 32 end |
33 | 33 |
34 def test_get_new_project_query | 34 def test_get_new_project_query |
35 @request.session[:user_id] = 2 | 35 @request.session[:user_id] = 2 |
36 get :new, :project_id => 1 | 36 get :new, :project_id => 1 |
37 assert_response :success | 37 assert_response :success |
38 assert_template 'new' | 38 assert_template 'new' |
39 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 39 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
40 :name => 'query[is_public]', | 40 :name => 'query[is_public]', |
41 :checked => nil } | 41 :checked => nil } |
42 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 42 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
43 :name => 'query_is_for_all', | 43 :name => 'query_is_for_all', |
44 :checked => nil, | 44 :checked => nil, |
45 :disabled => nil } | 45 :disabled => nil } |
46 end | 46 end |
47 | 47 |
48 def test_get_new_global_query | 48 def test_get_new_global_query |
49 @request.session[:user_id] = 2 | 49 @request.session[:user_id] = 2 |
50 get :new | 50 get :new |
51 assert_response :success | 51 assert_response :success |
52 assert_template 'new' | 52 assert_template 'new' |
53 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', | 53 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', |
54 :name => 'query[is_public]' } | 54 :name => 'query[is_public]' } |
55 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 55 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
56 :name => 'query_is_for_all', | 56 :name => 'query_is_for_all', |
57 :checked => 'checked', | 57 :checked => 'checked', |
58 :disabled => nil } | 58 :disabled => nil } |
59 end | 59 end |
60 | 60 |
61 def test_new_project_public_query | 61 def test_new_project_public_query |
62 @request.session[:user_id] = 2 | 62 @request.session[:user_id] = 2 |
63 post :new, | 63 post :create, |
64 :project_id => 'ecookbook', | 64 :project_id => 'ecookbook', |
65 :confirm => '1', | |
66 :default_columns => '1', | 65 :default_columns => '1', |
67 :f => ["status_id", "assigned_to_id"], | 66 :f => ["status_id", "assigned_to_id"], |
68 :op => {"assigned_to_id" => "=", "status_id" => "o"}, | 67 :op => {"assigned_to_id" => "=", "status_id" => "o"}, |
69 :v => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, | 68 :v => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, |
70 :query => {"name" => "test_new_project_public_query", "is_public" => "1"} | 69 :query => {"name" => "test_new_project_public_query", "is_public" => "1"} |
71 | 70 |
72 q = Query.find_by_name('test_new_project_public_query') | 71 q = Query.find_by_name('test_new_project_public_query') |
73 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q | 72 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q |
74 assert q.is_public? | 73 assert q.is_public? |
75 assert q.has_default_columns? | 74 assert q.has_default_columns? |
76 assert q.valid? | 75 assert q.valid? |
77 end | 76 end |
78 | 77 |
79 def test_new_project_private_query | 78 def test_new_project_private_query |
80 @request.session[:user_id] = 3 | 79 @request.session[:user_id] = 3 |
81 post :new, | 80 post :create, |
82 :project_id => 'ecookbook', | 81 :project_id => 'ecookbook', |
83 :confirm => '1', | |
84 :default_columns => '1', | 82 :default_columns => '1', |
85 :fields => ["status_id", "assigned_to_id"], | 83 :fields => ["status_id", "assigned_to_id"], |
86 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, | 84 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, |
87 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, | 85 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, |
88 :query => {"name" => "test_new_project_private_query", "is_public" => "1"} | 86 :query => {"name" => "test_new_project_private_query", "is_public" => "1"} |
89 | 87 |
90 q = Query.find_by_name('test_new_project_private_query') | 88 q = Query.find_by_name('test_new_project_private_query') |
91 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q | 89 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q |
92 assert !q.is_public? | 90 assert !q.is_public? |
93 assert q.has_default_columns? | 91 assert q.has_default_columns? |
94 assert q.valid? | 92 assert q.valid? |
95 end | 93 end |
96 | 94 |
97 def test_new_global_private_query_with_custom_columns | 95 def test_new_global_private_query_with_custom_columns |
98 @request.session[:user_id] = 3 | 96 @request.session[:user_id] = 3 |
99 post :new, | 97 post :create, |
100 :confirm => '1', | |
101 :fields => ["status_id", "assigned_to_id"], | 98 :fields => ["status_id", "assigned_to_id"], |
102 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, | 99 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, |
103 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]}, | 100 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]}, |
104 :query => {"name" => "test_new_global_private_query", "is_public" => "1"}, | 101 :query => {"name" => "test_new_global_private_query", "is_public" => "1"}, |
105 :c => ["", "tracker", "subject", "priority", "category"] | 102 :c => ["", "tracker", "subject", "priority", "category"] |
106 | 103 |
107 q = Query.find_by_name('test_new_global_private_query') | 104 q = Query.find_by_name('test_new_global_private_query') |
108 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :query_id => q | 105 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :query_id => q |
109 assert !q.is_public? | 106 assert !q.is_public? |
110 assert !q.has_default_columns? | 107 assert !q.has_default_columns? |
111 assert_equal [:tracker, :subject, :priority, :category], q.columns.collect {|c| c.name} | 108 assert_equal [:tracker, :subject, :priority, :category], q.columns.collect {|c| c.name} |
112 assert q.valid? | 109 assert q.valid? |
113 end | 110 end |
114 | 111 |
112 def test_new_global_query_with_custom_filters | |
113 @request.session[:user_id] = 3 | |
114 post :create, | |
115 :fields => ["assigned_to_id"], | |
116 :operators => {"assigned_to_id" => "="}, | |
117 :values => { "assigned_to_id" => ["me"]}, | |
118 :query => {"name" => "test_new_global_query"} | |
119 | |
120 q = Query.find_by_name('test_new_global_query') | |
121 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :query_id => q | |
122 assert !q.has_filter?(:status_id) | |
123 assert_equal ['assigned_to_id'], q.filters.keys | |
124 assert q.valid? | |
125 end | |
126 | |
115 def test_new_with_sort | 127 def test_new_with_sort |
116 @request.session[:user_id] = 1 | 128 @request.session[:user_id] = 1 |
117 post :new, | 129 post :create, |
118 :confirm => '1', | |
119 :default_columns => '1', | 130 :default_columns => '1', |
120 :operators => {"status_id" => "o"}, | 131 :operators => {"status_id" => "o"}, |
121 :values => {"status_id" => ["1"]}, | 132 :values => {"status_id" => ["1"]}, |
122 :query => {:name => "test_new_with_sort", | 133 :query => {:name => "test_new_with_sort", |
123 :is_public => "1", | 134 :is_public => "1", |
124 :sort_criteria => {"0" => ["due_date", "desc"], "1" => ["tracker", ""]}} | 135 :sort_criteria => {"0" => ["due_date", "desc"], "1" => ["tracker", ""]}} |
125 | 136 |
126 query = Query.find_by_name("test_new_with_sort") | 137 query = Query.find_by_name("test_new_with_sort") |
127 assert_not_nil query | 138 assert_not_nil query |
128 assert_equal [['due_date', 'desc'], ['tracker', 'asc']], query.sort_criteria | 139 assert_equal [['due_date', 'desc'], ['tracker', 'asc']], query.sort_criteria |
129 end | 140 end |
130 | 141 |
131 def test_get_edit_global_public_query | 142 def test_get_edit_global_public_query |
132 @request.session[:user_id] = 1 | 143 @request.session[:user_id] = 1 |
133 get :edit, :id => 4 | 144 get :edit, :id => 4 |
134 assert_response :success | 145 assert_response :success |
135 assert_template 'edit' | 146 assert_template 'edit' |
136 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 147 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
137 :name => 'query[is_public]', | 148 :name => 'query[is_public]', |
138 :checked => 'checked' } | 149 :checked => 'checked' } |
139 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 150 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
140 :name => 'query_is_for_all', | 151 :name => 'query_is_for_all', |
141 :checked => 'checked', | 152 :checked => 'checked', |
142 :disabled => 'disabled' } | 153 :disabled => 'disabled' } |
143 end | 154 end |
144 | 155 |
145 def test_edit_global_public_query | 156 def test_edit_global_public_query |
146 @request.session[:user_id] = 1 | 157 @request.session[:user_id] = 1 |
147 post :edit, | 158 put :update, |
148 :id => 4, | 159 :id => 4, |
149 :confirm => '1', | |
150 :default_columns => '1', | 160 :default_columns => '1', |
151 :fields => ["status_id", "assigned_to_id"], | 161 :fields => ["status_id", "assigned_to_id"], |
152 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, | 162 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, |
153 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, | 163 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, |
154 :query => {"name" => "test_edit_global_public_query", "is_public" => "1"} | 164 :query => {"name" => "test_edit_global_public_query", "is_public" => "1"} |
155 | 165 |
156 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 4 | 166 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 4 |
157 q = Query.find_by_name('test_edit_global_public_query') | 167 q = Query.find_by_name('test_edit_global_public_query') |
158 assert q.is_public? | 168 assert q.is_public? |
159 assert q.has_default_columns? | 169 assert q.has_default_columns? |
160 assert q.valid? | 170 assert q.valid? |
161 end | 171 end |
162 | 172 |
163 def test_get_edit_global_private_query | 173 def test_get_edit_global_private_query |
164 @request.session[:user_id] = 3 | 174 @request.session[:user_id] = 3 |
165 get :edit, :id => 3 | 175 get :edit, :id => 3 |
166 assert_response :success | 176 assert_response :success |
167 assert_template 'edit' | 177 assert_template 'edit' |
168 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', | 178 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', |
169 :name => 'query[is_public]' } | 179 :name => 'query[is_public]' } |
170 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 180 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
171 :name => 'query_is_for_all', | 181 :name => 'query_is_for_all', |
172 :checked => 'checked', | 182 :checked => 'checked', |
173 :disabled => 'disabled' } | 183 :disabled => 'disabled' } |
174 end | 184 end |
175 | 185 |
176 def test_edit_global_private_query | 186 def test_edit_global_private_query |
177 @request.session[:user_id] = 3 | 187 @request.session[:user_id] = 3 |
178 post :edit, | 188 put :update, |
179 :id => 3, | 189 :id => 3, |
180 :confirm => '1', | |
181 :default_columns => '1', | 190 :default_columns => '1', |
182 :fields => ["status_id", "assigned_to_id"], | 191 :fields => ["status_id", "assigned_to_id"], |
183 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, | 192 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, |
184 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]}, | 193 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]}, |
185 :query => {"name" => "test_edit_global_private_query", "is_public" => "1"} | 194 :query => {"name" => "test_edit_global_private_query", "is_public" => "1"} |
186 | 195 |
187 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 3 | 196 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 3 |
188 q = Query.find_by_name('test_edit_global_private_query') | 197 q = Query.find_by_name('test_edit_global_private_query') |
189 assert !q.is_public? | 198 assert !q.is_public? |
190 assert q.has_default_columns? | 199 assert q.has_default_columns? |
191 assert q.valid? | 200 assert q.valid? |
192 end | 201 end |
193 | 202 |
194 def test_get_edit_project_private_query | 203 def test_get_edit_project_private_query |
195 @request.session[:user_id] = 3 | 204 @request.session[:user_id] = 3 |
196 get :edit, :id => 2 | 205 get :edit, :id => 2 |
197 assert_response :success | 206 assert_response :success |
198 assert_template 'edit' | 207 assert_template 'edit' |
199 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', | 208 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', |
200 :name => 'query[is_public]' } | 209 :name => 'query[is_public]' } |
201 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 210 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
202 :name => 'query_is_for_all', | 211 :name => 'query_is_for_all', |
203 :checked => nil, | 212 :checked => nil, |
204 :disabled => nil } | 213 :disabled => nil } |
205 end | 214 end |
206 | 215 |
207 def test_get_edit_project_public_query | 216 def test_get_edit_project_public_query |
208 @request.session[:user_id] = 2 | 217 @request.session[:user_id] = 2 |
209 get :edit, :id => 1 | 218 get :edit, :id => 1 |
210 assert_response :success | 219 assert_response :success |
211 assert_template 'edit' | 220 assert_template 'edit' |
212 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 221 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
213 :name => 'query[is_public]', | 222 :name => 'query[is_public]', |
214 :checked => 'checked' | 223 :checked => 'checked' |
215 } | 224 } |
216 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | 225 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
217 :name => 'query_is_for_all', | 226 :name => 'query_is_for_all', |
218 :checked => nil, | 227 :checked => nil, |
219 :disabled => 'disabled' } | 228 :disabled => 'disabled' } |
220 end | 229 end |
221 | 230 |
222 def test_get_edit_sort_criteria | 231 def test_get_edit_sort_criteria |
223 @request.session[:user_id] = 1 | 232 @request.session[:user_id] = 1 |
224 get :edit, :id => 5 | 233 get :edit, :id => 5 |
225 assert_response :success | 234 assert_response :success |
226 assert_template 'edit' | 235 assert_template 'edit' |
229 :selected => 'selected' } } | 238 :selected => 'selected' } } |
230 assert_tag :tag => 'select', :attributes => { :name => 'query[sort_criteria][0][]' }, | 239 assert_tag :tag => 'select', :attributes => { :name => 'query[sort_criteria][0][]' }, |
231 :child => { :tag => 'option', :attributes => { :value => 'desc', | 240 :child => { :tag => 'option', :attributes => { :value => 'desc', |
232 :selected => 'selected' } } | 241 :selected => 'selected' } } |
233 end | 242 end |
234 | 243 |
235 def test_destroy | 244 def test_destroy |
236 @request.session[:user_id] = 2 | 245 @request.session[:user_id] = 2 |
237 post :destroy, :id => 1 | 246 delete :destroy, :id => 1 |
238 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :set_filter => 1, :query_id => nil | 247 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :set_filter => 1, :query_id => nil |
239 assert_nil Query.find_by_id(1) | 248 assert_nil Query.find_by_id(1) |
240 end | 249 end |
241 end | 250 end |