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

Merge from live branch
author Chris Cannam
date Thu, 11 Sep 2014 12:46:20 +0100
parents e248c7af89ec
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.
22 22
23 def setup 23 def setup
24 User.current = nil 24 User.current = nil
25 end 25 end
26 26
27 def test_index
28 get :index
29 # HTML response not implemented
30 assert_response 406
31 end
32
27 def test_new_project_query 33 def test_new_project_query
28 @request.session[:user_id] = 2 34 @request.session[:user_id] = 2
29 get :new, :project_id => 1 35 get :new, :project_id => 1
30 assert_response :success 36 assert_response :success
31 assert_template 'new' 37 assert_template 'new'
32 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 38 assert_select 'input[name=?][value=0][checked=checked]', 'query[visibility]'
33 :name => 'query[is_public]',
34 :checked => nil }
35 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 39 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
36 :name => 'query_is_for_all', 40 :name => 'query_is_for_all',
37 :checked => nil, 41 :checked => nil,
38 :disabled => nil } 42 :disabled => nil }
39 assert_select 'select[name=?]', 'c[]' do 43 assert_select 'select[name=?]', 'c[]' do
45 def test_new_global_query 49 def test_new_global_query
46 @request.session[:user_id] = 2 50 @request.session[:user_id] = 2
47 get :new 51 get :new
48 assert_response :success 52 assert_response :success
49 assert_template 'new' 53 assert_template 'new'
50 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', 54 assert_select 'input[name=?]', 'query[visibility]', 0
51 :name => 'query[is_public]' }
52 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 55 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
53 :name => 'query_is_for_all', 56 :name => 'query_is_for_all',
54 :checked => 'checked', 57 :checked => 'checked',
55 :disabled => nil } 58 :disabled => nil }
56 end 59 end
67 :project_id => 'ecookbook', 70 :project_id => 'ecookbook',
68 :default_columns => '1', 71 :default_columns => '1',
69 :f => ["status_id", "assigned_to_id"], 72 :f => ["status_id", "assigned_to_id"],
70 :op => {"assigned_to_id" => "=", "status_id" => "o"}, 73 :op => {"assigned_to_id" => "=", "status_id" => "o"},
71 :v => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, 74 :v => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
72 :query => {"name" => "test_new_project_public_query", "is_public" => "1"} 75 :query => {"name" => "test_new_project_public_query", "visibility" => "2"}
73 76
74 q = Query.find_by_name('test_new_project_public_query') 77 q = Query.find_by_name('test_new_project_public_query')
75 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q 78 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q
76 assert q.is_public? 79 assert q.is_public?
77 assert q.has_default_columns? 80 assert q.has_default_columns?
84 :project_id => 'ecookbook', 87 :project_id => 'ecookbook',
85 :default_columns => '1', 88 :default_columns => '1',
86 :fields => ["status_id", "assigned_to_id"], 89 :fields => ["status_id", "assigned_to_id"],
87 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, 90 :operators => {"assigned_to_id" => "=", "status_id" => "o"},
88 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, 91 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
89 :query => {"name" => "test_new_project_private_query", "is_public" => "1"} 92 :query => {"name" => "test_new_project_private_query", "visibility" => "2"}
90 93
91 q = Query.find_by_name('test_new_project_private_query') 94 q = Query.find_by_name('test_new_project_private_query')
92 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q 95 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q
93 assert !q.is_public? 96 assert !q.is_public?
94 assert q.has_default_columns? 97 assert q.has_default_columns?
99 @request.session[:user_id] = 3 102 @request.session[:user_id] = 3
100 post :create, 103 post :create,
101 :fields => ["status_id", "assigned_to_id"], 104 :fields => ["status_id", "assigned_to_id"],
102 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, 105 :operators => {"assigned_to_id" => "=", "status_id" => "o"},
103 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]}, 106 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]},
104 :query => {"name" => "test_new_global_private_query", "is_public" => "1"}, 107 :query => {"name" => "test_new_global_private_query", "visibility" => "2"},
105 :c => ["", "tracker", "subject", "priority", "category"] 108 :c => ["", "tracker", "subject", "priority", "category"]
106 109
107 q = Query.find_by_name('test_new_global_private_query') 110 q = Query.find_by_name('test_new_global_private_query')
108 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :query_id => q 111 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :query_id => q
109 assert !q.is_public? 112 assert !q.is_public?
110 assert !q.has_default_columns? 113 assert !q.has_default_columns?
111 assert_equal [:tracker, :subject, :priority, :category], q.columns.collect {|c| c.name} 114 assert_equal [:id, :tracker, :subject, :priority, :category], q.columns.collect {|c| c.name}
112 assert q.valid? 115 assert q.valid?
113 end 116 end
114 117
115 def test_create_global_query_with_custom_filters 118 def test_create_global_query_with_custom_filters
116 @request.session[:user_id] = 3 119 @request.session[:user_id] = 3
132 post :create, 135 post :create,
133 :default_columns => '1', 136 :default_columns => '1',
134 :operators => {"status_id" => "o"}, 137 :operators => {"status_id" => "o"},
135 :values => {"status_id" => ["1"]}, 138 :values => {"status_id" => ["1"]},
136 :query => {:name => "test_new_with_sort", 139 :query => {:name => "test_new_with_sort",
137 :is_public => "1", 140 :visibility => "2",
138 :sort_criteria => {"0" => ["due_date", "desc"], "1" => ["tracker", ""]}} 141 :sort_criteria => {"0" => ["due_date", "desc"], "1" => ["tracker", ""]}}
139 142
140 query = Query.find_by_name("test_new_with_sort") 143 query = Query.find_by_name("test_new_with_sort")
141 assert_not_nil query 144 assert_not_nil query
142 assert_equal [['due_date', 'desc'], ['tracker', 'asc']], query.sort_criteria 145 assert_equal [['due_date', 'desc'], ['tracker', 'asc']], query.sort_criteria
150 assert_response :success 153 assert_response :success
151 assert_template 'new' 154 assert_template 'new'
152 assert_select 'input[name=?]', 'query[name]' 155 assert_select 'input[name=?]', 'query[name]'
153 end 156 end
154 157
158 def test_create_global_query_from_gantt
159 @request.session[:user_id] = 1
160 assert_difference 'IssueQuery.count' do
161 post :create,
162 :gantt => 1,
163 :operators => {"status_id" => "o"},
164 :values => {"status_id" => ["1"]},
165 :query => {:name => "test_create_from_gantt",
166 :draw_relations => '1',
167 :draw_progress_line => '1'}
168 assert_response 302
169 end
170 query = IssueQuery.order('id DESC').first
171 assert_redirected_to "/issues/gantt?query_id=#{query.id}"
172 assert_equal true, query.draw_relations
173 assert_equal true, query.draw_progress_line
174 end
175
176 def test_create_project_query_from_gantt
177 @request.session[:user_id] = 1
178 assert_difference 'IssueQuery.count' do
179 post :create,
180 :project_id => 'ecookbook',
181 :gantt => 1,
182 :operators => {"status_id" => "o"},
183 :values => {"status_id" => ["1"]},
184 :query => {:name => "test_create_from_gantt",
185 :draw_relations => '0',
186 :draw_progress_line => '0'}
187 assert_response 302
188 end
189 query = IssueQuery.order('id DESC').first
190 assert_redirected_to "/projects/ecookbook/issues/gantt?query_id=#{query.id}"
191 assert_equal false, query.draw_relations
192 assert_equal false, query.draw_progress_line
193 end
194
155 def test_edit_global_public_query 195 def test_edit_global_public_query
156 @request.session[:user_id] = 1 196 @request.session[:user_id] = 1
157 get :edit, :id => 4 197 get :edit, :id => 4
158 assert_response :success 198 assert_response :success
159 assert_template 'edit' 199 assert_template 'edit'
160 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 200 assert_select 'input[name=?][value=2][checked=checked]', 'query[visibility]'
161 :name => 'query[is_public]',
162 :checked => 'checked' }
163 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 201 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
164 :name => 'query_is_for_all', 202 :name => 'query_is_for_all',
165 :checked => 'checked', 203 :checked => 'checked',
166 :disabled => 'disabled' } 204 :disabled => 'disabled' }
167 end 205 end
169 def test_edit_global_private_query 207 def test_edit_global_private_query
170 @request.session[:user_id] = 3 208 @request.session[:user_id] = 3
171 get :edit, :id => 3 209 get :edit, :id => 3
172 assert_response :success 210 assert_response :success
173 assert_template 'edit' 211 assert_template 'edit'
174 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', 212 assert_select 'input[name=?]', 'query[visibility]', 0
175 :name => 'query[is_public]' }
176 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 213 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
177 :name => 'query_is_for_all', 214 :name => 'query_is_for_all',
178 :checked => 'checked', 215 :checked => 'checked',
179 :disabled => 'disabled' } 216 :disabled => 'disabled' }
180 end 217 end
182 def test_edit_project_private_query 219 def test_edit_project_private_query
183 @request.session[:user_id] = 3 220 @request.session[:user_id] = 3
184 get :edit, :id => 2 221 get :edit, :id => 2
185 assert_response :success 222 assert_response :success
186 assert_template 'edit' 223 assert_template 'edit'
187 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', 224 assert_select 'input[name=?]', 'query[visibility]', 0
188 :name => 'query[is_public]' }
189 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 225 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
190 :name => 'query_is_for_all', 226 :name => 'query_is_for_all',
191 :checked => nil, 227 :checked => nil,
192 :disabled => nil } 228 :disabled => nil }
193 end 229 end
195 def test_edit_project_public_query 231 def test_edit_project_public_query
196 @request.session[:user_id] = 2 232 @request.session[:user_id] = 2
197 get :edit, :id => 1 233 get :edit, :id => 1
198 assert_response :success 234 assert_response :success
199 assert_template 'edit' 235 assert_template 'edit'
200 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 236 assert_select 'input[name=?][value=2][checked=checked]', 'query[visibility]'
201 :name => 'query[is_public]',
202 :checked => 'checked'
203 }
204 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', 237 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
205 :name => 'query_is_for_all', 238 :name => 'query_is_for_all',
206 :checked => nil, 239 :checked => nil,
207 :disabled => 'disabled' } 240 :disabled => 'disabled' }
208 end 241 end
232 :id => 3, 265 :id => 3,
233 :default_columns => '1', 266 :default_columns => '1',
234 :fields => ["status_id", "assigned_to_id"], 267 :fields => ["status_id", "assigned_to_id"],
235 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, 268 :operators => {"assigned_to_id" => "=", "status_id" => "o"},
236 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]}, 269 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]},
237 :query => {"name" => "test_edit_global_private_query", "is_public" => "1"} 270 :query => {"name" => "test_edit_global_private_query", "visibility" => "2"}
238 271
239 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 3 272 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 3
240 q = Query.find_by_name('test_edit_global_private_query') 273 q = Query.find_by_name('test_edit_global_private_query')
241 assert !q.is_public? 274 assert !q.is_public?
242 assert q.has_default_columns? 275 assert q.has_default_columns?
249 :id => 4, 282 :id => 4,
250 :default_columns => '1', 283 :default_columns => '1',
251 :fields => ["status_id", "assigned_to_id"], 284 :fields => ["status_id", "assigned_to_id"],
252 :operators => {"assigned_to_id" => "=", "status_id" => "o"}, 285 :operators => {"assigned_to_id" => "=", "status_id" => "o"},
253 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]}, 286 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
254 :query => {"name" => "test_edit_global_public_query", "is_public" => "1"} 287 :query => {"name" => "test_edit_global_public_query", "visibility" => "2"}
255 288
256 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 4 289 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 4
257 q = Query.find_by_name('test_edit_global_public_query') 290 q = Query.find_by_name('test_edit_global_public_query')
258 assert q.is_public? 291 assert q.is_public?
259 assert q.has_default_columns? 292 assert q.has_default_columns?