From 0422c616c2198775ee93c59019b468054125a013 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 14 Jun 2017 10:04:09 -0700 Subject: [PATCH] Fixed page_view_entries for Kaminari - fixes #934 --- CHANGELOG.md | 1 + Gemfile | 4 ++++ lib/searchkick/results.rb | 10 ++++++++-- test/gemfiles/mongoid6.gemfile | 4 ++++ test/pagination_test.rb | 17 +++++++++++++++++ test/support/kaminari.yml | 21 +++++++++++++++++++++ 6 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 test/support/kaminari.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dcda3e..c0a47af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## 2.3.1 [unreleased] - Added support for passing fields to `suggest` option +- Fixed `page_view_entries` for Kaminari ## 2.3.0 diff --git a/Gemfile b/Gemfile index e3d4db3..829ee3c 100644 --- a/Gemfile +++ b/Gemfile @@ -10,3 +10,7 @@ gem "typhoeus" gem "activejob" gem "redis" gem "connection_pool" + +# kaminari +gem "actionpack" +gem "kaminari" diff --git a/lib/searchkick/results.rb b/lib/searchkick/results.rb index d3e1a7c..8b6b562 100644 --- a/lib/searchkick/results.rb +++ b/lib/searchkick/results.rb @@ -127,8 +127,14 @@ module Searchkick klass.model_name end - def entry_name - model_name.human.downcase + def entry_name(options = {}) + if options.empty? + # backward compatibility + model_name.human.downcase + else + default = options[:count] == 1 ? model_name.human : model_name.human.pluralize + model_name.human(options.reverse_merge(default: default)) + end end def total_count diff --git a/test/gemfiles/mongoid6.gemfile b/test/gemfiles/mongoid6.gemfile index 7c5309d..9e80e2a 100644 --- a/test/gemfiles/mongoid6.gemfile +++ b/test/gemfiles/mongoid6.gemfile @@ -6,3 +6,7 @@ gemspec path: "../../" gem "mongoid", "~> 6.0.0" gem "activejob" gem "redis" + +# kaminari +gem "actionpack" +gem "kaminari" diff --git a/test/pagination_test.rb b/test/pagination_test.rb index a9627de..3692acb 100644 --- a/test/pagination_test.rb +++ b/test/pagination_test.rb @@ -50,4 +50,21 @@ class PaginationTest < Minitest::Test assert_equal 1, products.current_page assert products.first_page? end + + def test_kaminari + skip unless defined?(Kaminari) + + require "action_view" + + I18n.load_path = Dir["test/support/kaminari.yml"] + I18n.backend.load_translations + + view = ActionView::Base.new + + store_names ["Product A"] + assert_equal "Displaying 1 product", view.page_entries_info(Product.search("product")) + + store_names ["Product B"] + assert_equal "Displaying all 2 products", view.page_entries_info(Product.search("product")) + end end diff --git a/test/support/kaminari.yml b/test/support/kaminari.yml new file mode 100644 index 0000000..e2a79c6 --- /dev/null +++ b/test/support/kaminari.yml @@ -0,0 +1,21 @@ +en: + views: + pagination: + first: "« First" + last: "Last »" + previous: "‹ Prev" + next: "Next ›" + truncate: "…" + helpers: + page_entries_info: + entry: + zero: "entries" + one: "entry" + other: "entries" + one_page: + display_entries: + zero: "No %{entry_name} found" + one: "Displaying 1 %{entry_name}" + other: "Displaying all %{count} %{entry_name}" + more_pages: + display_entries: "Displaying %{entry_name} %{first} - %{last} of %{total} in total" -- libgit2 0.21.0