annotate test/functional/queries_controller_test.rb @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents cbb26bc654de
children 433d4f72a19b
rev   line source
Chris@909 1 # Redmine - project management software
Chris@909 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@909 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@909 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@119 18 require File.expand_path('../../test_helper', __FILE__)
Chris@0 19 require 'queries_controller'
Chris@0 20
Chris@0 21 # Re-raise errors caught by the controller.
Chris@0 22 class QueriesController; def rescue_action(e) raise e end; end
Chris@0 23
Chris@0 24 class QueriesControllerTest < ActionController::TestCase
Chris@0 25 fixtures :projects, :users, :members, :member_roles, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :queries
Chris@909 26
Chris@0 27 def setup
Chris@0 28 @controller = QueriesController.new
Chris@0 29 @request = ActionController::TestRequest.new
Chris@0 30 @response = ActionController::TestResponse.new
Chris@0 31 User.current = nil
Chris@0 32 end
Chris@909 33
Chris@0 34 def test_get_new_project_query
Chris@0 35 @request.session[:user_id] = 2
Chris@0 36 get :new, :project_id => 1
Chris@0 37 assert_response :success
Chris@0 38 assert_template 'new'
Chris@0 39 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 40 :name => 'query[is_public]',
Chris@909 41 :checked => nil }
Chris@0 42 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 43 :name => 'query_is_for_all',
Chris@0 44 :checked => nil,
Chris@0 45 :disabled => nil }
Chris@0 46 end
Chris@909 47
Chris@0 48 def test_get_new_global_query
Chris@0 49 @request.session[:user_id] = 2
Chris@0 50 get :new
Chris@0 51 assert_response :success
Chris@0 52 assert_template 'new'
Chris@0 53 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@909 54 :name => 'query[is_public]' }
Chris@0 55 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 56 :name => 'query_is_for_all',
Chris@0 57 :checked => 'checked',
Chris@0 58 :disabled => nil }
Chris@0 59 end
Chris@909 60
Chris@0 61 def test_new_project_public_query
Chris@0 62 @request.session[:user_id] = 2
Chris@909 63 post :create,
Chris@909 64 :project_id => 'ecookbook',
Chris@0 65 :default_columns => '1',
Chris@441 66 :f => ["status_id", "assigned_to_id"],
Chris@441 67 :op => {"assigned_to_id" => "=", "status_id" => "o"},
Chris@441 68 :v => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
Chris@0 69 :query => {"name" => "test_new_project_public_query", "is_public" => "1"}
Chris@909 70
Chris@0 71 q = Query.find_by_name('test_new_project_public_query')
Chris@0 72 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q
Chris@0 73 assert q.is_public?
Chris@0 74 assert q.has_default_columns?
Chris@0 75 assert q.valid?
Chris@0 76 end
Chris@909 77
Chris@0 78 def test_new_project_private_query
Chris@0 79 @request.session[:user_id] = 3
Chris@909 80 post :create,
Chris@909 81 :project_id => 'ecookbook',
Chris@0 82 :default_columns => '1',
Chris@0 83 :fields => ["status_id", "assigned_to_id"],
Chris@0 84 :operators => {"assigned_to_id" => "=", "status_id" => "o"},
Chris@0 85 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
Chris@0 86 :query => {"name" => "test_new_project_private_query", "is_public" => "1"}
Chris@909 87
Chris@0 88 q = Query.find_by_name('test_new_project_private_query')
Chris@0 89 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q
Chris@0 90 assert !q.is_public?
Chris@0 91 assert q.has_default_columns?
Chris@0 92 assert q.valid?
Chris@0 93 end
Chris@909 94
Chris@0 95 def test_new_global_private_query_with_custom_columns
Chris@0 96 @request.session[:user_id] = 3
Chris@909 97 post :create,
Chris@0 98 :fields => ["status_id", "assigned_to_id"],
Chris@0 99 :operators => {"assigned_to_id" => "=", "status_id" => "o"},
Chris@0 100 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]},
Chris@441 101 :query => {"name" => "test_new_global_private_query", "is_public" => "1"},
Chris@441 102 :c => ["", "tracker", "subject", "priority", "category"]
Chris@909 103
Chris@0 104 q = Query.find_by_name('test_new_global_private_query')
Chris@0 105 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :query_id => q
Chris@0 106 assert !q.is_public?
Chris@0 107 assert !q.has_default_columns?
Chris@0 108 assert_equal [:tracker, :subject, :priority, :category], q.columns.collect {|c| c.name}
Chris@0 109 assert q.valid?
Chris@0 110 end
Chris@909 111
Chris@909 112 def test_new_global_query_with_custom_filters
Chris@909 113 @request.session[:user_id] = 3
Chris@909 114 post :create,
Chris@909 115 :fields => ["assigned_to_id"],
Chris@909 116 :operators => {"assigned_to_id" => "="},
Chris@909 117 :values => { "assigned_to_id" => ["me"]},
Chris@909 118 :query => {"name" => "test_new_global_query"}
Chris@909 119
Chris@909 120 q = Query.find_by_name('test_new_global_query')
Chris@909 121 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :query_id => q
Chris@909 122 assert !q.has_filter?(:status_id)
Chris@909 123 assert_equal ['assigned_to_id'], q.filters.keys
Chris@909 124 assert q.valid?
Chris@909 125 end
Chris@909 126
Chris@0 127 def test_new_with_sort
Chris@0 128 @request.session[:user_id] = 1
Chris@909 129 post :create,
Chris@0 130 :default_columns => '1',
Chris@0 131 :operators => {"status_id" => "o"},
Chris@0 132 :values => {"status_id" => ["1"]},
Chris@0 133 :query => {:name => "test_new_with_sort",
Chris@909 134 :is_public => "1",
Chris@0 135 :sort_criteria => {"0" => ["due_date", "desc"], "1" => ["tracker", ""]}}
Chris@909 136
Chris@0 137 query = Query.find_by_name("test_new_with_sort")
Chris@0 138 assert_not_nil query
Chris@0 139 assert_equal [['due_date', 'desc'], ['tracker', 'asc']], query.sort_criteria
Chris@0 140 end
Chris@909 141
Chris@0 142 def test_get_edit_global_public_query
Chris@0 143 @request.session[:user_id] = 1
Chris@0 144 get :edit, :id => 4
Chris@0 145 assert_response :success
Chris@0 146 assert_template 'edit'
Chris@0 147 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 148 :name => 'query[is_public]',
Chris@909 149 :checked => 'checked' }
Chris@0 150 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 151 :name => 'query_is_for_all',
Chris@0 152 :checked => 'checked',
Chris@0 153 :disabled => 'disabled' }
Chris@0 154 end
Chris@0 155
Chris@0 156 def test_edit_global_public_query
Chris@0 157 @request.session[:user_id] = 1
Chris@909 158 put :update,
Chris@909 159 :id => 4,
Chris@0 160 :default_columns => '1',
Chris@0 161 :fields => ["status_id", "assigned_to_id"],
Chris@0 162 :operators => {"assigned_to_id" => "=", "status_id" => "o"},
Chris@0 163 :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
Chris@0 164 :query => {"name" => "test_edit_global_public_query", "is_public" => "1"}
Chris@909 165
Chris@0 166 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 4
Chris@0 167 q = Query.find_by_name('test_edit_global_public_query')
Chris@0 168 assert q.is_public?
Chris@0 169 assert q.has_default_columns?
Chris@0 170 assert q.valid?
Chris@0 171 end
Chris@909 172
Chris@0 173 def test_get_edit_global_private_query
Chris@0 174 @request.session[:user_id] = 3
Chris@0 175 get :edit, :id => 3
Chris@0 176 assert_response :success
Chris@0 177 assert_template 'edit'
Chris@0 178 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@909 179 :name => 'query[is_public]' }
Chris@0 180 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 181 :name => 'query_is_for_all',
Chris@0 182 :checked => 'checked',
Chris@0 183 :disabled => 'disabled' }
Chris@0 184 end
Chris@909 185
Chris@0 186 def test_edit_global_private_query
Chris@0 187 @request.session[:user_id] = 3
Chris@909 188 put :update,
Chris@909 189 :id => 3,
Chris@0 190 :default_columns => '1',
Chris@0 191 :fields => ["status_id", "assigned_to_id"],
Chris@0 192 :operators => {"assigned_to_id" => "=", "status_id" => "o"},
Chris@0 193 :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]},
Chris@0 194 :query => {"name" => "test_edit_global_private_query", "is_public" => "1"}
Chris@909 195
Chris@0 196 assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 3
Chris@0 197 q = Query.find_by_name('test_edit_global_private_query')
Chris@0 198 assert !q.is_public?
Chris@0 199 assert q.has_default_columns?
Chris@0 200 assert q.valid?
Chris@0 201 end
Chris@909 202
Chris@0 203 def test_get_edit_project_private_query
Chris@0 204 @request.session[:user_id] = 3
Chris@0 205 get :edit, :id => 2
Chris@0 206 assert_response :success
Chris@0 207 assert_template 'edit'
Chris@0 208 assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@909 209 :name => 'query[is_public]' }
Chris@0 210 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 211 :name => 'query_is_for_all',
Chris@0 212 :checked => nil,
Chris@0 213 :disabled => nil }
Chris@0 214 end
Chris@909 215
Chris@0 216 def test_get_edit_project_public_query
Chris@0 217 @request.session[:user_id] = 2
Chris@0 218 get :edit, :id => 1
Chris@0 219 assert_response :success
Chris@0 220 assert_template 'edit'
Chris@0 221 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 222 :name => 'query[is_public]',
Chris@0 223 :checked => 'checked'
Chris@909 224 }
Chris@0 225 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
Chris@0 226 :name => 'query_is_for_all',
Chris@0 227 :checked => nil,
Chris@0 228 :disabled => 'disabled' }
Chris@0 229 end
Chris@909 230
Chris@0 231 def test_get_edit_sort_criteria
Chris@0 232 @request.session[:user_id] = 1
Chris@0 233 get :edit, :id => 5
Chris@0 234 assert_response :success
Chris@0 235 assert_template 'edit'
Chris@0 236 assert_tag :tag => 'select', :attributes => { :name => 'query[sort_criteria][0][]' },
Chris@0 237 :child => { :tag => 'option', :attributes => { :value => 'priority',
Chris@0 238 :selected => 'selected' } }
Chris@0 239 assert_tag :tag => 'select', :attributes => { :name => 'query[sort_criteria][0][]' },
Chris@0 240 :child => { :tag => 'option', :attributes => { :value => 'desc',
Chris@0 241 :selected => 'selected' } }
Chris@0 242 end
Chris@909 243
Chris@0 244 def test_destroy
Chris@0 245 @request.session[:user_id] = 2
Chris@909 246 delete :destroy, :id => 1
Chris@0 247 assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :set_filter => 1, :query_id => nil
Chris@0 248 assert_nil Query.find_by_id(1)
Chris@0 249 end
Chris@0 250 end