Commit 4e597889861695e5d919903d5b15957772cd5b80
Committed by
Antonio Terceiro
1 parent
39e82e74
Exists in
master
and in
29 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 | ... | ... |