From 37ca0c1f6c8c2a2fa60cb026a7e681bc382043d3 Mon Sep 17 00:00:00 2001 From: Nader Akhnoukh Date: Thu, 21 Apr 2016 20:22:23 -0600 Subject: [PATCH] Support pagination link for Kaminari when no data is returned --- CHANGELOG.md | 1 + .../adapter/json_api/pagination_links.rb | 2 +- .../adapter/json_api/pagination_links_test.rb | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f886d3b2..ee09dd18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,7 @@ Features: - [#1340](https://github.com/rails-api/active_model_serializers/pull/1340) Add support for resource-level meta. (@beauby) Fixes: +- [#1700](https://github.com/rails-api/active_model_serializers/pull/1700) Support pagination link for Kaminari when no data is returned - [#1657](https://github.com/rails-api/active_model_serializers/pull/1657) Add missing missing require "active_support/json". (@andreaseger) - [#1661](https://github.com/rails-api/active_model_serializers/pull/1661) Fixes `read_attribute_for_serialization` not seeing methods defined in serialization superclass (#1653, #1658, #1660), introduced in #1650. (@bf4) diff --git a/lib/active_model_serializers/adapter/json_api/pagination_links.rb b/lib/active_model_serializers/adapter/json_api/pagination_links.rb index 58c6f1df..a07de69a 100644 --- a/lib/active_model_serializers/adapter/json_api/pagination_links.rb +++ b/lib/active_model_serializers/adapter/json_api/pagination_links.rb @@ -28,7 +28,7 @@ module ActiveModelSerializers private def pages_from - return {} if collection.total_pages == FIRST_PAGE + return {} if collection.total_pages <= FIRST_PAGE {}.tap do |pages| pages[:self] = collection.current_page diff --git a/test/adapter/json_api/pagination_links_test.rb b/test/adapter/json_api/pagination_links_test.rb index 406d0a6e..e6f74ebe 100644 --- a/test/adapter/json_api/pagination_links_test.rb +++ b/test/adapter/json_api/pagination_links_test.rb @@ -101,6 +101,13 @@ module ActiveModelSerializers end end + def expected_response_with_no_data_pagination_links + {}.tap do |hash| + hash[:data] = [] + hash[:links] = {} + end + end + def test_pagination_links_using_kaminari adapter = load_adapter(using_kaminari, mock_request) @@ -120,6 +127,22 @@ module ActiveModelSerializers adapter.serializable_hash end + def test_pagination_links_when_zero_results_kaminari + @array = [] + + adapter = load_adapter(using_kaminari(1), mock_request) + + assert_equal expected_response_with_no_data_pagination_links, adapter.serializable_hash + end + + def test_pagination_links_when_zero_results_will_paginate + @array = [] + + adapter = load_adapter(using_will_paginate(1), mock_request) + + assert_equal expected_response_with_no_data_pagination_links, adapter.serializable_hash + end + def test_last_page_pagination_links_using_kaminari adapter = load_adapter(using_kaminari(3), mock_request)