active_model_serializers 0.10.8 → 0.10.9

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 (162) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -0
  3. data/.travis.yml +12 -3
  4. data/CHANGELOG.md +14 -1
  5. data/Gemfile +3 -1
  6. data/Rakefile +2 -0
  7. data/active_model_serializers.gemspec +1 -0
  8. data/lib/action_controller/serialization.rb +2 -0
  9. data/lib/active_model/serializable_resource.rb +2 -0
  10. data/lib/active_model/serializer.rb +2 -0
  11. data/lib/active_model/serializer/adapter.rb +2 -0
  12. data/lib/active_model/serializer/adapter/attributes.rb +2 -0
  13. data/lib/active_model/serializer/adapter/base.rb +2 -0
  14. data/lib/active_model/serializer/adapter/json.rb +2 -0
  15. data/lib/active_model/serializer/adapter/json_api.rb +2 -0
  16. data/lib/active_model/serializer/adapter/null.rb +2 -0
  17. data/lib/active_model/serializer/array_serializer.rb +2 -0
  18. data/lib/active_model/serializer/association.rb +2 -0
  19. data/lib/active_model/serializer/attribute.rb +2 -0
  20. data/lib/active_model/serializer/belongs_to_reflection.rb +2 -0
  21. data/lib/active_model/serializer/collection_serializer.rb +2 -0
  22. data/lib/active_model/serializer/concerns/caching.rb +5 -1
  23. data/lib/active_model/serializer/error_serializer.rb +2 -0
  24. data/lib/active_model/serializer/errors_serializer.rb +2 -0
  25. data/lib/active_model/serializer/field.rb +2 -0
  26. data/lib/active_model/serializer/fieldset.rb +2 -0
  27. data/lib/active_model/serializer/has_many_reflection.rb +2 -0
  28. data/lib/active_model/serializer/has_one_reflection.rb +2 -0
  29. data/lib/active_model/serializer/lazy_association.rb +5 -2
  30. data/lib/active_model/serializer/link.rb +2 -0
  31. data/lib/active_model/serializer/lint.rb +2 -0
  32. data/lib/active_model/serializer/null.rb +2 -0
  33. data/lib/active_model/serializer/reflection.rb +2 -0
  34. data/lib/active_model/serializer/version.rb +3 -1
  35. data/lib/active_model_serializers.rb +2 -0
  36. data/lib/active_model_serializers/adapter.rb +3 -1
  37. data/lib/active_model_serializers/adapter/attributes.rb +2 -0
  38. data/lib/active_model_serializers/adapter/base.rb +2 -0
  39. data/lib/active_model_serializers/adapter/json.rb +2 -0
  40. data/lib/active_model_serializers/adapter/json_api.rb +2 -0
  41. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +2 -0
  42. data/lib/active_model_serializers/adapter/json_api/error.rb +2 -0
  43. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +2 -0
  44. data/lib/active_model_serializers/adapter/json_api/link.rb +2 -0
  45. data/lib/active_model_serializers/adapter/json_api/meta.rb +2 -0
  46. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +2 -0
  47. data/lib/active_model_serializers/adapter/json_api/relationship.rb +2 -0
  48. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +2 -0
  49. data/lib/active_model_serializers/adapter/null.rb +2 -0
  50. data/lib/active_model_serializers/callbacks.rb +2 -0
  51. data/lib/active_model_serializers/deprecate.rb +2 -0
  52. data/lib/active_model_serializers/deserialization.rb +2 -0
  53. data/lib/active_model_serializers/json_pointer.rb +2 -0
  54. data/lib/active_model_serializers/logging.rb +2 -0
  55. data/lib/active_model_serializers/lookup_chain.rb +2 -0
  56. data/lib/active_model_serializers/model.rb +2 -0
  57. data/lib/active_model_serializers/railtie.rb +2 -0
  58. data/lib/active_model_serializers/register_jsonapi_renderer.rb +2 -0
  59. data/lib/active_model_serializers/serializable_resource.rb +4 -2
  60. data/lib/active_model_serializers/serialization_context.rb +2 -0
  61. data/lib/active_model_serializers/test.rb +2 -0
  62. data/lib/active_model_serializers/test/schema.rb +2 -0
  63. data/lib/active_model_serializers/test/serializer.rb +2 -0
  64. data/lib/generators/rails/resource_override.rb +2 -0
  65. data/lib/generators/rails/serializer_generator.rb +2 -0
  66. data/lib/grape/active_model_serializers.rb +2 -0
  67. data/lib/grape/formatters/active_model_serializers.rb +2 -0
  68. data/lib/grape/helpers/active_model_serializers.rb +2 -0
  69. data/lib/tasks/rubocop.rake +2 -0
  70. data/test/action_controller/adapter_selector_test.rb +2 -0
  71. data/test/action_controller/explicit_serializer_test.rb +2 -0
  72. data/test/action_controller/json/include_test.rb +2 -0
  73. data/test/action_controller/json_api/deserialization_test.rb +2 -0
  74. data/test/action_controller/json_api/errors_test.rb +2 -0
  75. data/test/action_controller/json_api/fields_test.rb +2 -0
  76. data/test/action_controller/json_api/linked_test.rb +2 -0
  77. data/test/action_controller/json_api/pagination_test.rb +2 -0
  78. data/test/action_controller/json_api/transform_test.rb +2 -0
  79. data/test/action_controller/lookup_proc_test.rb +2 -0
  80. data/test/action_controller/namespace_lookup_test.rb +2 -0
  81. data/test/action_controller/serialization_scope_name_test.rb +2 -0
  82. data/test/action_controller/serialization_test.rb +2 -0
  83. data/test/active_model_serializers/adapter_for_test.rb +2 -0
  84. data/test/active_model_serializers/json_pointer_test.rb +2 -0
  85. data/test/active_model_serializers/logging_test.rb +2 -0
  86. data/test/active_model_serializers/model_test.rb +2 -0
  87. data/test/active_model_serializers/railtie_test_isolated.rb +2 -0
  88. data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +2 -0
  89. data/test/active_model_serializers/serialization_context_test_isolated.rb +2 -0
  90. data/test/active_model_serializers/test/schema_test.rb +2 -0
  91. data/test/active_model_serializers/test/serializer_test.rb +2 -0
  92. data/test/active_record_test.rb +2 -0
  93. data/test/adapter/attributes_test.rb +2 -0
  94. data/test/adapter/deprecation_test.rb +2 -0
  95. data/test/adapter/json/belongs_to_test.rb +2 -0
  96. data/test/adapter/json/collection_test.rb +2 -0
  97. data/test/adapter/json/has_many_test.rb +2 -0
  98. data/test/adapter/json/transform_test.rb +2 -0
  99. data/test/adapter/json_api/belongs_to_test.rb +2 -0
  100. data/test/adapter/json_api/collection_test.rb +2 -0
  101. data/test/adapter/json_api/errors_test.rb +2 -0
  102. data/test/adapter/json_api/fields_test.rb +2 -0
  103. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +2 -0
  104. data/test/adapter/json_api/has_many_test.rb +2 -0
  105. data/test/adapter/json_api/has_one_test.rb +2 -0
  106. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +2 -0
  107. data/test/adapter/json_api/json_api_test.rb +2 -0
  108. data/test/adapter/json_api/linked_test.rb +2 -0
  109. data/test/adapter/json_api/links_test.rb +2 -0
  110. data/test/adapter/json_api/pagination_links_test.rb +2 -0
  111. data/test/adapter/json_api/parse_test.rb +2 -0
  112. data/test/adapter/json_api/relationship_test.rb +2 -0
  113. data/test/adapter/json_api/resource_meta_test.rb +2 -0
  114. data/test/adapter/json_api/toplevel_jsonapi_test.rb +2 -0
  115. data/test/adapter/json_api/transform_test.rb +2 -0
  116. data/test/adapter/json_api/type_test.rb +2 -0
  117. data/test/adapter/json_test.rb +2 -0
  118. data/test/adapter/null_test.rb +2 -0
  119. data/test/adapter/polymorphic_test.rb +2 -0
  120. data/test/adapter_test.rb +2 -0
  121. data/test/array_serializer_test.rb +2 -0
  122. data/test/benchmark/app.rb +2 -0
  123. data/test/benchmark/benchmarking_support.rb +2 -0
  124. data/test/benchmark/bm_active_record.rb +2 -0
  125. data/test/benchmark/bm_adapter.rb +2 -0
  126. data/test/benchmark/bm_caching.rb +2 -0
  127. data/test/benchmark/bm_lookup_chain.rb +2 -0
  128. data/test/benchmark/bm_transform.rb +2 -0
  129. data/test/benchmark/controllers.rb +2 -0
  130. data/test/benchmark/fixtures.rb +2 -0
  131. data/test/cache_test.rb +66 -0
  132. data/test/collection_serializer_test.rb +2 -0
  133. data/test/fixtures/active_record.rb +2 -0
  134. data/test/fixtures/poro.rb +2 -0
  135. data/test/generators/scaffold_controller_generator_test.rb +2 -0
  136. data/test/generators/serializer_generator_test.rb +2 -0
  137. data/test/grape_test.rb +2 -0
  138. data/test/lint_test.rb +2 -0
  139. data/test/logger_test.rb +2 -0
  140. data/test/poro_test.rb +2 -0
  141. data/test/serializable_resource_test.rb +2 -0
  142. data/test/serializers/association_macros_test.rb +2 -0
  143. data/test/serializers/associations_test.rb +2 -0
  144. data/test/serializers/attribute_test.rb +2 -0
  145. data/test/serializers/attributes_test.rb +2 -0
  146. data/test/serializers/caching_configuration_test_isolated.rb +2 -0
  147. data/test/serializers/configuration_test.rb +2 -0
  148. data/test/serializers/fieldset_test.rb +2 -0
  149. data/test/serializers/meta_test.rb +2 -0
  150. data/test/serializers/options_test.rb +2 -0
  151. data/test/serializers/read_attribute_for_serialization_test.rb +2 -0
  152. data/test/serializers/reflection_test.rb +2 -0
  153. data/test/serializers/root_test.rb +2 -0
  154. data/test/serializers/serialization_test.rb +2 -0
  155. data/test/serializers/serializer_for_test.rb +2 -0
  156. data/test/serializers/serializer_for_with_namespace_test.rb +2 -0
  157. data/test/support/isolated_unit.rb +2 -0
  158. data/test/support/rails5_shims.rb +2 -0
  159. data/test/support/rails_app.rb +2 -0
  160. data/test/support/serialization_testing.rb +2 -0
  161. data/test/test_helper.rb +2 -0
  162. metadata +2 -2
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require_relative 'collection_serializer_test'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # https://github.com/rails-api/active_model_serializers/pull/872
2
4
  # approx ref 792fb8a9053f8db3c562dae4f40907a582dd1720 to test against
3
5
  require 'bundler/setup'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'benchmark/ips'
2
4
  require 'json'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative './benchmarking_support'
2
4
  require_relative './app'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative './benchmarking_support'
2
4
  require_relative './app'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative './benchmarking_support'
2
4
  require_relative './app'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative './benchmarking_support'
2
4
  require_relative './app'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative './benchmarking_support'
2
4
  require_relative './app'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PrimaryResourceController < ActionController::Base
2
4
  PRIMARY_RESOURCE =
3
5
  begin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Rails.configuration.serializers = []
2
4
  class HasOneRelationshipSerializer < ActiveModel::Serializer
3
5
  attributes :id, :first_name, :last_name
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'tmpdir'
3
5
  require 'tempfile'
@@ -53,6 +55,11 @@ module ActiveModelSerializers
53
55
  has_many :roles
54
56
  has_one :bio
55
57
  end
58
+ class AuthorSerializerWithCache < ActiveModel::Serializer
59
+ cache
60
+
61
+ attributes :name
62
+ end
56
63
 
57
64
  class Blog < ::Model
58
65
  attributes :name
@@ -144,6 +151,65 @@ module ActiveModelSerializers
144
151
  @blog_serializer = BlogSerializer.new(@blog)
145
152
  end
146
153
 
154
+ def test_expiring_of_cache_at_update_of_record
155
+ original_cache_versioning = :none
156
+
157
+ if ARModels::Author.respond_to?(:cache_versioning)
158
+ original_cache_versioning = ARModels::Author.cache_versioning
159
+ ARModels::Author.cache_versioning = true
160
+ end
161
+
162
+ author = ARModels::Author.create(name: 'Foo')
163
+ author_json = AuthorSerializerWithCache.new(author).as_json
164
+
165
+ assert_equal 'Foo', author_json[:name]
166
+
167
+ author.update_attributes(name: 'Bar')
168
+ author_json = AuthorSerializerWithCache.new(author).as_json
169
+
170
+ expected = 'Bar'
171
+ actual = author_json[:name]
172
+ if ENV['APPVEYOR'] && actual != expected
173
+ skip('Cache expiration tests sometimes fail on Appveyor. FIXME :)')
174
+ else
175
+ assert_equal expected, actual
176
+ end
177
+ ensure
178
+ ARModels::Author.cache_versioning = original_cache_versioning unless original_cache_versioning == :none
179
+ end
180
+
181
+ def test_cache_expiration_in_collection_on_update_of_record
182
+ original_cache_versioning = :none
183
+
184
+ if ARModels::Author.respond_to?(:cache_versioning)
185
+ original_cache_versioning = ARModels::Author.cache_versioning
186
+ ARModels::Author.cache_versioning = true
187
+ end
188
+
189
+ foo = 'Foo'
190
+ foo2 = 'Foo2'
191
+ author = ARModels::Author.create(name: foo)
192
+ author2 = ARModels::Author.create(name: foo2)
193
+ author_collection = [author, author, author2]
194
+
195
+ collection_json = render_object_with_cache(author_collection, each_serializer: AuthorSerializerWithCache)
196
+ actual = collection_json
197
+ expected = [{ name: foo }, { name: foo }, { name: foo2 }]
198
+ if ENV['APPVEYOR'] && actual != expected
199
+ skip('Cache expiration tests sometimes fail on Appveyor. FIXME :)')
200
+ else
201
+ assert_equal expected, actual
202
+ end
203
+
204
+ bar = 'Bar'
205
+ author.update!(name: bar)
206
+
207
+ collection_json = render_object_with_cache(author_collection, each_serializer: AuthorSerializerWithCache)
208
+ assert_equal [{ name: bar }, { name: bar }, { name: foo2 }], collection_json
209
+ ensure
210
+ ARModels::Author.cache_versioning = original_cache_versioning unless original_cache_versioning == :none
211
+ end
212
+
147
213
  def test_explicit_cache_store
148
214
  default_store = Class.new(ActiveModel::Serializer) do
149
215
  cache
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_record'
2
4
 
3
5
  ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Model < ActiveModelSerializers::Model
2
4
  rand(2).zero? && derive_attributes_from_names_and_fix_accessors
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'generators/rails/resource_override'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'generators/rails/resource_override'
3
5
  require 'generators/rails/serializer_generator'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  TestHelper.silence_warnings do
3
5
  require 'grape'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class PoroTest < ActiveSupport::TestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  module ActiveModel
3
5
  class Serializer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Execute this test in isolation
2
4
  require 'support/isolated_unit'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  module ActiveModel
3
5
  class Serializer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModel
2
4
  class Serializer
3
5
  class SerializationTest < ActiveSupport::TestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # https://github.com/rails/rails/blob/v5.0.0.beta1/railties/test/isolation/abstract_unit.rb
2
4
 
3
5
  # Usage Example:
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rails5Shims
2
4
  module ControllerTests
3
5
  # https://github.com/rails/rails/blob/b217354/actionpack/lib/action_controller/test_case.rb
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'support/isolated_unit'
2
4
  module ActiveModelSerializers
3
5
  RailsApplication = TestHelpers::Generation.make_basic_app do |app|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SerializationTesting
2
4
  def config
3
5
  ActiveModelSerializers.config
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Configure Rails Environment
2
4
  ENV['RAILS_ENV'] = 'test'
3
5
  require 'bundler/setup'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.8
4
+ version: 0.10.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Klabnik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-01 00:00:00.000000000 Z
11
+ date: 2019-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel