active_model_serializers 0.9.9 → 0.9.12

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 (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