annotate .svn/pristine/3b/3b0a04b81b3503971b4e570669380aa1831579cc.svn-base @ 1327:287f201c2802 redmine-2.2-integration

Add italic
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Wed, 19 Jun 2013 20:56:22 +0100
parents cbb26bc654de
children
rev   line source
Chris@909 1 require File.expand_path('../../test_helper', __FILE__)
Chris@909 2 require 'search_controller'
Chris@909 3
Chris@909 4 # Re-raise errors caught by the controller.
Chris@909 5 class SearchController; def rescue_action(e) raise e end; end
Chris@909 6
Chris@909 7 class SearchControllerTest < ActionController::TestCase
Chris@909 8 fixtures :projects, :enabled_modules, :roles, :users, :members, :member_roles,
Chris@909 9 :issues, :trackers, :issue_statuses,
Chris@909 10 :custom_fields, :custom_values,
Chris@909 11 :repositories, :changesets
Chris@909 12
Chris@909 13 def setup
Chris@909 14 @controller = SearchController.new
Chris@909 15 @request = ActionController::TestRequest.new
Chris@909 16 @response = ActionController::TestResponse.new
Chris@909 17 User.current = nil
Chris@909 18 end
Chris@909 19
Chris@909 20 def test_search_for_projects
Chris@909 21 get :index
Chris@909 22 assert_response :success
Chris@909 23 assert_template 'index'
Chris@909 24
Chris@909 25 get :index, :q => "cook"
Chris@909 26 assert_response :success
Chris@909 27 assert_template 'index'
Chris@909 28 assert assigns(:results).include?(Project.find(1))
Chris@909 29 end
Chris@909 30
Chris@909 31 def test_search_all_projects
Chris@909 32 get :index, :q => 'recipe subproject commit', :all_words => ''
Chris@909 33 assert_response :success
Chris@909 34 assert_template 'index'
Chris@909 35
Chris@909 36 assert assigns(:results).include?(Issue.find(2))
Chris@909 37 assert assigns(:results).include?(Issue.find(5))
Chris@909 38 assert assigns(:results).include?(Changeset.find(101))
Chris@909 39 assert_tag :dt, :attributes => { :class => /issue/ },
Chris@909 40 :child => { :tag => 'a', :content => /Add ingredients categories/ },
Chris@909 41 :sibling => { :tag => 'dd', :content => /should be classified by categories/ }
Chris@909 42
Chris@909 43 assert assigns(:results_by_type).is_a?(Hash)
Chris@909 44 assert_equal 5, assigns(:results_by_type)['changesets']
Chris@909 45 assert_tag :a, :content => 'Changesets (5)'
Chris@909 46 end
Chris@909 47
Chris@909 48 def test_search_issues
Chris@909 49 get :index, :q => 'issue', :issues => 1
Chris@909 50 assert_response :success
Chris@909 51 assert_template 'index'
Chris@909 52
Chris@909 53 assert_equal true, assigns(:all_words)
Chris@909 54 assert_equal false, assigns(:titles_only)
Chris@909 55 assert assigns(:results).include?(Issue.find(8))
Chris@909 56 assert assigns(:results).include?(Issue.find(5))
Chris@909 57 assert_tag :dt, :attributes => { :class => /issue closed/ },
Chris@909 58 :child => { :tag => 'a', :content => /Closed/ }
Chris@909 59 end
Chris@909 60
Chris@909 61 def test_search_project_and_subprojects
Chris@909 62 get :index, :id => 1, :q => 'recipe subproject', :scope => 'subprojects', :all_words => ''
Chris@909 63 assert_response :success
Chris@909 64 assert_template 'index'
Chris@909 65 assert assigns(:results).include?(Issue.find(1))
Chris@909 66 assert assigns(:results).include?(Issue.find(5))
Chris@909 67 end
Chris@909 68
Chris@909 69 def test_search_without_searchable_custom_fields
Chris@909 70 CustomField.update_all "searchable = #{ActiveRecord::Base.connection.quoted_false}"
Chris@909 71
Chris@909 72 get :index, :id => 1
Chris@909 73 assert_response :success
Chris@909 74 assert_template 'index'
Chris@909 75 assert_not_nil assigns(:project)
Chris@909 76
Chris@909 77 get :index, :id => 1, :q => "can"
Chris@909 78 assert_response :success
Chris@909 79 assert_template 'index'
Chris@909 80 end
Chris@909 81
Chris@909 82 def test_search_with_searchable_custom_fields
Chris@909 83 get :index, :id => 1, :q => "stringforcustomfield"
Chris@909 84 assert_response :success
Chris@909 85 results = assigns(:results)
Chris@909 86 assert_not_nil results
Chris@909 87 assert_equal 1, results.size
Chris@909 88 assert results.include?(Issue.find(7))
Chris@909 89 end
Chris@909 90
Chris@909 91 def test_search_all_words
Chris@909 92 # 'all words' is on by default
Chris@909 93 get :index, :id => 1, :q => 'recipe updating saving', :all_words => '1'
Chris@909 94 assert_equal true, assigns(:all_words)
Chris@909 95 results = assigns(:results)
Chris@909 96 assert_not_nil results
Chris@909 97 assert_equal 1, results.size
Chris@909 98 assert results.include?(Issue.find(3))
Chris@909 99 end
Chris@909 100
Chris@909 101 def test_search_one_of_the_words
Chris@909 102 get :index, :id => 1, :q => 'recipe updating saving', :all_words => ''
Chris@909 103 assert_equal false, assigns(:all_words)
Chris@909 104 results = assigns(:results)
Chris@909 105 assert_not_nil results
Chris@909 106 assert_equal 3, results.size
Chris@909 107 assert results.include?(Issue.find(3))
Chris@909 108 end
Chris@909 109
Chris@909 110 def test_search_titles_only_without_result
Chris@909 111 get :index, :id => 1, :q => 'recipe updating saving', :titles_only => '1'
Chris@909 112 results = assigns(:results)
Chris@909 113 assert_not_nil results
Chris@909 114 assert_equal 0, results.size
Chris@909 115 end
Chris@909 116
Chris@909 117 def test_search_titles_only
Chris@909 118 get :index, :id => 1, :q => 'recipe', :titles_only => '1'
Chris@909 119 assert_equal true, assigns(:titles_only)
Chris@909 120 results = assigns(:results)
Chris@909 121 assert_not_nil results
Chris@909 122 assert_equal 2, results.size
Chris@909 123 end
Chris@909 124
Chris@909 125 def test_search_content
Chris@909 126 Issue.update_all("description = 'This is a searchkeywordinthecontent'", "id=1")
Chris@909 127
Chris@909 128 get :index, :id => 1, :q => 'searchkeywordinthecontent', :titles_only => ''
Chris@909 129 assert_equal false, assigns(:titles_only)
Chris@909 130 results = assigns(:results)
Chris@909 131 assert_not_nil results
Chris@909 132 assert_equal 1, results.size
Chris@909 133 end
Chris@909 134
Chris@909 135 def test_search_with_invalid_project_id
Chris@909 136 get :index, :id => 195, :q => 'recipe'
Chris@909 137 assert_response 404
Chris@909 138 assert_nil assigns(:results)
Chris@909 139 end
Chris@909 140
Chris@909 141 def test_quick_jump_to_issue
Chris@909 142 # issue of a public project
Chris@909 143 get :index, :q => "3"
Chris@909 144 assert_redirected_to '/issues/3'
Chris@909 145
Chris@909 146 # issue of a private project
Chris@909 147 get :index, :q => "4"
Chris@909 148 assert_response :success
Chris@909 149 assert_template 'index'
Chris@909 150 end
Chris@909 151
Chris@909 152 def test_large_integer
Chris@909 153 get :index, :q => '4615713488'
Chris@909 154 assert_response :success
Chris@909 155 assert_template 'index'
Chris@909 156 end
Chris@909 157
Chris@909 158 def test_tokens_with_quotes
Chris@909 159 get :index, :id => 1, :q => '"good bye" hello "bye bye"'
Chris@909 160 assert_equal ["good bye", "hello", "bye bye"], assigns(:tokens)
Chris@909 161 end
Chris@909 162 end