Commit 558cde5142dd3e37926c64015123cee40e49bb4d

Authored by Braulio Bhavamitra
1 parent 91d24abf

Initial merge of browse and search tests

test/functional/browse_controller_test.rb
@@ -1,375 +0,0 @@ @@ -1,375 +0,0 @@
1 -require File.dirname(__FILE__) + '/../test_helper'  
2 -require 'browse_controller'  
3 -  
4 -# Re-raise errors caught by the controller.  
5 -class BrowseController; def rescue_action(e) raise e end; end  
6 -  
7 -class BrowseControllerTest < Test::Unit::TestCase  
8 -  
9 - def setup  
10 - Test::Unit::TestCase::setup  
11 - @controller = BrowseController.new  
12 - @request = ActionController::TestRequest.new  
13 - @request.stubs(:ssl?).returns(false)  
14 - @response = ActionController::TestResponse.new  
15 -  
16 - # By pass user validation on person creation  
17 - user = mock()  
18 - user.stubs(:id).returns(1)  
19 - user.stubs(:valid?).returns(true)  
20 - user.stubs(:email).returns('some@test.com')  
21 - user.stubs(:save!).returns(true)  
22 - Person.any_instance.stubs(:user).returns(user)  
23 - @profile = create_user('testinguser').person  
24 - Article.destroy_all  
25 - end  
26 - attr_reader :profile  
27 -  
28 - should 'search for people' do  
29 - Person.delete_all  
30 - small = create(Person, :name => 'A small person for testing', :user_id => 1)  
31 - create(Person, :name => 'A big person for testing', :user_id => 2)  
32 -  
33 - get :people, :query => 'small'  
34 - assert_equal [small], assigns(:results)  
35 - end  
36 -  
37 - should 'list all people order by more recent one by default' do  
38 - Person.delete_all  
39 - p1 = create(Person, :name => 'Testing person 1', :user_id => 1, :created_at => DateTime.now - 2)  
40 - p2 = create(Person, :name => 'Testing person 2', :user_id => 2, :created_at => DateTime.now - 1)  
41 - p3 = create(Person, :name => 'Testing person 3', :user_id => 3)  
42 -  
43 - get :people  
44 - assert_equal [p3,p2,p1] , assigns(:results)  
45 - end  
46 -  
47 - should 'paginate search of people in groups of 27' do  
48 - Person.delete_all  
49 -  
50 - 1.upto(30).map do |n|  
51 - create(Person, :name => 'Testing person', :user_id => n)  
52 - end  
53 -  
54 - get :people  
55 - assert_equal 30 , Person.count  
56 - assert_equal 27 , assigns(:results).count  
57 - assert_tag :a, '', :attributes => {:class => 'next_page'}  
58 - end  
59 -  
60 - should 'paginate ferret search of people in groups of 27' do  
61 - Person.delete_all  
62 -  
63 - 1.upto(30).map do |n|  
64 - create(Person, :name => 'Testing person', :user_id => n)  
65 - end  
66 -  
67 - get :people, :query => 'Testing'  
68 - assert_equal 27 , assigns(:results).count  
69 - assert_tag :a, '', :attributes => {:class => 'next_page'}  
70 - end  
71 -  
72 - should 'not return nil results in the more_active people list' do  
73 - Profile.delete_all  
74 - p1 = fast_create(Person)  
75 - p2 = fast_create(Person)  
76 - p3 = fast_create(Person)  
77 - fast_create(Article, :profile_id => p1, :created_at => 1.day.ago)  
78 - fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)  
79 - fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)  
80 - fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)  
81 - fast_create(Article, :profile_id => p3, :created_at => 1.day.ago)  
82 -  
83 - per_page = 1  
84 - @controller.stubs(:per_page).returns(per_page)  
85 -  
86 - get :people, :filter => 'more_active'  
87 -  
88 - assert_equal Person.count/per_page, assigns(:results).total_pages  
89 - end  
90 -  
91 - should 'list all people filter by more active' do  
92 - Person.delete_all  
93 - p1 = create(Person, :name => 'Testing person 1', :user_id => 1)  
94 - p2 = create(Person, :name => 'Testing person 2', :user_id => 2)  
95 - p3 = create(Person, :name => 'Testing person 3', :user_id => 3)  
96 - ActionTracker::Record.delete_all  
97 - fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => p1, :created_at => Time.now)  
98 - fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => p2, :created_at => Time.now)  
99 - fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => p2, :created_at => Time.now)  
100 - get :people, :filter => 'more_active'  
101 - assert_equal [p2,p1,p3] , assigns(:results)  
102 - end  
103 -  
104 - should 'filter more popular people' do  
105 - Person.delete_all  
106 - p1 = create(Person, :name => 'Testing person 1', :user_id => 1)  
107 - p2 = create(Person, :name => 'Testing person 2', :user_id => 2)  
108 - p3 = create(Person, :name => 'Testing person 3', :user_id => 3)  
109 -  
110 - p1.add_friend(p2)  
111 - p2.add_friend(p1)  
112 - p2.add_friend(p3)  
113 - get :people, :filter => 'more_popular'  
114 - assert_equal [p2,p1,p3] , assigns(:results)  
115 - end  
116 -  
117 - should 'the people filter be only the hardcoded one' do  
118 - get :people, :filter => 'more_recent'  
119 - assert_equal 'more_recent' , assigns(:filter)  
120 -  
121 - get :people, :filter => 'more_active'  
122 - assert_equal 'more_active' , assigns(:filter)  
123 -  
124 - get :people, :filter => 'more_popular'  
125 - assert_equal 'more_popular' , assigns(:filter)  
126 -  
127 - get :people, :filter => 'more_anything'  
128 - assert_equal 'more_recent' , assigns(:filter)  
129 - end  
130 -  
131 - should 'the people filter define the title' do  
132 - get :people, :filter => 'more_recent'  
133 - assert_equal 'More recent people' , assigns(:title)  
134 - assert_tag :h1, :content => 'More recent people'  
135 -  
136 - get :people, :filter => 'more_active'  
137 - assert_equal 'More active people' , assigns(:title)  
138 - assert_tag :h1, :content => 'More active people'  
139 -  
140 - get :people, :filter => 'more_popular'  
141 - assert_equal 'More popular people' , assigns(:title)  
142 - assert_tag :h1, :content => 'More popular people'  
143 -  
144 - get :people, :filter => 'more_anything'  
145 - assert_equal 'More recent people' , assigns(:title)  
146 - assert_tag :h1, :content => 'More recent people'  
147 - end  
148 -  
149 - should 'search for community' do  
150 - small = create(Community, :name => 'A small community for testing')  
151 - create(Community, :name => 'A big community for testing')  
152 -  
153 - get :communities, :query => 'small'  
154 - assert_equal [small], assigns(:results)  
155 - end  
156 -  
157 - should 'list all community order by more recent one by default' do  
158 - c1 = create(Community, :name => 'Testing community 1', :created_at => DateTime.now - 2)  
159 - c2 = create(Community, :name => 'Testing community 2', :created_at => DateTime.now - 1)  
160 - c3 = create(Community, :name => 'Testing community 3')  
161 -  
162 - get :communities  
163 - assert_equal [c3,c2,c1] , assigns(:results)  
164 - end  
165 -  
166 - should 'paginate search of communities in groups of 27' do  
167 - 1.upto(30).map do |n|  
168 - create(Community, :name => 'Testing community')  
169 - end  
170 -  
171 - get :communities  
172 - assert_equal 30 , Community.count  
173 - assert_equal 27 , assigns(:results).count  
174 - assert_tag :a, '', :attributes => {:class => 'next_page'}  
175 - end  
176 -  
177 - should 'paginate ferret search of communities in groups of 27' do  
178 - 1.upto(30).map do |n|  
179 - create(Community, :name => 'Testing community')  
180 - end  
181 -  
182 - get :communities, :query => 'Testing'  
183 - assert_equal 27 , assigns(:results).count  
184 - assert_tag :a, '', :attributes => {:class => 'next_page'}  
185 - end  
186 -  
187 - should 'not return nil results in the more_active communities list' do  
188 - Profile.delete_all  
189 - c1 = fast_create(Community)  
190 - c2 = fast_create(Community)  
191 - c3 = fast_create(Community)  
192 - fast_create(Article, :profile_id => c1, :created_at => 1.day.ago)  
193 - fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)  
194 - fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)  
195 - fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)  
196 - fast_create(Article, :profile_id => c3, :created_at => 1.day.ago)  
197 -  
198 - per_page = 1  
199 - @controller.stubs(:per_page).returns(per_page)  
200 -  
201 - get :communities, :filter => 'more_active'  
202 -  
203 - assert_equal Community.count/per_page, assigns(:results).total_pages  
204 - end  
205 -  
206 -  
207 - should 'list all communities filter by more active' do  
208 - person = fast_create(Person)  
209 - c1 = create(Community, :name => 'Testing community 1')  
210 - c2 = create(Community, :name => 'Testing community 2')  
211 - c3 = create(Community, :name => 'Testing community 3')  
212 - ActionTracker::Record.delete_all  
213 - fast_create(ActionTracker::Record, :target_id => c1, :user_type => 'Profile', :user_id => person, :created_at => Time.now)  
214 - fast_create(ActionTracker::Record, :target_id => c2, :user_type => 'Profile', :user_id => person, :created_at => Time.now)  
215 - fast_create(ActionTracker::Record, :target_id => c2, :user_type => 'Profile', :user_id => person, :created_at => Time.now)  
216 - get :communities, :filter => 'more_active'  
217 - assert_equal [c2,c1,c3] , assigns(:results)  
218 - end  
219 -  
220 - should 'filter more popular communities' do  
221 - Person.delete_all  
222 - Community.delete_all  
223 - c1 = create(Community, :name => 'Testing community 1')  
224 - c2 = create(Community, :name => 'Testing community 2')  
225 -  
226 - p1 = create(Person, :name => 'Testing person 1', :user_id => 1)  
227 - p2 = create(Person, :name => 'Testing person 2', :user_id => 2)  
228 - c1.add_member(p1)  
229 - c2.add_member(p1)  
230 - c2.add_member(p2)  
231 - get :communities, :filter => 'more_popular'  
232 - assert_equal [c2,c1] , assigns(:results)  
233 - end  
234 -  
235 - should 'the communities filter be only the hardcoded one' do  
236 - get :communities, :filter => 'more_recent'  
237 - assert_equal 'more_recent' , assigns(:filter)  
238 -  
239 - get :communities, :filter => 'more_active'  
240 - assert_equal 'more_active' , assigns(:filter)  
241 -  
242 - get :communities, :filter => 'more_popular'  
243 - assert_equal 'more_popular' , assigns(:filter)  
244 -  
245 - get :communities, :filter => 'more_anything'  
246 - assert_equal 'more_recent' , assigns(:filter)  
247 - end  
248 -  
249 - should 'the communities filter define the title' do  
250 - get :communities, :filter => 'more_recent'  
251 - assert_equal 'More recent communities' , assigns(:title)  
252 - assert_tag :h1, :content => 'More recent communities'  
253 -  
254 - get :communities, :filter => 'more_active'  
255 - assert_equal 'More active communities' , assigns(:title)  
256 - assert_tag :h1, :content => 'More active communities'  
257 -  
258 - get :communities, :filter => 'more_popular'  
259 - assert_equal 'More popular communities' , assigns(:title)  
260 - assert_tag :h1, :content => 'More popular communities'  
261 -  
262 - get :communities, :filter => 'more_anything'  
263 - assert_equal 'More recent communities' , assigns(:title)  
264 - assert_tag :h1, :content => 'More recent communities'  
265 - end  
266 -  
267 - should "only include visible people in more_recent filter" do  
268 - # assuming that all filters behave the same!  
269 - p1 = fast_create(Person, :visible => false)  
270 - get :people, :filter => 'more_recent'  
271 - assert_not_includes assigns(:results), p1  
272 - end  
273 -  
274 - should "only include visible communities in more_recent filter" do  
275 - # assuming that all filters behave the same!  
276 - p1 = fast_create(Community, :visible => false)  
277 - get :communities, :filter => 'more_recent'  
278 - assert_not_includes assigns(:results), p1  
279 - end  
280 -  
281 - should 'search for contents' do  
282 - small = create(TinyMceArticle, :name => 'Testing article', :body => 'A small article for testing', :profile => profile)  
283 - create(TinyMceArticle, :name => 'Testing article 2', :body => 'A big article for testing', :profile => profile)  
284 -  
285 - get :contents, :query => 'small'  
286 - assert_equal [small], assigns(:results)  
287 - end  
288 -  
289 - should 'list all contents ordered by more recent by default' do  
290 - c1 = create(TinyMceArticle, :name => 'Testing article 1', :body => 'Article body 1', :profile => profile, :created_at => DateTime.now - 2)  
291 - c2 = create(TinyMceArticle, :name => 'Testing article 2', :body => 'Article body 2', :profile => profile, :created_at => DateTime.now - 1)  
292 - c3 = create(TinyMceArticle, :name => 'Testing article 3', :body => 'Article body 3', :profile => profile)  
293 -  
294 - get :contents  
295 - assert_equal [c3,c2,c1], assigns(:results)  
296 - end  
297 -  
298 - should 'paginate search of contents in groups of 27' do  
299 - 1.upto(30).map do |n|  
300 - create(TinyMceArticle, :name => "Testing article #{n}", :body => "Article body #{n}", :profile => profile)  
301 - end  
302 -  
303 - get :contents  
304 - assert_equal 27 , assigns(:results).count  
305 - assert_tag :a, '', :attributes => {:class => 'next_page'}  
306 - end  
307 -  
308 - should 'paginate ferret search of contents in groups of 27' do  
309 - 1.upto(30).map do |n|  
310 - create(TinyMceArticle, :name => "Testing article #{n}", :body => "Article body #{n}", :profile => profile)  
311 - end  
312 -  
313 - get :contents, :query => 'Testing'  
314 - assert_equal 27 , assigns(:results).count  
315 - assert_tag :a, '', :attributes => {:class => 'next_page'}  
316 - end  
317 -  
318 - should 'list all contents filter by more comments' do  
319 - article1 = fast_create(TinyMceArticle, :body => '<p>Article to test browse contents', :profile_id => profile.id, :comments_count => 5)  
320 - article2 = fast_create(TinyMceArticle, :body => '<p>Another article to test browse contents</p>', :profile_id => profile.id, :comments_count => 10)  
321 - article3 = fast_create(TinyMceArticle, :body => '<p>Another article to test browse contents</p>', :profile_id => profile.id, :comments_count => 1)  
322 -  
323 - get :contents, :filter => 'more_comments'  
324 - assert_equal [article2,article1,article3] , assigns(:results)  
325 - end  
326 -  
327 - should 'list all contents filter by more views' do  
328 - article1 = fast_create(TinyMceArticle, :body => '<p>Article to test browse contents', :profile_id => profile.id, :hits => 5)  
329 - article2 = fast_create(TinyMceArticle, :body => '<p>Another article to test browse contents</p>', :profile_id => profile.id, :hits => 10)  
330 - article3 = fast_create(TinyMceArticle, :body => '<p>Another article to test browse contents</p>', :profile_id => profile.id, :hits => 1)  
331 -  
332 - get :contents, :filter => 'more_views'  
333 - assert_equal [article2,article1,article3], assigns(:results)  
334 - end  
335 -  
336 - should 'have the more_recent filter by default' do  
337 - get :contents, :filter => 'more_recent'  
338 - assert_equal 'more_recent' , assigns(:filter)  
339 -  
340 - get :contents, :filter => 'more_comments'  
341 - assert_equal 'more_comments' , assigns(:filter)  
342 -  
343 - get :contents, :filter => 'more_views'  
344 - assert_equal 'more_views' , assigns(:filter)  
345 -  
346 - get :contents, :filter => 'more_anything'  
347 - assert_equal 'more_recent' , assigns(:filter)  
348 - end  
349 -  
350 - should 'the contents filter define the title' do  
351 - get :contents, :filter => 'more_recent'  
352 - assert_equal 'More recent contents' , assigns(:title)  
353 - assert_tag :h1, :content => 'More recent contents'  
354 -  
355 - get :contents, :filter => 'more_views'  
356 - assert_equal 'Most viewed contents' , assigns(:title)  
357 - assert_tag :h1, :content => 'Most viewed contents'  
358 -  
359 - get :contents, :filter => 'more_comments'  
360 - assert_equal 'Most commented contents' , assigns(:title)  
361 - assert_tag :h1, :content => 'Most commented contents'  
362 -  
363 - get :contents, :filter => 'more_anything'  
364 - assert_equal 'More recent contents' , assigns(:title)  
365 - assert_tag :h1, :content => 'More recent contents'  
366 - end  
367 -  
368 - should "only include published contents in more_recent filter" do  
369 - # assuming that all filters behave the same!  
370 - article = fast_create(TinyMceArticle, :body => '<p>Article to test browse contents', :profile_id => profile.id, :published => false)  
371 - get :contents, :filter => 'more_recent'  
372 - assert_not_includes assigns(:results), article  
373 - end  
374 -  
375 -end  
test/functional/search_controller_test.rb
@@ -9,6 +9,7 @@ class SearchControllerTest &lt; Test::Unit::TestCase @@ -9,6 +9,7 @@ class SearchControllerTest &lt; Test::Unit::TestCase
9 Test::Unit::TestCase::setup 9 Test::Unit::TestCase::setup
10 @controller = SearchController.new 10 @controller = SearchController.new
11 @request = ActionController::TestRequest.new 11 @request = ActionController::TestRequest.new
  12 + @request.stubs(:ssl?).returns(false)
12 @response = ActionController::TestResponse.new 13 @response = ActionController::TestResponse.new
13 14
14 @category = Category.create!(:name => 'my category', :environment => Environment.default) 15 @category = Category.create!(:name => 'my category', :environment => Environment.default)
@@ -18,6 +19,14 @@ class SearchControllerTest &lt; Test::Unit::TestCase @@ -18,6 +19,14 @@ class SearchControllerTest &lt; Test::Unit::TestCase
18 domain.save! 19 domain.save!
19 20
20 @product_category = fast_create(ProductCategory) 21 @product_category = fast_create(ProductCategory)
  22 +
  23 + # By pass user validation on person creation
  24 + user = mock()
  25 + user.stubs(:id).returns(1)
  26 + user.stubs(:valid?).returns(true)
  27 + user.stubs(:email).returns('some@test.com')
  28 + user.stubs(:save!).returns(true)
  29 + Person.any_instance.stubs(:user).returns(user)
21 end 30 end
22 31
23 def create_article_with_optional_category(name, profile, category = nil) 32 def create_article_with_optional_category(name, profile, category = nil)
@@ -1097,6 +1106,259 @@ class SearchControllerTest &lt; Test::Unit::TestCase @@ -1097,6 +1106,259 @@ class SearchControllerTest &lt; Test::Unit::TestCase
1097 assert_tag :tag => 'a', :content => /Maria Birthday/ 1106 assert_tag :tag => 'a', :content => /Maria Birthday/
1098 end 1107 end
1099 1108
  1109 + should 'search for people' do
  1110 + Person.delete_all
  1111 + small = create(Person, :name => 'A small person for testing', :user_id => 1)
  1112 + create(Person, :name => 'A big person for testing', :user_id => 2)
  1113 +
  1114 + get :people, :query => 'small'
  1115 + assert_equal [small], assigns(:results)
  1116 + end
  1117 +
  1118 + should 'list all people order by more recent one by default' do
  1119 + Person.delete_all
  1120 + p1 = create(Person, :name => 'Testing person 1', :user_id => 1, :created_at => DateTime.now - 2)
  1121 + p2 = create(Person, :name => 'Testing person 2', :user_id => 2, :created_at => DateTime.now - 1)
  1122 + p3 = create(Person, :name => 'Testing person 3', :user_id => 3)
  1123 +
  1124 + get :people
  1125 + assert_equal [p3,p2,p1] , assigns(:results)
  1126 + end
  1127 +
  1128 + should 'paginate search of people in groups of 27' do
  1129 + Person.delete_all
  1130 +
  1131 + 1.upto(30).map do |n|
  1132 + create(Person, :name => 'Testing person', :user_id => n)
  1133 + end
  1134 +
  1135 + get :people
  1136 + assert_equal 30 , Person.count
  1137 + assert_equal 27 , assigns(:results).count
  1138 + assert_tag :a, '', :attributes => {:class => 'next_page'}
  1139 + end
  1140 +
  1141 + should 'paginate ferret search of people in groups of 27' do
  1142 + Person.delete_all
  1143 +
  1144 + 1.upto(30).map do |n|
  1145 + create(Person, :name => 'Testing person', :user_id => n)
  1146 + end
  1147 +
  1148 + get :people, :query => 'Testing'
  1149 + assert_equal 27 , assigns(:results).count
  1150 + assert_tag :a, '', :attributes => {:class => 'next_page'}
  1151 + end
  1152 +
  1153 + should 'not return nil results in the more_active people list' do
  1154 + Profile.delete_all
  1155 + p1 = fast_create(Person)
  1156 + p2 = fast_create(Person)
  1157 + p3 = fast_create(Person)
  1158 + fast_create(Article, :profile_id => p1, :created_at => 1.day.ago)
  1159 + fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)
  1160 + fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)
  1161 + fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)
  1162 + fast_create(Article, :profile_id => p3, :created_at => 1.day.ago)
  1163 +
  1164 + per_page = 1
  1165 + @controller.stubs(:per_page).returns(per_page)
  1166 +
  1167 + get :people, :filter => 'more_active'
  1168 +
  1169 + assert_equal Person.count/per_page, assigns(:results).total_pages
  1170 + end
  1171 +
  1172 + should 'list all people filter by more active' do
  1173 + Person.delete_all
  1174 + p1 = create(Person, :name => 'Testing person 1', :user_id => 1)
  1175 + p2 = create(Person, :name => 'Testing person 2', :user_id => 2)
  1176 + p3 = create(Person, :name => 'Testing person 3', :user_id => 3)
  1177 + ActionTracker::Record.delete_all
  1178 + fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => p1, :created_at => Time.now)
  1179 + fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => p2, :created_at => Time.now)
  1180 + fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => p2, :created_at => Time.now)
  1181 + get :people, :filter => 'more_active'
  1182 + assert_equal [p2,p1,p3] , assigns(:results)
  1183 + end
  1184 +
  1185 + should 'filter more popular people' do
  1186 + Person.delete_all
  1187 + p1 = create(Person, :name => 'Testing person 1', :user_id => 1)
  1188 + p2 = create(Person, :name => 'Testing person 2', :user_id => 2)
  1189 + p3 = create(Person, :name => 'Testing person 3', :user_id => 3)
  1190 +
  1191 + p1.add_friend(p2)
  1192 + p2.add_friend(p1)
  1193 + p2.add_friend(p3)
  1194 + get :people, :filter => 'more_popular'
  1195 + assert_equal [p2,p1,p3] , assigns(:results)
  1196 + end
  1197 +
  1198 + should 'the people filter be only the hardcoded one' do
  1199 + get :people, :filter => 'more_recent'
  1200 + assert_equal 'more_recent' , assigns(:filter)
  1201 +
  1202 + get :people, :filter => 'more_active'
  1203 + assert_equal 'more_active' , assigns(:filter)
  1204 +
  1205 + get :people, :filter => 'more_popular'
  1206 + assert_equal 'more_popular' , assigns(:filter)
  1207 +
  1208 + get :people, :filter => 'more_anything'
  1209 + assert_equal 'more_recent' , assigns(:filter)
  1210 + end
  1211 +
  1212 + should 'the people filter define the title' do
  1213 + get :people, :filter => 'more_recent'
  1214 + assert_equal 'More recent people' , assigns(:title)
  1215 + assert_tag :h1, :content => 'More recent people'
  1216 +
  1217 + get :people, :filter => 'more_active'
  1218 + assert_equal 'More active people' , assigns(:title)
  1219 + assert_tag :h1, :content => 'More active people'
  1220 +
  1221 + get :people, :filter => 'more_popular'
  1222 + assert_equal 'More popular people' , assigns(:title)
  1223 + assert_tag :h1, :content => 'More popular people'
  1224 +
  1225 + get :people, :filter => 'more_anything'
  1226 + assert_equal 'More recent people' , assigns(:title)
  1227 + assert_tag :h1, :content => 'More recent people'
  1228 + end
  1229 +
  1230 + should 'search for community' do
  1231 + small = create(Community, :name => 'A small community for testing')
  1232 + create(Community, :name => 'A big community for testing')
  1233 +
  1234 + get :communities, :query => 'small'
  1235 + assert_equal [small], assigns(:results)
  1236 + end
  1237 +
  1238 + should 'list all community order by more recent one by default' do
  1239 + c1 = create(Community, :name => 'Testing community 1', :created_at => DateTime.now - 2)
  1240 + c2 = create(Community, :name => 'Testing community 2', :created_at => DateTime.now - 1)
  1241 + c3 = create(Community, :name => 'Testing community 3')
  1242 +
  1243 + get :communities
  1244 + assert_equal [c3,c2,c1] , assigns(:results)
  1245 + end
  1246 +
  1247 + should 'paginate search of communities in groups of 27' do
  1248 + 1.upto(30).map do |n|
  1249 + create(Community, :name => 'Testing community')
  1250 + end
  1251 +
  1252 + get :communities
  1253 + assert_equal 30 , Community.count
  1254 + assert_equal 27 , assigns(:results).count
  1255 + assert_tag :a, '', :attributes => {:class => 'next_page'}
  1256 + end
  1257 +
  1258 + should 'paginate ferret search of communities in groups of 27' do
  1259 + 1.upto(30).map do |n|
  1260 + create(Community, :name => 'Testing community')
  1261 + end
  1262 +
  1263 + get :communities, :query => 'Testing'
  1264 + assert_equal 27 , assigns(:results).count
  1265 + assert_tag :a, '', :attributes => {:class => 'next_page'}
  1266 + end
  1267 +
  1268 + should 'not return nil results in the more_active communities list' do
  1269 + Profile.delete_all
  1270 + c1 = fast_create(Community)
  1271 + c2 = fast_create(Community)
  1272 + c3 = fast_create(Community)
  1273 + fast_create(Article, :profile_id => c1, :created_at => 1.day.ago)
  1274 + fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)
  1275 + fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)
  1276 + fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)
  1277 + fast_create(Article, :profile_id => c3, :created_at => 1.day.ago)
  1278 +
  1279 + per_page = 1
  1280 + @controller.stubs(:per_page).returns(per_page)
  1281 +
  1282 + get :communities, :filter => 'more_active'
  1283 +
  1284 + assert_equal Community.count/per_page, assigns(:results).total_pages
  1285 + end
  1286 +
  1287 +
  1288 + should 'list all communities filter by more active' do
  1289 + person = fast_create(Person)
  1290 + c1 = create(Community, :name => 'Testing community 1')
  1291 + c2 = create(Community, :name => 'Testing community 2')
  1292 + c3 = create(Community, :name => 'Testing community 3')
  1293 + ActionTracker::Record.delete_all
  1294 + fast_create(ActionTracker::Record, :target_id => c1, :user_type => 'Profile', :user_id => person, :created_at => Time.now)
  1295 + fast_create(ActionTracker::Record, :target_id => c2, :user_type => 'Profile', :user_id => person, :created_at => Time.now)
  1296 + fast_create(ActionTracker::Record, :target_id => c2, :user_type => 'Profile', :user_id => person, :created_at => Time.now)
  1297 + get :communities, :filter => 'more_active'
  1298 + assert_equal [c2,c1,c3] , assigns(:results)
  1299 + end
  1300 +
  1301 + should 'filter more popular communities' do
  1302 + Person.delete_all
  1303 + Community.delete_all
  1304 + c1 = create(Community, :name => 'Testing community 1')
  1305 + c2 = create(Community, :name => 'Testing community 2')
  1306 +
  1307 + p1 = create(Person, :name => 'Testing person 1', :user_id => 1)
  1308 + p2 = create(Person, :name => 'Testing person 2', :user_id => 2)
  1309 + c1.add_member(p1)
  1310 + c2.add_member(p1)
  1311 + c2.add_member(p2)
  1312 + get :communities, :filter => 'more_popular'
  1313 + assert_equal [c2,c1] , assigns(:results)
  1314 + end
  1315 +
  1316 + should 'the communities filter be only the hardcoded one' do
  1317 + get :communities, :filter => 'more_recent'
  1318 + assert_equal 'more_recent' , assigns(:filter)
  1319 +
  1320 + get :communities, :filter => 'more_active'
  1321 + assert_equal 'more_active' , assigns(:filter)
  1322 +
  1323 + get :communities, :filter => 'more_popular'
  1324 + assert_equal 'more_popular' , assigns(:filter)
  1325 +
  1326 + get :communities, :filter => 'more_anything'
  1327 + assert_equal 'more_recent' , assigns(:filter)
  1328 + end
  1329 +
  1330 + should 'the communities filter define the title' do
  1331 + get :communities, :filter => 'more_recent'
  1332 + assert_equal 'More recent communities' , assigns(:title)
  1333 + assert_tag :h1, :content => 'More recent communities'
  1334 +
  1335 + get :communities, :filter => 'more_active'
  1336 + assert_equal 'More active communities' , assigns(:title)
  1337 + assert_tag :h1, :content => 'More active communities'
  1338 +
  1339 + get :communities, :filter => 'more_popular'
  1340 + assert_equal 'More popular communities' , assigns(:title)
  1341 + assert_tag :h1, :content => 'More popular communities'
  1342 +
  1343 + get :communities, :filter => 'more_anything'
  1344 + assert_equal 'More recent communities' , assigns(:title)
  1345 + assert_tag :h1, :content => 'More recent communities'
  1346 + end
  1347 +
  1348 + should "only include visible people in more_recent filter" do
  1349 + # assuming that all filters behave the same!
  1350 + p1 = fast_create(Person, :visible => false)
  1351 + get :people, :filter => 'more_recent'
  1352 + assert_not_includes assigns(:results), p1
  1353 + end
  1354 +
  1355 + should "only include visible communities in more_recent filter" do
  1356 + # assuming that all filters behave the same!
  1357 + p1 = fast_create(Community, :visible => false)
  1358 + get :communities, :filter => 'more_recent'
  1359 + assert_not_includes assigns(:results), p1
  1360 + end
  1361 +
1100 ################################################################## 1362 ##################################################################
1101 ################################################################## 1363 ##################################################################
1102 1364