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