Skip to content

Commit

Permalink
Disable pagination links via config
Browse files Browse the repository at this point in the history
  • Loading branch information
Lee Richmond committed Sep 6, 2016
1 parent 0500604 commit adba526
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Features:
- [#1791](https://github.com/rails-api/active_model_serializers/pull/1791) (@bf4, @youroff, @NullVoxPopuli)
- Added `jsonapi_namespace_separator` config option.
- [#1889](https://github.com/rails-api/active_model_serializers/pull/1889) Support key transformation for Attributes adapter (@iancanderson, @danbee)
- [#1917](https://github.com/rails-api/active_model_serializers/pull/1917) Add `jsonapi_pagination_links_enabled` configuration option (@richmolj)

Fixes:

Expand Down
2 changes: 2 additions & 0 deletions lib/active_model/serializer/collection_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ def json_key
# rubocop:enable Metrics/CyclomaticComplexity

def paginated?
return false unless Serializer.config.jsonapi_pagination_links_enabled

object.respond_to?(:current_page) &&
object.respond_to?(:total_pages) &&
object.respond_to?(:size)
Expand Down
1 change: 1 addition & 0 deletions lib/active_model/serializer/concerns/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ def config.array_serializer
config.default_includes = '*'
config.adapter = :attributes
config.key_transform = nil
config.jsonapi_pagination_links_enabled = true
config.jsonapi_resource_type = :plural
config.jsonapi_namespace_separator = '-'.freeze
config.jsonapi_version = '1.0'
Expand Down
19 changes: 17 additions & 2 deletions test/adapter/json_api/pagination_links_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def last_page_links
}
end

def expected_response_without_pagination_links
def expected_response_when_unpaginatable
data
end

Expand All @@ -87,6 +87,12 @@ def expected_response_with_pagination_links
end
end

def expected_response_without_pagination_links
{}.tap do |hash|
hash[:data] = data.values.flatten[2..3]
end
end

def expected_response_with_pagination_links_and_additional_params
new_links = links[:links].each_with_object({}) { |(key, value), hash| hash[key] = "#{value}&test=test" }
{}.tap do |hash|
Expand Down Expand Up @@ -159,7 +165,7 @@ def test_last_page_pagination_links_using_will_paginate
def test_not_showing_pagination_links
adapter = load_adapter(@array, mock_request)

assert_equal expected_response_without_pagination_links, adapter.serializable_hash
assert_equal expected_response_when_unpaginatable, adapter.serializable_hash
end

def test_raises_descriptive_error_when_serialization_context_unset
Expand All @@ -172,6 +178,15 @@ def test_raises_descriptive_error_when_serialization_context_unset
assert_equal exception_class, exception.class
assert_match(/CollectionSerializer#paginated\?/, exception.message)
end

def test_pagination_links_not_present_when_disabled
ActiveModel::Serializer.config.jsonapi_pagination_links_enabled = false
adapter = load_adapter(using_kaminari, mock_request)

assert_equal expected_response_without_pagination_links, adapter.serializable_hash
ensure
ActiveModel::Serializer.config.jsonapi_pagination_links_enabled = true
end
end
end
end
Expand Down

0 comments on commit adba526

Please sign in to comment.