Commit 558cde5142dd3e37926c64015123cee40e49bb4d
1 parent
91d24abf
Exists in
master
and in
29 other branches
Initial merge of browse and search tests
Showing
2 changed files
with
262 additions
and
375 deletions
Show diff stats
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 < Test::Unit::TestCase | @@ -9,6 +9,7 @@ class SearchControllerTest < 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 < Test::Unit::TestCase | @@ -18,6 +19,14 @@ class SearchControllerTest < 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 < Test::Unit::TestCase | @@ -1097,6 +1106,259 @@ class SearchControllerTest < 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 |