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,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