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   -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 9 Test::Unit::TestCase::setup
10 10 @controller = SearchController.new
11 11 @request = ActionController::TestRequest.new
  12 + @request.stubs(:ssl?).returns(false)
12 13 @response = ActionController::TestResponse.new
13 14  
14 15 @category = Category.create!(:name => 'my category', :environment => Environment.default)
... ... @@ -18,6 +19,14 @@ class SearchControllerTest &lt; Test::Unit::TestCase
18 19 domain.save!
19 20  
20 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 30 end
22 31  
23 32 def create_article_with_optional_category(name, profile, category = nil)
... ... @@ -1097,6 +1106,259 @@ class SearchControllerTest &lt; Test::Unit::TestCase
1097 1106 assert_tag :tag => 'a', :content => /Maria Birthday/
1098 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  
... ...