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 | 18 | date_range = options.delete(:date_range) |
19 | 19 | |
20 | 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 | 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 | 32 | else |
24 | 33 | ferret_options = {:page => options.delete(:page), :per_page => options.delete(:per_page)} |
25 | 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 | 45 | end |
37 | 46 | |
38 | 47 | def current_events(year, month, options={}) |
39 | - options = {:page => 1}.merge(options) | |
48 | + options.delete(:page) | |
49 | + options.delete(:per_page) | |
50 | + | |
40 | 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 | 54 | end |
44 | 55 | |
45 | 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 | 61 | end |
50 | 62 | |
51 | 63 | def product_categories_count(asset, product_categories_ids, objects_ids=nil) | ... | ... |
app/models/environment_finder.rb
... | ... | @@ -31,11 +31,18 @@ class EnvironmentFinder |
31 | 31 | elsif product_category && asset == :enterprises |
32 | 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 | 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 | 46 | else |
40 | 47 | @environment.send(asset).send(finder_method, :all, options) |
41 | 48 | end | ... | ... |
test/unit/category_finder_test.rb
... | ... | @@ -234,7 +234,6 @@ class CategoryFinderTest < ActiveSupport::TestCase |
234 | 234 | events = finder.current_events(2008, 1) |
235 | 235 | assert_includes events, e1 |
236 | 236 | assert_not_includes events, e2 |
237 | - assert_respond_to events, :total_entries | |
238 | 237 | end |
239 | 238 | |
240 | 239 | should 'list upcoming events' do |
... | ... | @@ -252,19 +251,6 @@ class CategoryFinderTest < ActiveSupport::TestCase |
252 | 251 | assert_equal [upcoming_event_1, upcoming_event_2], @finder.upcoming_events |
253 | 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 | 254 | should 'find person and enterprise in category by radius and region even without query' do |
269 | 255 | cat = Category.create!(:name => 'test category', :environment => Environment.default) |
270 | 256 | finder = CategoryFinder.new(cat) |
... | ... | @@ -478,4 +464,59 @@ class CategoryFinderTest < ActiveSupport::TestCase |
478 | 464 | assert_not_includes events_found, event_out_of_range |
479 | 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 | 522 | end | ... | ... |
test/unit/environment_finder_test.rb
... | ... | @@ -338,4 +338,25 @@ class EnvironmentFinderTest < ActiveSupport::TestCase |
338 | 338 | assert_not_includes events_found, event_out_of_range |
339 | 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 | 362 | end | ... | ... |