Commit 47530dbe9564ca3093fa60f9272cf9271b1825d3

Authored by Rodrigo Souto
Committed by Daniela Feitosa
1 parent c9c75982

Removing nil results from browse pages

(ActionItem1875)
app/controllers/public/browse_controller.rb
... ... @@ -8,17 +8,20 @@ class BrowseController < PublicController
8 8 more_popular
9 9 )
10 10  
  11 + def per_page
  12 + 27
  13 + end
  14 +
11 15 def people
12 16 @filter = filter
13 17 @title = self.filter_description(params[:action] + '_' + @filter )
14 18  
15 19 @results = @environment.people.visible.send(@filter)
16 20  
17   - if params[:query].blank?
18   - @results = @results.paginate(:per_page => 27, :page => params[:page])
19   - else
20   - @results = @results.find_by_contents(params[:query]).paginate(:per_page => 27, :page => params[:page])
  21 + if !params[:query].blank?
  22 + @results = @results.find_by_contents(params[:query])
21 23 end
  24 + @results = @results.compact.paginate(:per_page => per_page, :page => params[:page])
22 25 end
23 26  
24 27 def communities
... ... @@ -27,11 +30,10 @@ class BrowseController < PublicController
27 30  
28 31 @results = @environment.communities.visible.send(@filter)
29 32  
30   - if params[:query].blank?
31   - @results = @results.paginate(:per_page => 27, :page => params[:page])
32   - else
33   - @results = @results.find_by_contents(params[:query]).paginate(:per_page => 27, :page => params[:page])
  33 + if !params[:query].blank?
  34 + @results = @results.find_by_contents(params[:query])
34 35 end
  36 + @results = @results.compact.paginate(:per_page => per_page, :page => params[:page])
35 37 end
36 38  
37 39 protected
... ...
test/functional/browse_controller_test.rb
... ... @@ -65,6 +65,25 @@ class BrowseControllerTest < Test::Unit::TestCase
65 65 assert_tag :a, '', :attributes => {:class => 'next_page'}
66 66 end
67 67  
  68 + should 'not return nil results in the more_active people list' do
  69 + Profile.delete_all
  70 + p1 = fast_create(Person)
  71 + p2 = fast_create(Person)
  72 + p3 = fast_create(Person)
  73 + fast_create(Article, :profile_id => p1, :created_at => 1.day.ago)
  74 + fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)
  75 + fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)
  76 + fast_create(Article, :profile_id => p2, :created_at => 1.day.ago)
  77 + fast_create(Article, :profile_id => p3, :created_at => 1.day.ago)
  78 +
  79 + per_page = 1
  80 + @controller.stubs(:per_page).returns(per_page)
  81 +
  82 + get :people, :filter => 'more_active'
  83 +
  84 + assert_equal assigns(:results).total_pages, Person.count/per_page
  85 + end
  86 +
68 87 should 'list all people filter by more active' do
69 88 Person.delete_all
70 89 p1 = create(Person, :name => 'Testing person 1', :user_id => 1)
... ... @@ -160,6 +179,26 @@ class BrowseControllerTest < Test::Unit::TestCase
160 179 assert_tag :a, '', :attributes => {:class => 'next_page'}
161 180 end
162 181  
  182 + should 'not return nil results in the more_active communities list' do
  183 + Profile.delete_all
  184 + c1 = fast_create(Community)
  185 + c2 = fast_create(Community)
  186 + c3 = fast_create(Community)
  187 + fast_create(Article, :profile_id => c1, :created_at => 1.day.ago)
  188 + fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)
  189 + fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)
  190 + fast_create(Article, :profile_id => c2, :created_at => 1.day.ago)
  191 + fast_create(Article, :profile_id => c3, :created_at => 1.day.ago)
  192 +
  193 + per_page = 1
  194 + @controller.stubs(:per_page).returns(per_page)
  195 +
  196 + get :communities, :filter => 'more_active'
  197 +
  198 + assert_equal assigns(:results).total_pages, Community.count/per_page
  199 + end
  200 +
  201 +
163 202 should 'list all communities filter by more active' do
164 203 c1 = create(Community, :name => 'Testing community 1')
165 204 c2 = create(Community, :name => 'Testing community 2')
... ...