Commit 4e597889861695e5d919903d5b15957772cd5b80

Authored by Joenio Costa
Committed by Antonio Terceiro
1 parent 39e82e74

Ignore pagination for events in global agenda

(ActionItem1255)
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
... ...