Commit 47530dbe9564ca3093fa60f9272cf9271b1825d3
Committed by
Daniela Feitosa
1 parent
c9c75982
Exists in
staging
and in
42 other branches
Removing nil results from browse pages
(ActionItem1875)
Showing
2 changed files
with
49 additions
and
8 deletions
Show diff stats
app/controllers/public/browse_controller.rb
@@ -8,17 +8,20 @@ class BrowseController < PublicController | @@ -8,17 +8,20 @@ class BrowseController < PublicController | ||
8 | more_popular | 8 | more_popular |
9 | ) | 9 | ) |
10 | 10 | ||
11 | + def per_page | ||
12 | + 27 | ||
13 | + end | ||
14 | + | ||
11 | def people | 15 | def people |
12 | @filter = filter | 16 | @filter = filter |
13 | @title = self.filter_description(params[:action] + '_' + @filter ) | 17 | @title = self.filter_description(params[:action] + '_' + @filter ) |
14 | 18 | ||
15 | @results = @environment.people.visible.send(@filter) | 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 | end | 23 | end |
24 | + @results = @results.compact.paginate(:per_page => per_page, :page => params[:page]) | ||
22 | end | 25 | end |
23 | 26 | ||
24 | def communities | 27 | def communities |
@@ -27,11 +30,10 @@ class BrowseController < PublicController | @@ -27,11 +30,10 @@ class BrowseController < PublicController | ||
27 | 30 | ||
28 | @results = @environment.communities.visible.send(@filter) | 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 | end | 35 | end |
36 | + @results = @results.compact.paginate(:per_page => per_page, :page => params[:page]) | ||
35 | end | 37 | end |
36 | 38 | ||
37 | protected | 39 | protected |
test/functional/browse_controller_test.rb
@@ -65,6 +65,25 @@ class BrowseControllerTest < Test::Unit::TestCase | @@ -65,6 +65,25 @@ class BrowseControllerTest < Test::Unit::TestCase | ||
65 | assert_tag :a, '', :attributes => {:class => 'next_page'} | 65 | assert_tag :a, '', :attributes => {:class => 'next_page'} |
66 | end | 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 | should 'list all people filter by more active' do | 87 | should 'list all people filter by more active' do |
69 | Person.delete_all | 88 | Person.delete_all |
70 | p1 = create(Person, :name => 'Testing person 1', :user_id => 1) | 89 | p1 = create(Person, :name => 'Testing person 1', :user_id => 1) |
@@ -160,6 +179,26 @@ class BrowseControllerTest < Test::Unit::TestCase | @@ -160,6 +179,26 @@ class BrowseControllerTest < Test::Unit::TestCase | ||
160 | assert_tag :a, '', :attributes => {:class => 'next_page'} | 179 | assert_tag :a, '', :attributes => {:class => 'next_page'} |
161 | end | 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 | should 'list all communities filter by more active' do | 202 | should 'list all communities filter by more active' do |
164 | c1 = create(Community, :name => 'Testing community 1') | 203 | c1 = create(Community, :name => 'Testing community 1') |
165 | c2 = create(Community, :name => 'Testing community 2') | 204 | c2 = create(Community, :name => 'Testing community 2') |