Commit 4e597889861695e5d919903d5b15957772cd5b80
Committed by
Antonio Terceiro
1 parent
39e82e74
Exists in
master
and in
22 other branches
Ignore pagination for events in global agenda
(ActionItem1255)
Showing
4 changed files
with
105 additions
and
24 deletions
Show diff stats
app/models/category_finder.rb
@@ -18,8 +18,17 @@ class CategoryFinder | @@ -18,8 +18,17 @@ class CategoryFinder | ||
18 | date_range = options.delete(:date_range) | 18 | date_range = options.delete(:date_range) |
19 | 19 | ||
20 | options = {:page => 1, :per_page => options.delete(:limit)}.merge(options) | 20 | options = {:page => 1, :per_page => options.delete(:limit)}.merge(options) |
21 | + | ||
22 | + if asset == :events | ||
23 | + finder_method = 'find' | ||
24 | + options.delete(:page) | ||
25 | + options.delete(:per_page) | ||
26 | + else | ||
27 | + finder_method = 'paginate' | ||
28 | + end | ||
29 | + | ||
21 | if query.blank? | 30 | if query.blank? |
22 | - asset_class(asset).paginate(:all, options_for_find(asset_class(asset), {:order => "#{asset_table(asset)}.name"}.merge(options), date_range)) | 31 | + asset_class(asset).send(finder_method, :all, options_for_find(asset_class(asset), {:order => "#{asset_table(asset)}.name"}.merge(options), date_range)) |
23 | else | 32 | else |
24 | ferret_options = {:page => options.delete(:page), :per_page => options.delete(:per_page)} | 33 | ferret_options = {:page => options.delete(:page), :per_page => options.delete(:per_page)} |
25 | asset_class(asset).find_by_contents(query, ferret_options, options_for_find(asset_class(asset), options, date_range)) | 34 | asset_class(asset).find_by_contents(query, ferret_options, options_for_find(asset_class(asset), options, date_range)) |
@@ -36,16 +45,19 @@ class CategoryFinder | @@ -36,16 +45,19 @@ class CategoryFinder | ||
36 | end | 45 | end |
37 | 46 | ||
38 | def current_events(year, month, options={}) | 47 | def current_events(year, month, options={}) |
39 | - options = {:page => 1}.merge(options) | 48 | + options.delete(:page) |
49 | + options.delete(:per_page) | ||
50 | + | ||
40 | range = Event.date_range(year, month) | 51 | range = Event.date_range(year, month) |
41 | 52 | ||
42 | - Event.paginate(:all, {:include => :categories, :conditions => { 'categories.id' => category_id, :start_date => range }}.merge(options)) | 53 | + Event.find(:all, {:include => :categories, :conditions => { 'categories.id' => category_id, :start_date => range }}.merge(options)) |
43 | end | 54 | end |
44 | 55 | ||
45 | def upcoming_events(options = {}) | 56 | def upcoming_events(options = {}) |
46 | - options = { :page => 1}.merge(options) | 57 | + options.delete(:page) |
58 | + options.delete(:per_page) | ||
47 | 59 | ||
48 | - Event.paginate(:all, {:include => :categories, :conditions => [ 'categories.id = ? and start_date >= ?', category_id, Date.today ], :order => 'start_date' }.merge(options)) | 60 | + Event.find(:all, {:include => :categories, :conditions => [ 'categories.id = ? and start_date >= ?', category_id, Date.today ], :order => 'start_date' }.merge(options)) |
49 | end | 61 | end |
50 | 62 | ||
51 | def product_categories_count(asset, product_categories_ids, objects_ids=nil) | 63 | def product_categories_count(asset, product_categories_ids, objects_ids=nil) |
app/models/environment_finder.rb
@@ -31,11 +31,18 @@ class EnvironmentFinder | @@ -31,11 +31,18 @@ class EnvironmentFinder | ||
31 | elsif product_category && asset == :enterprises | 31 | elsif product_category && asset == :enterprises |
32 | @environment.send(asset).send(finder_method, :all, options.merge( :order => 'profiles.name', :joins => 'inner join products on (products.enterprise_id = profiles.id) inner join product_categorizations on (product_categorizations.product_id = products.id)', :conditions => ['product_categorizations.category_id = (?)', product_category.id])) | 32 | @environment.send(asset).send(finder_method, :all, options.merge( :order => 'profiles.name', :joins => 'inner join products on (products.enterprise_id = profiles.id) inner join product_categorizations on (product_categorizations.product_id = products.id)', :conditions => ['product_categorizations.category_id = (?)', product_category.id])) |
33 | else | 33 | else |
34 | - if (asset == :events) && date_range | ||
35 | - @environment.send(asset).send(finder_method, :all, options.merge(:conditions => [ | ||
36 | - 'start_date BETWEEN :start_day AND :end_day OR end_date BETWEEN :start_day AND :end_day', | ||
37 | - {:start_day => date_range.first, :end_day => date_range.last} | ||
38 | - ])) | 34 | + if asset == :events |
35 | + # Ignore pagination for asset events | ||
36 | + options.delete(:per_page) | ||
37 | + options.delete(:page) | ||
38 | + if date_range | ||
39 | + @environment.send(asset).send('find', :all, options.merge(:conditions => [ | ||
40 | + 'start_date BETWEEN :start_day AND :end_day OR end_date BETWEEN :start_day AND :end_day', | ||
41 | + {:start_day => date_range.first, :end_day => date_range.last} | ||
42 | + ])) | ||
43 | + else | ||
44 | + @environment.send(asset).send('find', :all, options) | ||
45 | + end | ||
39 | else | 46 | else |
40 | @environment.send(asset).send(finder_method, :all, options) | 47 | @environment.send(asset).send(finder_method, :all, options) |
41 | end | 48 | end |
test/unit/category_finder_test.rb
@@ -234,7 +234,6 @@ class CategoryFinderTest < ActiveSupport::TestCase | @@ -234,7 +234,6 @@ class CategoryFinderTest < ActiveSupport::TestCase | ||
234 | events = finder.current_events(2008, 1) | 234 | events = finder.current_events(2008, 1) |
235 | assert_includes events, e1 | 235 | assert_includes events, e1 |
236 | assert_not_includes events, e2 | 236 | assert_not_includes events, e2 |
237 | - assert_respond_to events, :total_entries | ||
238 | end | 237 | end |
239 | 238 | ||
240 | should 'list upcoming events' do | 239 | should 'list upcoming events' do |
@@ -252,19 +251,6 @@ class CategoryFinderTest < ActiveSupport::TestCase | @@ -252,19 +251,6 @@ class CategoryFinderTest < ActiveSupport::TestCase | ||
252 | assert_equal [upcoming_event_1, upcoming_event_2], @finder.upcoming_events | 251 | assert_equal [upcoming_event_1, upcoming_event_2], @finder.upcoming_events |
253 | end | 252 | end |
254 | 253 | ||
255 | - should 'limit events' do | ||
256 | - person = create_user('testuser').person | ||
257 | - | ||
258 | - Date.expects(:today).returns(Date.new(2008, 1, 15)).at_least_once | ||
259 | - | ||
260 | - past_event = Event.create!(:name => 'past event', :profile => person, :start_date => Date.new(2008,1,1), :category_ids => [@category.id]) | ||
261 | - upcoming_event_1 = Event.create!(:name => 'upcoming event 1', :profile => person, :start_date => Date.new(2008,1,20), :category_ids => [@category.id]) | ||
262 | - upcoming_event_2 = Event.create!(:name => 'upcoming event 2', :profile => person, :start_date => Date.new(2008,1,25), :category_ids => [@category.id]) | ||
263 | - not_in_category = Event.create!(:name => 'e1', :profile => person, :start_date => Date.new(2008,1,20)) | ||
264 | - | ||
265 | - assert_equal [upcoming_event_1], @finder.upcoming_events(:per_page => 1) | ||
266 | - end | ||
267 | - | ||
268 | should 'find person and enterprise in category by radius and region even without query' do | 254 | should 'find person and enterprise in category by radius and region even without query' do |
269 | cat = Category.create!(:name => 'test category', :environment => Environment.default) | 255 | cat = Category.create!(:name => 'test category', :environment => Environment.default) |
270 | finder = CategoryFinder.new(cat) | 256 | finder = CategoryFinder.new(cat) |
@@ -478,4 +464,59 @@ class CategoryFinderTest < ActiveSupport::TestCase | @@ -478,4 +464,59 @@ class CategoryFinderTest < ActiveSupport::TestCase | ||
478 | assert_not_includes events_found, event_out_of_range | 464 | assert_not_includes events_found, event_out_of_range |
479 | end | 465 | end |
480 | 466 | ||
467 | + should 'not paginate events' do | ||
468 | + person = create_user('testuser').person | ||
469 | + | ||
470 | + create(:event, :profile_id => person.id, :category_ids => [@category.id]) | ||
471 | + create(:event, :profile_id => person.id, :category_ids => [@category.id]) | ||
472 | + | ||
473 | + assert_equal 2, @finder.find(:events, '', :per_page => 1).size | ||
474 | + end | ||
475 | + | ||
476 | + should 'not paginate events within a range' do | ||
477 | + person = create_user('testuser').person | ||
478 | + | ||
479 | + create(:event, :profile_id => person.id, :category_ids => [@category.id]) | ||
480 | + create(:event, :profile_id => person.id, :category_ids => [@category.id]) | ||
481 | + | ||
482 | + date_range = Date.today..Date.today | ||
483 | + assert_equal 2, @finder.find(:events, '', :date_range => date_range, :per_page => 1).size | ||
484 | + end | ||
485 | + | ||
486 | + should 'not paginate current events' do | ||
487 | + person = create_user('testuser').person | ||
488 | + | ||
489 | + create(:event, :profile_id => person.id, :category_ids => [@category.id]) | ||
490 | + create(:event, :profile_id => person.id, :category_ids => [@category.id]) | ||
491 | + | ||
492 | + assert_equal 2, @finder.current_events(Date.today.year, Date.today.month, :per_page => 1).size | ||
493 | + end | ||
494 | + | ||
495 | + should 'not paginate upcoming events' do | ||
496 | + person = create_user('testuser').person | ||
497 | + | ||
498 | + create(:event, :profile_id => person.id, :category_ids => [@category.id]) | ||
499 | + create(:event, :profile_id => person.id, :category_ids => [@category.id]) | ||
500 | + | ||
501 | + assert_equal 2, @finder.upcoming_events(:per_page => 1).size | ||
502 | + end | ||
503 | + | ||
504 | + should 'not paginate searching for specific event' do | ||
505 | + person = create_user('teste').person | ||
506 | + | ||
507 | + today = Date.today | ||
508 | + | ||
509 | + event_to_found1 = Event.create!(:name => 'ToFound 1', :profile => person, :category_ids => [@category.id], :start_date => today) | ||
510 | + event_to_found2 = Event.create!(:name => 'ToFound 2', :profile => person, :category_ids => [@category.id], :start_date => today) | ||
511 | + event_to_not_found1 = Event.create!(:name => 'ToNotFound 1', :profile => person, :category_ids => [@category.id], :start_date => today) | ||
512 | + event_to_not_found2 = Event.create!(:name => 'ToNotFound 2', :profile => person, :category_ids => [@category.id], :start_date => today) | ||
513 | + | ||
514 | + result = @finder.find(:events, 'ToFound', :per_page => 1) | ||
515 | + | ||
516 | + assert_includes result, event_to_found1 | ||
517 | + assert_includes result, event_to_found2 | ||
518 | + assert_not_includes result, event_to_not_found1 | ||
519 | + assert_not_includes result, event_to_not_found2 | ||
520 | + end | ||
521 | + | ||
481 | end | 522 | end |
test/unit/environment_finder_test.rb
@@ -338,4 +338,25 @@ class EnvironmentFinderTest < ActiveSupport::TestCase | @@ -338,4 +338,25 @@ class EnvironmentFinderTest < ActiveSupport::TestCase | ||
338 | assert_not_includes events_found, event_out_of_range | 338 | assert_not_includes events_found, event_out_of_range |
339 | end | 339 | end |
340 | 340 | ||
341 | + should 'not paginate events' do | ||
342 | + finder = EnvironmentFinder.new(Environment.default) | ||
343 | + person = create_user('testuser').person | ||
344 | + | ||
345 | + fast_create(:event, :profile_id => person.id) | ||
346 | + fast_create(:event, :profile_id => person.id) | ||
347 | + | ||
348 | + assert_equal 2, finder.find(:events, '', :per_page => 1, :page => 1).size | ||
349 | + end | ||
350 | + | ||
351 | + should 'not paginate events within date range' do | ||
352 | + finder = EnvironmentFinder.new(Environment.default) | ||
353 | + person = create_user('testuser').person | ||
354 | + | ||
355 | + fast_create(:event, :profile_id => person.id) | ||
356 | + fast_create(:event, :profile_id => person.id) | ||
357 | + | ||
358 | + date_range = Date.today..Date.today | ||
359 | + assert_equal 2, finder.find(:events, '', :date_range => date_range, :per_page => 1, :page => 1).size | ||
360 | + end | ||
361 | + | ||
341 | end | 362 | end |