From a1e766d2a6fc621000165966306caa7c34cdd6aa Mon Sep 17 00:00:00 2001 From: Moises Machado Date: Fri, 26 Sep 2008 11:20:27 -0300 Subject: [PATCH] ActionItem751: remove the 10 results limit in find_by_contents --- lib/acts_as_searchable.rb | 2 ++ test/functional/search_controller_test.rb | 11 +++++++++++ test/unit/environment_finder_test.rb | 12 ++++++++++++ test/unit/environment_test.rb | 10 ++++++++++ 4 files changed, 35 insertions(+), 0 deletions(-) diff --git a/lib/acts_as_searchable.rb b/lib/acts_as_searchable.rb index be880c3..f3cb3d4 100644 --- a/lib/acts_as_searchable.rb +++ b/lib/acts_as_searchable.rb @@ -9,6 +9,8 @@ class << ActiveRecord::Base if ferret_options[:per_page] db_options[:per_page] = ferret_options.delete(:per_page) end + + ferret_options[:limit] = :all ids = find_ids_with_ferret(query, ferret_options)[1].map{|r|r[:id].to_i} if ids.empty? diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb index 341b072..0e1a716 100644 --- a/test/functional/search_controller_test.rb +++ b/test/functional/search_controller_test.rb @@ -946,6 +946,17 @@ class SearchControllerTest < Test::Unit::TestCase assert_tag :tag => 'h1', :content => 'Communities' end + should 'indicate more than page for total_entries' do + Enterprise.destroy_all + ('1'..'20').each do |n| + Enterprise.create!(:name => 'test ' + n, :identifier => 'test_' + n) + end + + get :index, :query => 'test' + + assert_equal 20, assigns(:results)[:enterprises].total_entries + end + ################################################################## ################################################################## diff --git a/test/unit/environment_finder_test.rb b/test/unit/environment_finder_test.rb index 29dda80..6b81fb2 100644 --- a/test/unit/environment_finder_test.rb +++ b/test/unit/environment_finder_test.rb @@ -311,4 +311,16 @@ class EnvironmentFinderTest < ActiveSupport::TestCase assert_equal 2, counts[pc2.id] assert_nil counts[pc3.id] end + + should 'should retrieve more than 10 entries' do + Enterprise.destroy_all + finder = EnvironmentFinder.new(Environment.default) + + ('1'..'20').each do |n| + Enterprise.create!(:name => 'test ' + n, :identifier => 'test_' + n) + end + + assert_equal 20, finder.find(:enterprises, 'test').total_entries + end + end diff --git a/test/unit/environment_test.rb b/test/unit/environment_test.rb index b73e1a6..20569b1 100644 --- a/test/unit/environment_test.rb +++ b/test/unit/environment_test.rb @@ -434,4 +434,14 @@ class EnvironmentTest < Test::Unit::TestCase assert_equal 'default', Environment.new.layout_template end + should 'return more than 10 enterprises by contents' do + env = Environment.default + Enterprise.destroy_all + ('1'..'20').each do |n| + Enterprise.create!(:name => 'test ' + n, :identifier => 'test_' + n) + end + + assert_equal 20, env.enterprises.find_by_contents('test').total_entries + end + end -- libgit2 0.21.2