active_model_serializers 0.10.9 → 0.10.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -2
  3. data/README.md +18 -19
  4. data/lib/action_controller/serialization.rb +9 -1
  5. data/lib/active_model/serializer/collection_serializer.rb +11 -2
  6. data/lib/active_model/serializer/concerns/caching.rb +2 -1
  7. data/lib/active_model/serializer/fieldset.rb +1 -1
  8. data/lib/active_model/serializer/reflection.rb +4 -4
  9. data/lib/active_model/serializer/version.rb +1 -1
  10. data/lib/active_model/serializer.rb +13 -4
  11. data/lib/active_model_serializers/adapter/attributes.rb +21 -0
  12. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +5 -1
  13. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +1 -1
  14. data/lib/active_model_serializers/model/caching.rb +26 -0
  15. metadata +20 -292
  16. data/.github/ISSUE_TEMPLATE.md +0 -29
  17. data/.github/PULL_REQUEST_TEMPLATE.md +0 -15
  18. data/.gitignore +0 -35
  19. data/.rubocop.yml +0 -109
  20. data/.simplecov +0 -110
  21. data/.travis.yml +0 -63
  22. data/CODE_OF_CONDUCT.md +0 -74
  23. data/CONTRIBUTING.md +0 -105
  24. data/Gemfile +0 -74
  25. data/Rakefile +0 -76
  26. data/active_model_serializers.gemspec +0 -64
  27. data/appveyor.yml +0 -28
  28. data/bin/bench +0 -171
  29. data/bin/bench_regression +0 -316
  30. data/bin/rubocop +0 -38
  31. data/bin/serve_benchmark +0 -39
  32. data/docs/README.md +0 -41
  33. data/docs/STYLE.md +0 -58
  34. data/docs/general/adapters.md +0 -269
  35. data/docs/general/caching.md +0 -58
  36. data/docs/general/configuration_options.md +0 -185
  37. data/docs/general/deserialization.md +0 -100
  38. data/docs/general/fields.md +0 -31
  39. data/docs/general/getting_started.md +0 -133
  40. data/docs/general/instrumentation.md +0 -40
  41. data/docs/general/key_transforms.md +0 -40
  42. data/docs/general/logging.md +0 -21
  43. data/docs/general/rendering.md +0 -293
  44. data/docs/general/serializers.md +0 -495
  45. data/docs/how-open-source-maintained.jpg +0 -0
  46. data/docs/howto/add_pagination_links.md +0 -138
  47. data/docs/howto/add_relationship_links.md +0 -140
  48. data/docs/howto/add_root_key.md +0 -62
  49. data/docs/howto/grape_integration.md +0 -42
  50. data/docs/howto/outside_controller_use.md +0 -66
  51. data/docs/howto/passing_arbitrary_options.md +0 -27
  52. data/docs/howto/serialize_poro.md +0 -73
  53. data/docs/howto/test.md +0 -154
  54. data/docs/howto/upgrade_from_0_8_to_0_10.md +0 -265
  55. data/docs/integrations/ember-and-json-api.md +0 -147
  56. data/docs/integrations/grape.md +0 -19
  57. data/docs/jsonapi/errors.md +0 -56
  58. data/docs/jsonapi/schema/schema.json +0 -366
  59. data/docs/jsonapi/schema.md +0 -151
  60. data/docs/rfcs/0000-namespace.md +0 -106
  61. data/docs/rfcs/template.md +0 -15
  62. data/test/action_controller/adapter_selector_test.rb +0 -64
  63. data/test/action_controller/explicit_serializer_test.rb +0 -137
  64. data/test/action_controller/json/include_test.rb +0 -248
  65. data/test/action_controller/json_api/deserialization_test.rb +0 -114
  66. data/test/action_controller/json_api/errors_test.rb +0 -42
  67. data/test/action_controller/json_api/fields_test.rb +0 -68
  68. data/test/action_controller/json_api/linked_test.rb +0 -204
  69. data/test/action_controller/json_api/pagination_test.rb +0 -126
  70. data/test/action_controller/json_api/transform_test.rb +0 -191
  71. data/test/action_controller/lookup_proc_test.rb +0 -51
  72. data/test/action_controller/namespace_lookup_test.rb +0 -234
  73. data/test/action_controller/serialization_scope_name_test.rb +0 -237
  74. data/test/action_controller/serialization_test.rb +0 -480
  75. data/test/active_model_serializers/adapter_for_test.rb +0 -210
  76. data/test/active_model_serializers/json_pointer_test.rb +0 -24
  77. data/test/active_model_serializers/logging_test.rb +0 -79
  78. data/test/active_model_serializers/model_test.rb +0 -144
  79. data/test/active_model_serializers/railtie_test_isolated.rb +0 -70
  80. data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +0 -163
  81. data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -73
  82. data/test/active_model_serializers/test/schema_test.rb +0 -133
  83. data/test/active_model_serializers/test/serializer_test.rb +0 -64
  84. data/test/active_record_test.rb +0 -11
  85. data/test/adapter/attributes_test.rb +0 -42
  86. data/test/adapter/deprecation_test.rb +0 -102
  87. data/test/adapter/json/belongs_to_test.rb +0 -47
  88. data/test/adapter/json/collection_test.rb +0 -106
  89. data/test/adapter/json/has_many_test.rb +0 -55
  90. data/test/adapter/json/transform_test.rb +0 -95
  91. data/test/adapter/json_api/belongs_to_test.rb +0 -157
  92. data/test/adapter/json_api/collection_test.rb +0 -98
  93. data/test/adapter/json_api/errors_test.rb +0 -78
  94. data/test/adapter/json_api/fields_test.rb +0 -98
  95. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -98
  96. data/test/adapter/json_api/has_many_test.rb +0 -175
  97. data/test/adapter/json_api/has_one_test.rb +0 -82
  98. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +0 -215
  99. data/test/adapter/json_api/json_api_test.rb +0 -35
  100. data/test/adapter/json_api/linked_test.rb +0 -415
  101. data/test/adapter/json_api/links_test.rb +0 -112
  102. data/test/adapter/json_api/pagination_links_test.rb +0 -208
  103. data/test/adapter/json_api/parse_test.rb +0 -139
  104. data/test/adapter/json_api/relationship_test.rb +0 -399
  105. data/test/adapter/json_api/resource_meta_test.rb +0 -102
  106. data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -84
  107. data/test/adapter/json_api/transform_test.rb +0 -514
  108. data/test/adapter/json_api/type_test.rb +0 -195
  109. data/test/adapter/json_test.rb +0 -48
  110. data/test/adapter/null_test.rb +0 -24
  111. data/test/adapter/polymorphic_test.rb +0 -220
  112. data/test/adapter_test.rb +0 -69
  113. data/test/array_serializer_test.rb +0 -24
  114. data/test/benchmark/app.rb +0 -67
  115. data/test/benchmark/benchmarking_support.rb +0 -69
  116. data/test/benchmark/bm_active_record.rb +0 -83
  117. data/test/benchmark/bm_adapter.rb +0 -40
  118. data/test/benchmark/bm_caching.rb +0 -121
  119. data/test/benchmark/bm_lookup_chain.rb +0 -85
  120. data/test/benchmark/bm_transform.rb +0 -47
  121. data/test/benchmark/config.ru +0 -3
  122. data/test/benchmark/controllers.rb +0 -85
  123. data/test/benchmark/fixtures.rb +0 -221
  124. data/test/cache_test.rb +0 -717
  125. data/test/collection_serializer_test.rb +0 -129
  126. data/test/fixtures/active_record.rb +0 -115
  127. data/test/fixtures/poro.rb +0 -227
  128. data/test/generators/scaffold_controller_generator_test.rb +0 -26
  129. data/test/generators/serializer_generator_test.rb +0 -77
  130. data/test/grape_test.rb +0 -198
  131. data/test/lint_test.rb +0 -51
  132. data/test/logger_test.rb +0 -22
  133. data/test/poro_test.rb +0 -11
  134. data/test/serializable_resource_test.rb +0 -81
  135. data/test/serializers/association_macros_test.rb +0 -39
  136. data/test/serializers/associations_test.rb +0 -520
  137. data/test/serializers/attribute_test.rb +0 -155
  138. data/test/serializers/attributes_test.rb +0 -54
  139. data/test/serializers/caching_configuration_test_isolated.rb +0 -172
  140. data/test/serializers/configuration_test.rb +0 -34
  141. data/test/serializers/fieldset_test.rb +0 -16
  142. data/test/serializers/meta_test.rb +0 -204
  143. data/test/serializers/options_test.rb +0 -34
  144. data/test/serializers/read_attribute_for_serialization_test.rb +0 -81
  145. data/test/serializers/reflection_test.rb +0 -481
  146. data/test/serializers/root_test.rb +0 -23
  147. data/test/serializers/serialization_test.rb +0 -57
  148. data/test/serializers/serializer_for_test.rb +0 -138
  149. data/test/serializers/serializer_for_with_namespace_test.rb +0 -90
  150. data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  151. data/test/support/isolated_unit.rb +0 -86
  152. data/test/support/rails5_shims.rb +0 -55
  153. data/test/support/rails_app.rb +0 -40
  154. data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  155. data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
  156. data/test/support/schemas/custom/show.json +0 -7
  157. data/test/support/schemas/hyper_schema.json +0 -93
  158. data/test/support/schemas/render_using_json_api.json +0 -43
  159. data/test/support/schemas/simple_json_pointers.json +0 -10
  160. data/test/support/serialization_testing.rb +0 -81
  161. data/test/test_helper.rb +0 -72
@@ -1,112 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module ActiveModelSerializers
6
- module Adapter
7
- class JsonApi
8
- class LinksTest < ActiveSupport::TestCase
9
- class LinkAuthor < ::Model; associations :posts end
10
- class LinkAuthorSerializer < ActiveModel::Serializer
11
- link :self do
12
- href "http://example.com/link_author/#{object.id}"
13
- meta stuff: 'value'
14
- end
15
- link(:author) { link_author_url(object.id) }
16
- link(:link_authors) { url_for(controller: 'link_authors', action: 'index', only_path: false) }
17
- link(:posts) { link_author_posts_url(object.id) }
18
- link :resource, 'http://example.com/resource'
19
- link :yet_another do
20
- "http://example.com/resource/#{object.id}"
21
- end
22
- link :conditional1, if: -> { instance_truth } do
23
- "http://example.com/conditional1/#{object.id}"
24
- end
25
- link :conditional2, if: :instance_falsey do
26
- "http://example.com/conditional2/#{object.id}"
27
- end
28
- link(:nil) { nil }
29
-
30
- def instance_truth
31
- true
32
- end
33
-
34
- def instance_falsey
35
- false
36
- end
37
- end
38
-
39
- def setup
40
- Rails.application.routes.draw do
41
- resources :link_authors do
42
- resources :posts
43
- end
44
- end
45
- @post = Post.new(id: 1337, comments: [], author: nil)
46
- @author = LinkAuthor.new(id: 1337, posts: [@post])
47
- end
48
-
49
- def test_toplevel_links
50
- hash = ActiveModelSerializers::SerializableResource.new(
51
- @post,
52
- adapter: :json_api,
53
- links: {
54
- self: {
55
- href: 'http://example.com/posts',
56
- meta: {
57
- stuff: 'value'
58
- }
59
- }
60
- }
61
- ).serializable_hash
62
- expected = {
63
- self: {
64
- href: 'http://example.com/posts',
65
- meta: {
66
- stuff: 'value'
67
- }
68
- }
69
- }
70
- assert_equal(expected, hash[:links])
71
- end
72
-
73
- def test_nil_toplevel_links
74
- hash = ActiveModelSerializers::SerializableResource.new(
75
- @post,
76
- adapter: :json_api,
77
- links: nil
78
- ).serializable_hash
79
- refute hash.key?(:links), 'No links key to be output'
80
- end
81
-
82
- def test_nil_toplevel_links_json_adapter
83
- hash = ActiveModelSerializers::SerializableResource.new(
84
- @post,
85
- adapter: :json,
86
- links: nil
87
- ).serializable_hash
88
- refute hash.key?(:links), 'No links key to be output'
89
- end
90
-
91
- def test_resource_links
92
- hash = serializable(@author, adapter: :json_api).serializable_hash
93
- expected = {
94
- self: {
95
- href: 'http://example.com/link_author/1337',
96
- meta: {
97
- stuff: 'value'
98
- }
99
- },
100
- author: 'http://example.com/link_authors/1337',
101
- :"link-authors" => 'http://example.com/link_authors',
102
- resource: 'http://example.com/resource',
103
- posts: 'http://example.com/link_authors/1337/posts',
104
- :"yet-another" => 'http://example.com/resource/1337',
105
- conditional1: 'http://example.com/conditional1/1337'
106
- }
107
- assert_equal(expected, hash[:data][:links])
108
- end
109
- end
110
- end
111
- end
112
- end
@@ -1,208 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
- require 'will_paginate/array'
5
- require 'kaminari'
6
- require 'kaminari/hooks'
7
- ::Kaminari::Hooks.init
8
-
9
- module ActiveModelSerializers
10
- module Adapter
11
- class JsonApi
12
- class PaginationLinksTest < ActiveSupport::TestCase
13
- URI = 'http://example.com'.freeze
14
-
15
- def setup
16
- ActionController::Base.cache_store.clear
17
- @array = [
18
- Profile.new(id: 1, name: 'Name 1', description: 'Description 1', comments: 'Comments 1'),
19
- Profile.new(id: 2, name: 'Name 2', description: 'Description 2', comments: 'Comments 2'),
20
- Profile.new(id: 3, name: 'Name 3', description: 'Description 3', comments: 'Comments 3'),
21
- Profile.new(id: 4, name: 'Name 4', description: 'Description 4', comments: 'Comments 4'),
22
- Profile.new(id: 5, name: 'Name 5', description: 'Description 5', comments: 'Comments 5')
23
- ]
24
- end
25
-
26
- def mock_request(query_parameters = {}, original_url = URI)
27
- context = Minitest::Mock.new
28
- context.expect(:request_url, original_url)
29
- context.expect(:query_parameters, query_parameters)
30
- context.expect(:key_transform, nil)
31
- end
32
-
33
- def load_adapter(paginated_collection, mock_request = nil)
34
- render_options = { adapter: :json_api }
35
- render_options[:serialization_context] = mock_request if mock_request
36
- serializable(paginated_collection, render_options)
37
- end
38
-
39
- def using_kaminari(page = 2)
40
- Kaminari.paginate_array(@array).page(page).per(2)
41
- end
42
-
43
- def using_will_paginate(page = 2)
44
- @array.paginate(page: page, per_page: 2)
45
- end
46
-
47
- def data
48
- {
49
- data: [
50
- { id: '1', type: 'profiles', attributes: { name: 'Name 1', description: 'Description 1' } },
51
- { id: '2', type: 'profiles', attributes: { name: 'Name 2', description: 'Description 2' } },
52
- { id: '3', type: 'profiles', attributes: { name: 'Name 3', description: 'Description 3' } },
53
- { id: '4', type: 'profiles', attributes: { name: 'Name 4', description: 'Description 4' } },
54
- { id: '5', type: 'profiles', attributes: { name: 'Name 5', description: 'Description 5' } }
55
- ]
56
- }
57
- end
58
-
59
- def empty_collection_links
60
- {
61
- self: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
62
- first: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
63
- prev: nil,
64
- next: nil,
65
- last: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2"
66
- }
67
- end
68
-
69
- def links
70
- {
71
- links: {
72
- self: "#{URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2",
73
- first: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
74
- prev: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
75
- next: "#{URI}?page%5Bnumber%5D=3&page%5Bsize%5D=2",
76
- last: "#{URI}?page%5Bnumber%5D=3&page%5Bsize%5D=2"
77
- }
78
- }
79
- end
80
-
81
- def last_page_links
82
- {
83
- links: {
84
- self: "#{URI}?page%5Bnumber%5D=3&page%5Bsize%5D=2",
85
- first: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
86
- prev: "#{URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2",
87
- next: nil,
88
- last: "#{URI}?page%5Bnumber%5D=3&page%5Bsize%5D=2"
89
- }
90
- }
91
- end
92
-
93
- def expected_response_when_unpaginatable
94
- data
95
- end
96
-
97
- def expected_response_with_pagination_links
98
- {}.tap do |hash|
99
- hash[:data] = data.values.flatten[2..3]
100
- hash.merge! links
101
- end
102
- end
103
-
104
- def expected_response_without_pagination_links
105
- {}.tap do |hash|
106
- hash[:data] = data.values.flatten[2..3]
107
- end
108
- end
109
-
110
- def expected_response_with_pagination_links_and_additional_params
111
- new_links = links[:links].each_with_object({}) { |(key, value), hash| hash[key] = "#{value}&test=test" }
112
- {}.tap do |hash|
113
- hash[:data] = data.values.flatten[2..3]
114
- hash.merge! links: new_links
115
- end
116
- end
117
-
118
- def expected_response_with_last_page_pagination_links
119
- {}.tap do |hash|
120
- hash[:data] = [data.values.flatten.last]
121
- hash.merge! last_page_links
122
- end
123
- end
124
-
125
- def expected_response_with_empty_collection_pagination_links
126
- {}.tap do |hash|
127
- hash[:data] = []
128
- hash.merge! links: empty_collection_links
129
- end
130
- end
131
-
132
- def test_pagination_links_using_kaminari
133
- adapter = load_adapter(using_kaminari, mock_request)
134
-
135
- assert_equal expected_response_with_pagination_links, adapter.serializable_hash
136
- end
137
-
138
- def test_pagination_links_using_will_paginate
139
- adapter = load_adapter(using_will_paginate, mock_request)
140
-
141
- assert_equal expected_response_with_pagination_links, adapter.serializable_hash
142
- end
143
-
144
- def test_pagination_links_with_additional_params
145
- adapter = load_adapter(using_will_paginate, mock_request(test: 'test'))
146
-
147
- assert_equal expected_response_with_pagination_links_and_additional_params,
148
- adapter.serializable_hash
149
- end
150
-
151
- def test_pagination_links_when_zero_results_kaminari
152
- @array = []
153
-
154
- adapter = load_adapter(using_kaminari(1), mock_request)
155
-
156
- assert_equal expected_response_with_empty_collection_pagination_links, adapter.serializable_hash
157
- end
158
-
159
- def test_pagination_links_when_zero_results_will_paginate
160
- @array = []
161
-
162
- adapter = load_adapter(using_will_paginate(1), mock_request)
163
-
164
- assert_equal expected_response_with_empty_collection_pagination_links, adapter.serializable_hash
165
- end
166
-
167
- def test_last_page_pagination_links_using_kaminari
168
- adapter = load_adapter(using_kaminari(3), mock_request)
169
-
170
- assert_equal expected_response_with_last_page_pagination_links, adapter.serializable_hash
171
- end
172
-
173
- def test_last_page_pagination_links_using_will_paginate
174
- adapter = load_adapter(using_will_paginate(3), mock_request)
175
-
176
- assert_equal expected_response_with_last_page_pagination_links, adapter.serializable_hash
177
- end
178
-
179
- def test_not_showing_pagination_links
180
- adapter = load_adapter(@array, mock_request)
181
-
182
- assert_equal expected_response_when_unpaginatable, adapter.serializable_hash
183
- end
184
-
185
- def test_raises_descriptive_error_when_serialization_context_unset
186
- render_options = { adapter: :json_api }
187
- adapter = serializable(using_kaminari, render_options)
188
- exception_class = ActiveModelSerializers::Adapter::JsonApi::PaginationLinks::MissingSerializationContextError
189
-
190
- exception = assert_raises(exception_class) do
191
- adapter.as_json
192
- end
193
- assert_equal exception_class, exception.class
194
- assert_match(/CollectionSerializer#paginated\?/, exception.message)
195
- end
196
-
197
- def test_pagination_links_not_present_when_disabled
198
- ActiveModel::Serializer.config.jsonapi_pagination_links_enabled = false
199
- adapter = load_adapter(using_kaminari, mock_request)
200
-
201
- assert_equal expected_response_without_pagination_links, adapter.serializable_hash
202
- ensure
203
- ActiveModel::Serializer.config.jsonapi_pagination_links_enabled = true
204
- end
205
- end
206
- end
207
- end
208
- end
@@ -1,139 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
- module ActiveModelSerializers
5
- module Adapter
6
- class JsonApi
7
- module Deserialization
8
- class ParseTest < Minitest::Test
9
- def setup
10
- @hash = {
11
- 'data' => {
12
- 'type' => 'photos',
13
- 'id' => 'zorglub',
14
- 'attributes' => {
15
- 'title' => 'Ember Hamster',
16
- 'src' => 'http://example.com/images/productivity.png'
17
- },
18
- 'relationships' => {
19
- 'author' => {
20
- 'data' => nil
21
- },
22
- 'photographer' => {
23
- 'data' => { 'type' => 'people', 'id' => '9' }
24
- },
25
- 'comments' => {
26
- 'data' => [
27
- { 'type' => 'comments', 'id' => '1' },
28
- { 'type' => 'comments', 'id' => '2' }
29
- ]
30
- }
31
- }
32
- }
33
- }
34
- @params = ActionController::Parameters.new(@hash)
35
- @expected = {
36
- id: 'zorglub',
37
- title: 'Ember Hamster',
38
- src: 'http://example.com/images/productivity.png',
39
- author_id: nil,
40
- photographer_id: '9',
41
- comment_ids: %w(1 2)
42
- }
43
-
44
- @illformed_payloads = [nil,
45
- {},
46
- {
47
- 'data' => nil
48
- }, {
49
- 'data' => { 'attributes' => [] }
50
- }, {
51
- 'data' => { 'relationships' => [] }
52
- }, {
53
- 'data' => {
54
- 'relationships' => { 'rel' => nil }
55
- }
56
- }, {
57
- 'data' => {
58
- 'relationships' => { 'rel' => {} }
59
- }
60
- }]
61
- end
62
-
63
- def test_hash
64
- parsed_hash = ActiveModelSerializers::Adapter::JsonApi::Deserialization.parse!(@hash)
65
- assert_equal(@expected, parsed_hash)
66
- end
67
-
68
- def test_actioncontroller_parameters
69
- assert_equal(false, @params.permitted?)
70
- parsed_hash = ActiveModelSerializers::Adapter::JsonApi::Deserialization.parse!(@params)
71
- assert_equal(@expected, parsed_hash)
72
- end
73
-
74
- def test_illformed_payloads_safe
75
- @illformed_payloads.each do |p|
76
- parsed_hash = ActiveModelSerializers::Adapter::JsonApi::Deserialization.parse(p)
77
- assert_equal({}, parsed_hash)
78
- end
79
- end
80
-
81
- def test_illformed_payloads_unsafe
82
- @illformed_payloads.each do |p|
83
- assert_raises(InvalidDocument) do
84
- ActiveModelSerializers::Adapter::JsonApi::Deserialization.parse!(p)
85
- end
86
- end
87
- end
88
-
89
- def test_filter_fields_only
90
- parsed_hash = ActiveModelSerializers::Adapter::JsonApi::Deserialization.parse!(@hash, only: [:id, :title, :author])
91
- expected = {
92
- id: 'zorglub',
93
- title: 'Ember Hamster',
94
- author_id: nil
95
- }
96
- assert_equal(expected, parsed_hash)
97
- end
98
-
99
- def test_filter_fields_except
100
- parsed_hash = ActiveModelSerializers::Adapter::JsonApi::Deserialization.parse!(@hash, except: [:id, :title, :author])
101
- expected = {
102
- src: 'http://example.com/images/productivity.png',
103
- photographer_id: '9',
104
- comment_ids: %w(1 2)
105
- }
106
- assert_equal(expected, parsed_hash)
107
- end
108
-
109
- def test_keys
110
- parsed_hash = ActiveModelSerializers::Adapter::JsonApi::Deserialization.parse!(@hash, keys: { author: :user, title: :post_title })
111
- expected = {
112
- id: 'zorglub',
113
- post_title: 'Ember Hamster',
114
- src: 'http://example.com/images/productivity.png',
115
- user_id: nil,
116
- photographer_id: '9',
117
- comment_ids: %w(1 2)
118
- }
119
- assert_equal(expected, parsed_hash)
120
- end
121
-
122
- def test_polymorphic
123
- parsed_hash = ActiveModelSerializers::Adapter::JsonApi::Deserialization.parse!(@hash, polymorphic: [:photographer])
124
- expected = {
125
- id: 'zorglub',
126
- title: 'Ember Hamster',
127
- src: 'http://example.com/images/productivity.png',
128
- author_id: nil,
129
- photographer_id: '9',
130
- photographer_type: 'Person',
131
- comment_ids: %w(1 2)
132
- }
133
- assert_equal(expected, parsed_hash)
134
- end
135
- end
136
- end
137
- end
138
- end
139
- end