active_model_serializers 0.9.9 → 0.9.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -1
  3. data/lib/action_controller/serialization.rb +10 -1
  4. data/lib/action_controller/serialization_test_case.rb +3 -0
  5. data/lib/active_model/array_serializer.rb +2 -0
  6. data/lib/active_model/default_serializer.rb +2 -0
  7. data/lib/active_model/serializable/utils.rb +2 -0
  8. data/lib/active_model/serializable.rb +3 -1
  9. data/lib/active_model/serializer/association/has_many.rb +2 -0
  10. data/lib/active_model/serializer/association/has_one.rb +2 -0
  11. data/lib/active_model/serializer/association.rb +3 -3
  12. data/lib/active_model/serializer/config.rb +2 -0
  13. data/lib/active_model/serializer/generators/resource_override.rb +2 -0
  14. data/lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb +2 -0
  15. data/lib/active_model/serializer/generators/serializer/serializer_generator.rb +2 -0
  16. data/lib/active_model/serializer/railtie.rb +2 -0
  17. data/lib/active_model/serializer/version.rb +3 -1
  18. data/lib/active_model/serializer.rb +20 -24
  19. data/lib/active_model/serializer_support.rb +2 -0
  20. data/lib/active_model_serializers.rb +14 -2
  21. data/test/fixtures/poro.rb +4 -3
  22. data/test/integration/action_controller/serialization_test.rb +13 -13
  23. data/test/integration/generators/scaffold_controller_generator_test.rb +20 -20
  24. data/test/test_app.rb +4 -0
  25. data/test/test_helper.rb +7 -2
  26. data/test/unit/active_model/array_serializer/serialization_test.rb +3 -3
  27. data/test/unit/active_model/default_serializer_test.rb +1 -1
  28. data/test/unit/active_model/serializer/url_helpers_test.rb +1 -0
  29. metadata +46 -47
  30. data/lib/active_model_serializers/model/caching.rb +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52331f8ebc5267f272b9823aca4573af1f8a3493ff31ab42255a62003ec21c7e
4
- data.tar.gz: c050584bb445c216b604b33ea421c5705e0a7a35842d609edf2b2ce87f0facf5
3
+ metadata.gz: 61778c5b2b91da210dcc01075ef454249315c36600f82bea6996ed3290560003
4
+ data.tar.gz: 75e07b2aaf633ea4c5b785ea9d95a23bf9a240e8ee232c80a2c2a8bc9bca4666
5
5
  SHA512:
6
- metadata.gz: 7f1799ea050b2e12bc6ea3ca43b121801a0b33858ad3ad2e3b503d940a0439ceb83ab596d53e9cb46bc85dc25e92af8350d0f54db6eea51cb867a8bb475766dc
7
- data.tar.gz: 6c0d80acada0ae9f37638fe5ca5a95a23c43faaafba1f6474a6f337f2faadca92b587f5c83dbbe1b6ecbd38169e334940ed685dfcd88cf9c44bd7d9887667e04
6
+ metadata.gz: dd16f19a2585c7fb2fdb4b54990eb71e306def01fc6757d42c19b26820f43d3afb82d28c44efd6c228bffcac7a84324277e9d17facaa22935bf8f3a1cf4ee588
7
+ data.tar.gz: 06c780dffd320606869b1e377e08fdbc2b83f7ec2726ea100d3004e9ad7098f89d254ffb2b1b62477a08b0e6898b1a40ae0466bf137296559e3736c19ab7a760
data/CHANGELOG.md CHANGED
@@ -1,6 +1,33 @@
1
1
  ## 0.09.x
2
2
 
3
- ### [0-9-stable](https://github.com/rails-api/active_model_serializers/compare/v0.9.9...0-9-stable)
3
+ ### [0-9-stable](https://github.com/rails-api/active_model_serializers/compare/v0.9.12...0-9-stable)
4
+
5
+ ### [v0.9.12 (2024-04-11)](https://github.com/rails-api/active_model_serializers/compare/v0.9.11...v0.9.12)
6
+
7
+ - Fix
8
+ - [#2468](https://github.com/rails-api/active_model_serializers/pull/2468) Fix bug introduced in v0.9.9. Revert "Allow serializer_for to accept String instead of just class objects". (@byroot)
9
+ - Perf
10
+ - [#2466](https://github.com/rails-api/active_model_serializers/pull/2466) Prefer `defined?` to `Object.constants.include?` (@byroot)
11
+ - [#2467](https://github.com/rails-api/active_model_serializers/pull/2467) Lazily compute possible serializer class names (@byroot)
12
+ - Chore
13
+ - [#2469](https://github.com/rails-api/active_model_serializers/pull/2469) Fix various warnings in the test suite (@byroot)
14
+
15
+ ### [v0.9.11 (2024-04-09)](https://github.com/rails-api/active_model_serializers/compare/v0.9.10...v0.9.11)
16
+
17
+ v0.9.10 was built with an extra file included and so was yanked.
18
+ v0.9.11 is the same as v0.9.10 but doesn't have the extra file.
19
+
20
+ ### [v0.9.10 (2024-04-09)](https://github.com/rails-api/active_model_serializers/compare/v0.9.9...v0.9.10)
21
+
22
+ - Fix
23
+ - [#2464](https://github.com/rails-api/active_model_serializers/pull/2464) Do not load ActionController::TestCase in production (@byroot)
24
+ - Perf
25
+ - [#2465](https://github.com/rails-api/active_model_serializers/pull/2465) Make compatible with enable-frozen-string-literal (@byroot)
26
+ - [#2463](https://github.com/rails-api/active_model_serializers/pull/2463) Shape Friendly ActionController:Serialization (@byroot)
27
+ - Chore
28
+ - [#2462](https://github.com/rails-api/active_model_serializers/pull/2462]) Rails 7.1, Ruby 3.3 compat (@byroot)
29
+ - Test
30
+ - [#2447](https://github.com/rails-api/active_model_serializers/pull/2447) Configure CI on GitHub actoins (@Physium)
4
31
 
5
32
  ### [v0.9.9 (2023-05-18)](https://github.com/rails-api/active_model_serializers/compare/v0.9.8...v0.9.8)
6
33
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/core_ext/class/attribute'
2
4
 
3
5
  module ActionController
@@ -45,6 +47,12 @@ module ActionController
45
47
  end
46
48
  end
47
49
 
50
+ def initialize(*)
51
+ super
52
+ @namespace_for_serializer = nil
53
+ end
54
+ ruby2_keywords :initialize if respond_to?(:ruby2_keywords, true)
55
+
48
56
  [:_render_option_json, :_render_with_renderer_json].each do |renderer_method|
49
57
  define_method renderer_method do |resource, options|
50
58
  serializer = build_json_serializer(resource, options)
@@ -60,7 +68,8 @@ module ActionController
60
68
  private
61
69
 
62
70
  def namespace_for_serializer
63
- @namespace_for_serializer ||= namespace_for_class(self.class) unless namespace_for_class(self.class) == Object
71
+ @namespace_for_serializer ||= namespace_for_class(self.class)
72
+ @namespace_for_serializer unless @namespace_for_serializer == Object
64
73
  end
65
74
 
66
75
  def namespace_for_class(klass)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionController
2
4
  module SerializationAssertions
3
5
  extend ActiveSupport::Concern
@@ -24,6 +26,7 @@ module ActionController
24
26
  @serializers = Hash.new(0)
25
27
  super
26
28
  end
29
+ ruby2_keywords :process if respond_to?(:ruby2_keywords, true)
27
30
 
28
31
  # Asserts that the request was rendered with the appropriate serializers.
29
32
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_model/default_serializer'
2
4
  require 'active_model/serializable'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_model/serializable'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModel
2
4
  module Serializable
3
5
  module Utils
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_model/serializable/utils'
2
4
 
3
5
  module ActiveModel
4
6
  module Serializable
5
- INSTRUMENTATION_KEY = '!serialize.active_model_serializers'.freeze
7
+ INSTRUMENTATION_KEY = '!serialize.active_model_serializers'
6
8
 
7
9
  def self.included(base)
8
10
  base.extend Utils
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModel
2
4
  class Serializer
3
5
  class Association
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModel
2
4
  class Serializer
3
5
  class Association
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_model/default_serializer'
2
4
  require 'active_model/serializer/association/has_one'
3
5
  require 'active_model/serializer/association/has_many'
@@ -7,9 +9,7 @@ module ActiveModel
7
9
  class Association
8
10
  def initialize(name, options={})
9
11
  if options.has_key?(:include)
10
- ActiveSupport::Deprecation.warn <<-WARN
11
- ** Notice: include was renamed to embed_in_root. **
12
- WARN
12
+ ActiveSupport::Deprecation.warn("** Notice: include was renamed to embed_in_root. **")
13
13
  end
14
14
 
15
15
  @name = name.to_s
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModel
2
4
  class Serializer
3
5
  class Config
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators'
2
4
  require 'rails/generators/rails/resource/resource_generator'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators'
2
4
  require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rails
2
4
  module Generators
3
5
  class SerializerGenerator < NamedBase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModel
2
4
  class Railtie < Rails::Railtie
3
5
  initializer 'generators' do |app|
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModel
2
4
  class Serializer
3
- VERSION = '0.9.9'.freeze
5
+ VERSION = '0.9.12'
4
6
  end
5
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_model/array_serializer'
2
4
  require 'active_model/serializable'
3
5
  require 'active_model/serializer/association'
@@ -60,20 +62,19 @@ end
60
62
  if resource.respond_to?(:serializer_class)
61
63
  resource.serializer_class
62
64
  elsif resource.respond_to?(:to_ary)
63
- if Object.constants.include?(:ArraySerializer)
65
+ if defined?(::ArraySerializer)
64
66
  ::ArraySerializer
65
67
  else
66
68
  ArraySerializer
67
69
  end
68
70
  else
69
- search_list = build_serializer_class_list(resource, options)
70
- result = search_list.map do |klass_name|
71
- Serializer.serializers_cache.fetch_or_store(klass_name) do
72
- _const_get(klass_name)
73
- end
74
- end
75
-
76
- result.find { |serializer| !serializer.nil? }
71
+ each_possible_serializer(resource, options) do |klass_name|
72
+ serializer = Serializer.serializers_cache.fetch_or_store(klass_name) do
73
+ _const_get(klass_name)
74
+ end
75
+ return serializer unless serializer.nil?
76
+ end
77
+ nil
77
78
  end
78
79
  end
79
80
 
@@ -122,23 +123,17 @@ end
122
123
  attr
123
124
  end
124
125
 
125
- def build_serializer_class_list(resource, options)
126
- list = []
127
- list << build_serializer_class(resource, options)
128
- list << build_serializer_class(resource, {})
129
- list << build_serializer_class(resource.class.name.demodulize, {})
126
+ def each_possible_serializer(resource, options)
127
+ yield build_serializer_class(resource, options)
128
+ yield build_serializer_class(resource, {})
129
+ yield build_serializer_class(resource.class.name.demodulize, {})
130
130
  end
131
131
 
132
132
  def build_serializer_class(resource, options)
133
- "".tap do |klass_name|
134
- klass_name << "#{options[:namespace]}::" if options[:namespace]
135
- klass_name << options[:prefix].to_s.classify if options[:prefix]
136
- if resource.is_a?(String)
137
- klass_name << "#{resource}Serializer"
138
- else
139
- klass_name << "#{resource.class.name}Serializer"
140
- end
141
- end
133
+ klass_name = +""
134
+ klass_name << "#{options[:namespace]}::" if options[:namespace]
135
+ klass_name << options[:prefix].to_s.classify if options[:prefix]
136
+ klass_name << "#{resource.class.name}Serializer"
142
137
  end
143
138
 
144
139
  def associate(klass, *attrs)
@@ -168,7 +163,8 @@ end
168
163
  @context = options[:context]
169
164
  @namespace = options[:namespace]
170
165
  end
171
- attr_accessor :object, :scope, :root, :meta_key, :meta, :key_format, :context, :polymorphic
166
+ attr_accessor :object, :scope, :root, :meta_key, :meta, :context, :polymorphic
167
+ attr_writer :key_format
172
168
 
173
169
  def json_key
174
170
  key = if root == true || root.nil?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModel
2
4
  module SerializerSupport
3
5
  alias read_attribute_for_serialization send
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_model'
2
4
  require 'active_model/serializer'
3
5
  require 'active_model/serializer_support'
@@ -7,12 +9,22 @@ require 'active_model/serializer/railtie' if defined?(Rails)
7
9
  begin
8
10
  require 'action_controller'
9
11
  require 'action_controller/serialization'
10
- require 'action_controller/serialization_test_case'
11
12
 
12
13
  ActiveSupport.on_load(:action_controller) do
13
14
  if ::ActionController::Serialization.enabled
14
15
  ActionController::Base.send(:include, ::ActionController::Serialization)
15
- ActionController::TestCase.send(:include, ::ActionController::SerializationAssertions)
16
+
17
+ # action_controller_test_case load hook was added in Rails 5.1
18
+ # https://github.com/rails/rails/commit/0510208dd1ff23baa619884c0abcae4d141fae53
19
+ if ActiveSupport::VERSION::STRING < '5.1'
20
+ require 'action_controller/serialization_test_case'
21
+ ActionController::TestCase.send(:include, ::ActionController::SerializationAssertions)
22
+ else
23
+ ActiveSupport.on_load(:action_controller_test_case) do
24
+ require 'action_controller/serialization_test_case'
25
+ ActionController::TestCase.send(:include, ::ActionController::SerializationAssertions)
26
+ end
27
+ end
16
28
  end
17
29
  end
18
30
  rescue LoadError
@@ -144,14 +144,14 @@ end
144
144
 
145
145
  class SelfReferencingUserParentSerializer < ActiveModel::Serializer
146
146
  attributes :name
147
- has_one :type, serializer: TypeSerializer, embed: :ids, include: true
147
+ has_one :type, serializer: TypeSerializer, embed: :ids, embed_in_root: true
148
148
  end
149
149
 
150
150
  class SelfReferencingUserSerializer < ActiveModel::Serializer
151
151
  attributes :name
152
152
 
153
- has_one :type, serializer: TypeSerializer, embed: :ids, include: true
154
- has_one :parent, serializer: SelfReferencingUserSerializer, embed: :ids, include: true
153
+ has_one :type, serializer: TypeSerializer, embed: :ids, embed_in_root: true
154
+ has_one :parent, serializer: SelfReferencingUserSerializer, embed: :ids, embed_in_root: true
155
155
  end
156
156
 
157
157
  class UserInfoSerializer < ActiveModel::Serializer
@@ -176,6 +176,7 @@ end
176
176
  class PostSerializer < ActiveModel::Serializer
177
177
  attributes :title, :body
178
178
 
179
+ alias_method :title, :title # silence method redefinition warning
179
180
  def title
180
181
  keyword = serialization_options[:highlight_keyword]
181
182
  title = object.read_attribute_for_serialization(:title)
@@ -13,7 +13,7 @@ module ActionController
13
13
 
14
14
  def test_render_using_implicit_serializer
15
15
  get :render_using_implicit_serializer
16
- assert_equal 'application/json', @response.content_type
16
+ assert_includes @response.content_type, 'application/json'
17
17
  assert_equal '{"profile":{"name":"Name 1","description":"Description 1"}}', @response.body
18
18
  end
19
19
  end
@@ -35,7 +35,7 @@ module ActionController
35
35
 
36
36
  def test_render_using_implicit_serializer_and_scope
37
37
  get :render_using_implicit_serializer_and_scope
38
- assert_equal 'application/json', @response.content_type
38
+ assert_includes @response.content_type, 'application/json'
39
39
  assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_user"}}', @response.body
40
40
  end
41
41
  end
@@ -65,7 +65,7 @@ module ActionController
65
65
 
66
66
  def test_render_using_scope_set_in_default_serializer_options
67
67
  get :render_using_scope_set_in_default_serializer_options
68
- assert_equal 'application/json', @response.content_type
68
+ assert_includes @response.content_type, 'application/json'
69
69
  assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_admin"}}', @response.body
70
70
  end
71
71
  end
@@ -91,7 +91,7 @@ module ActionController
91
91
 
92
92
  def test_render_using_implicit_serializer_and_explicit_scope
93
93
  get :render_using_implicit_serializer_and_explicit_scope
94
- assert_equal 'application/json', @response.content_type
94
+ assert_includes @response.content_type, 'application/json'
95
95
  assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_admin"}}', @response.body
96
96
  end
97
97
  end
@@ -117,7 +117,7 @@ module ActionController
117
117
 
118
118
  def test_render_overriding_serialization_scope
119
119
  get :render_overriding_serialization_scope
120
- assert_equal 'application/json', @response.content_type
120
+ assert_includes @response.content_type, 'application/json'
121
121
  assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_admin"}}', @response.body
122
122
  end
123
123
  end
@@ -141,7 +141,7 @@ module ActionController
141
141
 
142
142
  def test_render_calling_serialization_scope
143
143
  get :render_calling_serialization_scope
144
- assert_equal 'application/json', @response.content_type
144
+ assert_includes @response.content_type, 'application/json'
145
145
  assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_user"}}', @response.body
146
146
  end
147
147
  end
@@ -157,7 +157,7 @@ module ActionController
157
157
 
158
158
  def test_render_using_json_dump
159
159
  get :render_using_json_dump
160
- assert_equal 'application/json', @response.content_type
160
+ assert_includes @response.content_type, 'application/json'
161
161
  assert_equal '{"hello":"world"}', @response.body
162
162
  end
163
163
  end
@@ -173,7 +173,7 @@ module ActionController
173
173
 
174
174
  def test_render_using_rails_behavior
175
175
  get :render_using_rails_behavior
176
- assert_equal 'application/json', @response.content_type
176
+ assert_includes @response.content_type, 'application/json'
177
177
  assert_equal '[{"attributes":{"name":"Name 1","description":"Description 1","comments":"Comments 1"}}]', @response.body
178
178
  end
179
179
  end
@@ -189,7 +189,7 @@ module ActionController
189
189
 
190
190
  def test_render_array
191
191
  get :render_array
192
- assert_equal 'application/json', @response.content_type
192
+ assert_includes @response.content_type, 'application/json'
193
193
  assert_equal '{"my":[{"name":"Name 1","description":"Description 1"}]}', @response.body
194
194
  end
195
195
  end
@@ -205,7 +205,7 @@ module ActionController
205
205
 
206
206
  def test_render_array
207
207
  get :render_array
208
- assert_equal 'application/json', @response.content_type
208
+ assert_includes @response.content_type, 'application/json'
209
209
  assert_equal '{"webLog":[{"name":"Name 1","displayName":"Display Name 1"},{"name":"Name 2","displayName":"Display Name 2"}]}', @response.body
210
210
  end
211
211
  end
@@ -223,7 +223,7 @@ module ActionController
223
223
 
224
224
  def test_render_without_root
225
225
  get :render_without_root
226
- assert_equal 'application/json', @response.content_type
226
+ assert_includes @response.content_type, 'application/json'
227
227
  assert_equal '{"name":"Name 1","displayName":"Display Name 1"}', @response.body
228
228
  end
229
229
  end
@@ -242,7 +242,7 @@ module ActionController
242
242
 
243
243
  def test_render_array_without_root
244
244
  get :render_array_without_root
245
- assert_equal 'application/json', @response.content_type
245
+ assert_includes @response.content_type, 'application/json'
246
246
  assert_equal '[{"name":"Name 1","displayName":"Display Name 1"},{"name":"Name 2","displayName":"Display Name 2"}]', @response.body
247
247
  end
248
248
  end
@@ -278,7 +278,7 @@ module ActionController
278
278
  @association.embed_in_root = true
279
279
 
280
280
  get :render_array_embeding_in_root
281
- assert_equal 'application/json', @response.content_type
281
+ assert_includes @response.content_type, 'application/json'
282
282
 
283
283
  assert_equal("{\"my\":[{\"name\":\"Name 1\",\"email\":\"mail@server.com\",\"profile_id\":#{@controller.user.profile.object_id}}],\"profiles\":[{\"name\":\"N1\",\"description\":\"D1\"}]}", @response.body)
284
284
  end
@@ -17,44 +17,44 @@ class ScaffoldControllerGeneratorTest < Rails::Generators::TestCase
17
17
 
18
18
  assert_file 'app/controllers/accounts_controller.rb' do |content|
19
19
  assert_instance_method :index, content do |m|
20
- assert_match /@accounts = Account\.all/, m
21
- assert_match /format.html/, m
22
- assert_match /format.json \{ render json: @accounts \}/, m
20
+ assert_match(/@accounts = Account\.all/, m)
21
+ assert_match(/format.html/, m)
22
+ assert_match(/format.json \{ render json: @accounts \}/, m)
23
23
  end
24
24
 
25
25
  assert_instance_method :show, content do |m|
26
- assert_match /format.html/, m
27
- assert_match /format.json \{ render json: @account \}/, m
26
+ assert_match(/format.html/, m)
27
+ assert_match(/format.json \{ render json: @account \}/, m)
28
28
  end
29
29
 
30
30
  assert_instance_method :new, content do |m|
31
- assert_match /@account = Account\.new/, m
31
+ assert_match(/@account = Account\.new/, m)
32
32
  end
33
33
 
34
34
  assert_instance_method :edit, content do |m|
35
- assert m.blank?
35
+ assert_predicate m, :blank?
36
36
  end
37
37
 
38
38
  assert_instance_method :create, content do |m|
39
- assert_match /@account = Account\.new\(account_params\)/, m
40
- assert_match /@account\.save/, m
41
- assert_match /format\.html \{ redirect_to @account, notice: 'Account was successfully created\.' \}/, m
42
- assert_match /format\.json \{ render json: @account, status: :created \}/, m
43
- assert_match /format\.html \{ render action: 'new' \}/, m
44
- assert_match /format\.json \{ render json: @account\.errors, status: :unprocessable_entity \}/, m
39
+ assert_match(/@account = Account\.new\(account_params\)/, m)
40
+ assert_match(/@account\.save/, m)
41
+ assert_match(/format\.html \{ redirect_to @account, notice: 'Account was successfully created\.' \}/, m)
42
+ assert_match(/format\.json \{ render json: @account, status: :created \}/, m)
43
+ assert_match(/format\.html \{ render action: 'new' \}/, m)
44
+ assert_match(/format\.json \{ render json: @account\.errors, status: :unprocessable_entity \}/, m)
45
45
  end
46
46
 
47
47
  assert_instance_method :update, content do |m|
48
- assert_match /format\.html \{ redirect_to @account, notice: 'Account was successfully updated\.' \}/, m
49
- assert_match /format\.json \{ head :no_content \}/, m
50
- assert_match /format\.html \{ render action: 'edit' \}/, m
51
- assert_match /format\.json \{ render json: @account.errors, status: :unprocessable_entity \}/, m
48
+ assert_match(/format\.html \{ redirect_to @account, notice: 'Account was successfully updated\.' \}/, m)
49
+ assert_match(/format\.json \{ head :no_content \}/, m)
50
+ assert_match(/format\.html \{ render action: 'edit' \}/, m)
51
+ assert_match(/format\.json \{ render json: @account.errors, status: :unprocessable_entity \}/, m)
52
52
  end
53
53
 
54
54
  assert_instance_method :destroy, content do |m|
55
- assert_match /@account\.destroy/, m
56
- assert_match /format\.html { redirect_to accounts_url \}/, m
57
- assert_match /format\.json \{ head :no_content \}/, m
55
+ assert_match(/@account\.destroy/, m)
56
+ assert_match(/format\.html { redirect_to accounts_url \}/, m)
57
+ assert_match(/format\.json \{ head :no_content \}/, m)
58
58
  end
59
59
 
60
60
  assert_match(/def account_params/, content)
data/test/test_app.rb CHANGED
@@ -1,4 +1,8 @@
1
1
  class TestApp < Rails::Application
2
+ if config.respond_to?(:load_defaults)
3
+ config.load_defaults("#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}")
4
+ end
5
+
2
6
  if Rails.version.to_s.first >= '4'
3
7
  config.eager_load = false
4
8
  config.secret_key_base = 'abc123'
data/test/test_helper.rb CHANGED
@@ -2,8 +2,13 @@ require 'bundler/setup'
2
2
  require 'minitest/autorun'
3
3
  require 'active_model_serializers'
4
4
  require 'fixtures/poro'
5
- require 'rails-controller-testing'
6
- Rails::Controller::Testing.install
5
+ begin
6
+ require 'rails-controller-testing'
7
+ Rails::Controller::Testing.install
8
+ rescue LoadError
9
+ false # Rails 5 < backward compatibility
10
+ end
11
+
7
12
 
8
13
  # Ensure backward compatibility with Minitest 4
9
14
  Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test)
@@ -49,7 +49,7 @@ module ActiveModel
49
49
  def object.serializer_class; CustomSerializer; end
50
50
 
51
51
  assert_equal CustomSerializer, Serializer.serializer_for(object)
52
- assert_equal CustomSerializer, Serializer.serializer_for('Custom')
52
+ assert_nil Serializer.serializer_for('Custom')
53
53
  end
54
54
  end
55
55
 
@@ -66,8 +66,8 @@ module ActiveModel
66
66
  serializer = ArraySerializer.new(array)
67
67
 
68
68
  expected = [
69
- { name: 'Test 1', email: 'test1@test.com', sub_test: { name: 'Name 1', description: 'Description 1' }},
70
- { name: 'Test 1', email: 'test2@test.com', sub_test: { name: 'Name 2', description: 'Description 2' }}
69
+ { name: 'Test 1', email: 'test1@test.com', sub_test: { name: 'Name 1', description: 'Description 1' } },
70
+ { name: 'Test 2', email: 'test2@test.com', sub_test: { name: 'Name 2', description: 'Description 2' } }
71
71
  ]
72
72
 
73
73
  assert_equal expected, serializer.serializable_array
@@ -4,7 +4,7 @@ module ActiveModel
4
4
  class DefaultSerializer
5
5
  class Test < Minitest::Test
6
6
  def test_serialize_objects
7
- assert_equal(nil, DefaultSerializer.new(nil).serializable_object)
7
+ assert_nil(DefaultSerializer.new(nil).serializable_object)
8
8
  assert_equal(1, DefaultSerializer.new(1).serializable_object)
9
9
  assert_equal('hi', DefaultSerializer.new('hi').serializable_object)
10
10
  end
@@ -21,6 +21,7 @@ module ActiveModel
21
21
  serializer = Class.new(ActiveModel::Serializer) do
22
22
  attributes :url
23
23
 
24
+ alias_method :url, :url # silence redefinition warning
24
25
  def url
25
26
  profile_url(id: object.object_id)
26
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.9.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-05-18 00:00:00.000000000 Z
13
+ date: 2024-04-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -89,7 +89,6 @@ files:
89
89
  - lib/active_model/serializer/version.rb
90
90
  - lib/active_model/serializer_support.rb
91
91
  - lib/active_model_serializers.rb
92
- - lib/active_model_serializers/model/caching.rb
93
92
  - test/benchmark/app.rb
94
93
  - test/benchmark/benchmarking_support.rb
95
94
  - test/benchmark/bm_active_record.rb
@@ -167,67 +166,67 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
166
  - !ruby/object:Gem::Version
168
167
  version: '0'
169
168
  requirements: []
170
- rubygems_version: 3.1.6
169
+ rubygems_version: 3.3.7
171
170
  signing_key:
172
171
  specification_version: 4
173
172
  summary: Bringing consistency and object orientation to model serialization. Works
174
173
  great for client-side MVC frameworks!
175
174
  test_files:
176
175
  - test/benchmark/app.rb
177
- - test/benchmark/setup.rb
176
+ - test/benchmark/benchmarking_support.rb
178
177
  - test/benchmark/bm_active_record.rb
179
- - test/benchmark/tmp/miniprofiler/mp_timers_m8fpoz2cvt3g9agz0bs3
180
- - test/benchmark/tmp/miniprofiler/mp_timers_s15t1a6mvxe0z7vjv790
181
- - test/benchmark/tmp/miniprofiler/mp_timers_hjry5rc32imd42oxoi48
182
- - test/benchmark/tmp/miniprofiler/mp_timers_qg52tpca3uesdfguee9i
183
- - test/benchmark/tmp/miniprofiler/mp_views_127.0.0.1
178
+ - test/benchmark/setup.rb
179
+ - test/benchmark/tmp/miniprofiler/mp_timers_6eqewtfgrhitvq5gqm25
180
+ - test/benchmark/tmp/miniprofiler/mp_timers_8083sx03hu72pxz1a4d0
184
181
  - test/benchmark/tmp/miniprofiler/mp_timers_fyz2gsml4z0ph9kpoy1c
182
+ - test/benchmark/tmp/miniprofiler/mp_timers_hjry5rc32imd42oxoi48
183
+ - test/benchmark/tmp/miniprofiler/mp_timers_m8fpoz2cvt3g9agz0bs3
185
184
  - test/benchmark/tmp/miniprofiler/mp_timers_p92m2drnj1i568u3sta0
186
- - test/benchmark/tmp/miniprofiler/mp_timers_6eqewtfgrhitvq5gqm25
185
+ - test/benchmark/tmp/miniprofiler/mp_timers_qg52tpca3uesdfguee9i
186
+ - test/benchmark/tmp/miniprofiler/mp_timers_s15t1a6mvxe0z7vjv790
187
187
  - test/benchmark/tmp/miniprofiler/mp_timers_x8kal3d17nfds6vp4kcj
188
- - test/benchmark/tmp/miniprofiler/mp_timers_8083sx03hu72pxz1a4d0
189
- - test/benchmark/benchmarking_support.rb
190
- - test/unit/active_model/serializer/config_test.rb
191
- - test/unit/active_model/serializer/has_one_test.rb
192
- - test/unit/active_model/serializer/associations/build_serializer_test.rb
193
- - test/unit/active_model/serializer/key_format_test.rb
194
- - test/unit/active_model/serializer/url_helpers_test.rb
195
- - test/unit/active_model/serializer/associations_test.rb
196
- - test/unit/active_model/serializer/options_test.rb
197
- - test/unit/active_model/serializer/attributes_test.rb
198
- - test/unit/active_model/serializer/root_test.rb
199
- - test/unit/active_model/serializer/meta_test.rb
200
- - test/unit/active_model/serializer/has_many_polymorphic_test.rb
201
- - test/unit/active_model/serializer/has_one_polymorphic_test.rb
202
- - test/unit/active_model/serializer/has_many_test.rb
203
- - test/unit/active_model/serializer/has_one_and_has_many_test.rb
204
- - test/unit/active_model/serializer/filter_test.rb
205
- - test/unit/active_model/serializer/scope_test.rb
206
- - test/unit/active_model/default_serializer_test.rb
207
- - test/unit/active_model/array_serializer/serialization_test.rb
208
- - test/unit/active_model/array_serializer/key_format_test.rb
209
- - test/unit/active_model/array_serializer/options_test.rb
210
- - test/unit/active_model/array_serializer/only_test.rb
211
- - test/unit/active_model/array_serializer/root_test.rb
212
- - test/unit/active_model/array_serializer/except_test.rb
213
- - test/unit/active_model/array_serializer/meta_test.rb
214
- - test/unit/active_model/array_serializer/scope_test.rb
215
- - test/unit/active_model/serilizable_test.rb
216
- - test/test_app.rb
188
+ - test/benchmark/tmp/miniprofiler/mp_views_127.0.0.1
189
+ - test/fixtures/active_record.rb
190
+ - test/fixtures/poro.rb
191
+ - test/fixtures/template.html.erb
192
+ - test/integration/action_controller/namespaced_serialization_test.rb
217
193
  - test/integration/action_controller/serialization_test.rb
218
194
  - test/integration/action_controller/serialization_test_case_test.rb
219
- - test/integration/action_controller/namespaced_serialization_test.rb
220
195
  - test/integration/active_record/active_record_test.rb
221
- - test/integration/generators/scaffold_controller_generator_test.rb
222
196
  - test/integration/generators/resource_generator_test.rb
197
+ - test/integration/generators/scaffold_controller_generator_test.rb
223
198
  - test/integration/generators/serializer_generator_test.rb
224
- - test/fixtures/poro.rb
225
- - test/fixtures/template.html.erb
226
- - test/fixtures/active_record.rb
199
+ - test/test_app.rb
227
200
  - test/test_helper.rb
228
- - test/tmp/app/serializers/account_serializer.rb
229
- - test/tmp/app/controllers/accounts_controller.rb
230
201
  - test/tmp/app/assets/javascripts/accounts.js
231
202
  - test/tmp/app/assets/stylesheets/accounts.css
203
+ - test/tmp/app/controllers/accounts_controller.rb
232
204
  - test/tmp/app/helpers/accounts_helper.rb
205
+ - test/tmp/app/serializers/account_serializer.rb
233
206
  - test/tmp/config/routes.rb
207
+ - test/unit/active_model/array_serializer/except_test.rb
208
+ - test/unit/active_model/array_serializer/key_format_test.rb
209
+ - test/unit/active_model/array_serializer/meta_test.rb
210
+ - test/unit/active_model/array_serializer/only_test.rb
211
+ - test/unit/active_model/array_serializer/options_test.rb
212
+ - test/unit/active_model/array_serializer/root_test.rb
213
+ - test/unit/active_model/array_serializer/scope_test.rb
214
+ - test/unit/active_model/array_serializer/serialization_test.rb
215
+ - test/unit/active_model/default_serializer_test.rb
216
+ - test/unit/active_model/serializer/associations/build_serializer_test.rb
217
+ - test/unit/active_model/serializer/associations_test.rb
218
+ - test/unit/active_model/serializer/attributes_test.rb
219
+ - test/unit/active_model/serializer/config_test.rb
220
+ - test/unit/active_model/serializer/filter_test.rb
221
+ - test/unit/active_model/serializer/has_many_polymorphic_test.rb
222
+ - test/unit/active_model/serializer/has_many_test.rb
223
+ - test/unit/active_model/serializer/has_one_and_has_many_test.rb
224
+ - test/unit/active_model/serializer/has_one_polymorphic_test.rb
225
+ - test/unit/active_model/serializer/has_one_test.rb
226
+ - test/unit/active_model/serializer/key_format_test.rb
227
+ - test/unit/active_model/serializer/meta_test.rb
228
+ - test/unit/active_model/serializer/options_test.rb
229
+ - test/unit/active_model/serializer/root_test.rb
230
+ - test/unit/active_model/serializer/scope_test.rb
231
+ - test/unit/active_model/serializer/url_helpers_test.rb
232
+ - test/unit/active_model/serilizable_test.rb
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
- module ActiveModelSerializers
3
- class Model
4
- module Caching
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- attr_writer :updated_at
9
- attributes :id
10
- end
11
-
12
- # Defaults to the downcased model name and updated_at
13
- def cache_key
14
- ActiveSupport::Cache.expand_cache_key([
15
- self.class.model_name.name.downcase,
16
- "#{id}-#{updated_at.strftime('%Y%m%d%H%M%S%9N')}"
17
- ].compact)
18
- end
19
-
20
- # Defaults to the time the serializer file was modified.
21
- def updated_at
22
- defined?(@updated_at) ? @updated_at : File.mtime(__FILE__)
23
- end
24
- end
25
- end
26
- end