選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

queries_controller_test.rb 8.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. # redMine - project management software
  2. # Copyright (C) 2006-2008 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. require File.dirname(__FILE__) + '/../test_helper'
  18. require 'queries_controller'
  19. # Re-raise errors caught by the controller.
  20. class QueriesController; def rescue_action(e) raise e end; end
  21. class QueriesControllerTest < Test::Unit::TestCase
  22. fixtures :projects, :users, :members, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :queries
  23. def setup
  24. @controller = QueriesController.new
  25. @request = ActionController::TestRequest.new
  26. @response = ActionController::TestResponse.new
  27. User.current = nil
  28. end
  29. def test_get_new_project_query
  30. @request.session[:user_id] = 2
  31. get :new, :project_id => 1
  32. assert_response :success
  33. assert_template 'new'
  34. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  35. :name => 'query[is_public]',
  36. :checked => nil }
  37. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  38. :name => 'query_is_for_all',
  39. :checked => nil,
  40. :disabled => nil }
  41. end
  42. def test_get_new_global_query
  43. @request.session[:user_id] = 2
  44. get :new
  45. assert_response :success
  46. assert_template 'new'
  47. assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox',
  48. :name => 'query[is_public]' }
  49. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  50. :name => 'query_is_for_all',
  51. :checked => 'checked',
  52. :disabled => nil }
  53. end
  54. def test_new_project_public_query
  55. @request.session[:user_id] = 2
  56. post :new,
  57. :project_id => 'ecookbook',
  58. :confirm => '1',
  59. :default_columns => '1',
  60. :fields => ["status_id", "assigned_to_id"],
  61. :operators => {"assigned_to_id" => "=", "status_id" => "o"},
  62. :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
  63. :query => {"name" => "test_new_project_public_query", "is_public" => "1"}
  64. q = Query.find_by_name('test_new_project_public_query')
  65. assert_redirected_to :controller => 'issues', :action => 'index', :query_id => q
  66. assert q.is_public?
  67. assert q.has_default_columns?
  68. assert q.valid?
  69. end
  70. def test_new_project_private_query
  71. @request.session[:user_id] = 3
  72. post :new,
  73. :project_id => 'ecookbook',
  74. :confirm => '1',
  75. :default_columns => '1',
  76. :fields => ["status_id", "assigned_to_id"],
  77. :operators => {"assigned_to_id" => "=", "status_id" => "o"},
  78. :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
  79. :query => {"name" => "test_new_project_private_query", "is_public" => "1"}
  80. q = Query.find_by_name('test_new_project_private_query')
  81. assert_redirected_to :controller => 'issues', :action => 'index', :query_id => q
  82. assert !q.is_public?
  83. assert q.has_default_columns?
  84. assert q.valid?
  85. end
  86. def test_new_global_private_query_with_custom_columns
  87. @request.session[:user_id] = 3
  88. post :new,
  89. :confirm => '1',
  90. :fields => ["status_id", "assigned_to_id"],
  91. :operators => {"assigned_to_id" => "=", "status_id" => "o"},
  92. :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]},
  93. :query => {"name" => "test_new_global_private_query", "is_public" => "1", "column_names" => ["", "tracker", "subject", "priority", "category"]}
  94. q = Query.find_by_name('test_new_global_private_query')
  95. assert_redirected_to :controller => 'issues', :action => 'index', :query_id => q
  96. assert !q.is_public?
  97. assert !q.has_default_columns?
  98. assert_equal [:tracker, :subject, :priority, :category], q.columns.collect {|c| c.name}
  99. assert q.valid?
  100. end
  101. def test_get_edit_global_public_query
  102. @request.session[:user_id] = 1
  103. get :edit, :id => 4
  104. assert_response :success
  105. assert_template 'edit'
  106. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  107. :name => 'query[is_public]',
  108. :checked => 'checked' }
  109. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  110. :name => 'query_is_for_all',
  111. :checked => 'checked',
  112. :disabled => 'disabled' }
  113. end
  114. def test_edit_global_public_query
  115. @request.session[:user_id] = 1
  116. post :edit,
  117. :id => 4,
  118. :confirm => '1',
  119. :default_columns => '1',
  120. :fields => ["status_id", "assigned_to_id"],
  121. :operators => {"assigned_to_id" => "=", "status_id" => "o"},
  122. :values => { "assigned_to_id" => ["1"], "status_id" => ["1"]},
  123. :query => {"name" => "test_edit_global_public_query", "is_public" => "1"}
  124. assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 4
  125. q = Query.find_by_name('test_edit_global_public_query')
  126. assert q.is_public?
  127. assert q.has_default_columns?
  128. assert q.valid?
  129. end
  130. def test_get_edit_global_private_query
  131. @request.session[:user_id] = 3
  132. get :edit, :id => 3
  133. assert_response :success
  134. assert_template 'edit'
  135. assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox',
  136. :name => 'query[is_public]' }
  137. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  138. :name => 'query_is_for_all',
  139. :checked => 'checked',
  140. :disabled => 'disabled' }
  141. end
  142. def test_edit_global_private_query
  143. @request.session[:user_id] = 3
  144. post :edit,
  145. :id => 3,
  146. :confirm => '1',
  147. :default_columns => '1',
  148. :fields => ["status_id", "assigned_to_id"],
  149. :operators => {"assigned_to_id" => "=", "status_id" => "o"},
  150. :values => { "assigned_to_id" => ["me"], "status_id" => ["1"]},
  151. :query => {"name" => "test_edit_global_private_query", "is_public" => "1"}
  152. assert_redirected_to :controller => 'issues', :action => 'index', :query_id => 3
  153. q = Query.find_by_name('test_edit_global_private_query')
  154. assert !q.is_public?
  155. assert q.has_default_columns?
  156. assert q.valid?
  157. end
  158. def test_get_edit_project_private_query
  159. @request.session[:user_id] = 3
  160. get :edit, :id => 2
  161. assert_response :success
  162. assert_template 'edit'
  163. assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox',
  164. :name => 'query[is_public]' }
  165. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  166. :name => 'query_is_for_all',
  167. :checked => nil,
  168. :disabled => nil }
  169. end
  170. def test_get_edit_project_public_query
  171. @request.session[:user_id] = 2
  172. get :edit, :id => 1
  173. assert_response :success
  174. assert_template 'edit'
  175. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  176. :name => 'query[is_public]',
  177. :checked => 'checked'
  178. }
  179. assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
  180. :name => 'query_is_for_all',
  181. :checked => nil,
  182. :disabled => 'disabled' }
  183. end
  184. def test_destroy
  185. @request.session[:user_id] = 2
  186. post :destroy, :id => 1
  187. assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :set_filter => 1, :query_id => nil
  188. assert_nil Query.find_by_id(1)
  189. end
  190. end