active_model_serializers 0.9.0 → 0.10.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +679 -9
- data/MIT-LICENSE +3 -2
- data/README.md +195 -753
- data/lib/action_controller/serialization.rb +45 -49
- data/lib/active_model/serializable_resource.rb +13 -0
- data/lib/active_model/serializer.rb +369 -212
- data/lib/active_model/serializer/adapter.rb +26 -0
- data/lib/active_model/serializer/adapter/attributes.rb +17 -0
- data/lib/active_model/serializer/adapter/base.rb +20 -0
- data/lib/active_model/serializer/adapter/json.rb +17 -0
- data/lib/active_model/serializer/adapter/json_api.rb +17 -0
- data/lib/active_model/serializer/adapter/null.rb +17 -0
- data/lib/active_model/serializer/array_serializer.rb +14 -0
- data/lib/active_model/serializer/association.rb +73 -0
- data/lib/active_model/serializer/attribute.rb +27 -0
- data/lib/active_model/serializer/belongs_to_reflection.rb +13 -0
- data/lib/active_model/serializer/collection_serializer.rb +90 -0
- data/lib/active_model/serializer/concerns/caching.rb +305 -0
- data/lib/active_model/serializer/error_serializer.rb +16 -0
- data/lib/active_model/serializer/errors_serializer.rb +34 -0
- data/lib/active_model/serializer/field.rb +92 -0
- data/lib/active_model/serializer/fieldset.rb +33 -0
- data/lib/active_model/serializer/has_many_reflection.rb +12 -0
- data/lib/active_model/serializer/has_one_reflection.rb +9 -0
- data/lib/active_model/serializer/lazy_association.rb +99 -0
- data/lib/active_model/serializer/link.rb +23 -0
- data/lib/active_model/serializer/lint.rb +152 -0
- data/lib/active_model/serializer/null.rb +19 -0
- data/lib/active_model/serializer/reflection.rb +212 -0
- data/lib/active_model/serializer/version.rb +3 -1
- data/lib/active_model_serializers.rb +60 -17
- data/lib/active_model_serializers/adapter.rb +100 -0
- data/lib/active_model_serializers/adapter/attributes.rb +36 -0
- data/lib/active_model_serializers/adapter/base.rb +85 -0
- data/lib/active_model_serializers/adapter/json.rb +23 -0
- data/lib/active_model_serializers/adapter/json_api.rb +535 -0
- data/lib/active_model_serializers/adapter/json_api/deserialization.rb +215 -0
- data/lib/active_model_serializers/adapter/json_api/error.rb +98 -0
- data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +51 -0
- data/lib/active_model_serializers/adapter/json_api/link.rb +85 -0
- data/lib/active_model_serializers/adapter/json_api/meta.rb +39 -0
- data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +90 -0
- data/lib/active_model_serializers/adapter/json_api/relationship.rb +106 -0
- data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +68 -0
- data/lib/active_model_serializers/adapter/null.rb +11 -0
- data/lib/active_model_serializers/callbacks.rb +57 -0
- data/lib/active_model_serializers/deprecate.rb +56 -0
- data/lib/active_model_serializers/deserialization.rb +17 -0
- data/lib/active_model_serializers/json_pointer.rb +16 -0
- data/lib/active_model_serializers/logging.rb +124 -0
- data/lib/active_model_serializers/lookup_chain.rb +82 -0
- data/lib/active_model_serializers/model.rb +132 -0
- data/lib/active_model_serializers/model/caching.rb +25 -0
- data/lib/active_model_serializers/railtie.rb +52 -0
- data/lib/active_model_serializers/register_jsonapi_renderer.rb +80 -0
- data/lib/active_model_serializers/serializable_resource.rb +84 -0
- data/lib/active_model_serializers/serialization_context.rb +41 -0
- data/lib/active_model_serializers/test.rb +9 -0
- data/lib/active_model_serializers/test/schema.rb +140 -0
- data/lib/active_model_serializers/test/serializer.rb +127 -0
- data/lib/generators/rails/USAGE +6 -0
- data/lib/{active_model/serializer/generators → generators/rails}/resource_override.rb +3 -4
- data/lib/{active_model/serializer/generators/serializer → generators/rails}/serializer_generator.rb +6 -5
- data/lib/{active_model/serializer/generators/serializer/templates/serializer.rb → generators/rails/templates/serializer.rb.erb} +0 -0
- data/lib/grape/active_model_serializers.rb +18 -0
- data/lib/grape/formatters/active_model_serializers.rb +34 -0
- data/lib/grape/helpers/active_model_serializers.rb +19 -0
- data/lib/tasks/rubocop.rake +55 -0
- metadata +315 -99
- data/CONTRIBUTING.md +0 -20
- data/DESIGN.textile +0 -586
- data/lib/action_controller/serialization_test_case.rb +0 -79
- data/lib/active_model/array_serializer.rb +0 -65
- data/lib/active_model/default_serializer.rb +0 -32
- data/lib/active_model/serializable.rb +0 -40
- data/lib/active_model/serializer/associations.rb +0 -102
- data/lib/active_model/serializer/config.rb +0 -31
- data/lib/active_model/serializer/generators/serializer/USAGE +0 -9
- data/lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb +0 -14
- data/lib/active_model/serializer/generators/serializer/templates/controller.rb +0 -93
- data/lib/active_model/serializer/railtie.rb +0 -10
- data/lib/active_model/serializer_support.rb +0 -5
- data/test/fixtures/active_record.rb +0 -92
- data/test/fixtures/poro.rb +0 -75
- data/test/integration/action_controller/serialization_test.rb +0 -287
- data/test/integration/action_controller/serialization_test_case_test.rb +0 -61
- data/test/integration/active_record/active_record_test.rb +0 -77
- data/test/integration/generators/resource_generator_test.rb +0 -26
- data/test/integration/generators/scaffold_controller_generator_test.rb +0 -64
- data/test/integration/generators/serializer_generator_test.rb +0 -41
- data/test/test_app.rb +0 -11
- data/test/test_helper.rb +0 -24
- data/test/unit/active_model/array_serializer/except_test.rb +0 -18
- data/test/unit/active_model/array_serializer/key_format_test.rb +0 -18
- data/test/unit/active_model/array_serializer/meta_test.rb +0 -53
- data/test/unit/active_model/array_serializer/only_test.rb +0 -18
- data/test/unit/active_model/array_serializer/root_test.rb +0 -102
- data/test/unit/active_model/array_serializer/scope_test.rb +0 -24
- data/test/unit/active_model/array_serializer/serialization_test.rb +0 -199
- data/test/unit/active_model/default_serializer_test.rb +0 -13
- data/test/unit/active_model/serializer/associations/build_serializer_test.rb +0 -21
- data/test/unit/active_model/serializer/associations_test.rb +0 -19
- data/test/unit/active_model/serializer/attributes_test.rb +0 -41
- data/test/unit/active_model/serializer/config_test.rb +0 -88
- data/test/unit/active_model/serializer/filter_test.rb +0 -69
- data/test/unit/active_model/serializer/has_many_test.rb +0 -230
- data/test/unit/active_model/serializer/has_one_test.rb +0 -207
- data/test/unit/active_model/serializer/key_format_test.rb +0 -25
- data/test/unit/active_model/serializer/meta_test.rb +0 -39
- data/test/unit/active_model/serializer/options_test.rb +0 -15
- data/test/unit/active_model/serializer/root_test.rb +0 -117
- data/test/unit/active_model/serializer/scope_test.rb +0 -49
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
module ActiveModel
|
|
4
|
-
class Serializer
|
|
5
|
-
class HasManyTest < Minitest::Test
|
|
6
|
-
def setup
|
|
7
|
-
@association = PostSerializer._associations[:comments]
|
|
8
|
-
@old_association = @association.dup
|
|
9
|
-
|
|
10
|
-
@post = Post.new({ title: 'Title 1', body: 'Body 1', date: '1/1/2000' })
|
|
11
|
-
@post_serializer = PostSerializer.new(@post)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def teardown
|
|
15
|
-
PostSerializer._associations[:comments] = @old_association
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_associations_definition
|
|
19
|
-
assert_equal 1, PostSerializer._associations.length
|
|
20
|
-
assert_kind_of Association::HasMany, @association
|
|
21
|
-
assert_equal 'comments', @association.name
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def test_associations_inheritance
|
|
25
|
-
inherited_serializer_klass = Class.new(PostSerializer) do
|
|
26
|
-
has_many :some_associations
|
|
27
|
-
end
|
|
28
|
-
another_inherited_serializer_klass = Class.new(PostSerializer)
|
|
29
|
-
|
|
30
|
-
assert_equal(PostSerializer._associations.length + 1,
|
|
31
|
-
inherited_serializer_klass._associations.length)
|
|
32
|
-
assert_equal(PostSerializer._associations.length,
|
|
33
|
-
another_inherited_serializer_klass._associations.length)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def test_associations_embedding_ids_serialization_using_serializable_hash
|
|
37
|
-
@association.embed = :ids
|
|
38
|
-
|
|
39
|
-
assert_equal({
|
|
40
|
-
title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id }
|
|
41
|
-
}, @post_serializer.serializable_hash)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def test_associations_embedding_ids_serialization_using_as_json
|
|
45
|
-
@association.embed = :ids
|
|
46
|
-
|
|
47
|
-
assert_equal({
|
|
48
|
-
'post' => { title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } }
|
|
49
|
-
}, @post_serializer.as_json)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def test_associations_embedding_ids_serialization_using_serializable_hash_and_key_from_options
|
|
53
|
-
@association.embed = :ids
|
|
54
|
-
@association.key = 'key'
|
|
55
|
-
|
|
56
|
-
assert_equal({
|
|
57
|
-
title: 'Title 1', body: 'Body 1', 'key' => @post.comments.map { |c| c.object_id }
|
|
58
|
-
}, @post_serializer.serializable_hash)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def test_associations_embedding_objects_serialization_using_serializable_hash
|
|
62
|
-
@association.embed = :objects
|
|
63
|
-
|
|
64
|
-
assert_equal({
|
|
65
|
-
title: 'Title 1', body: 'Body 1', comments: [{ content: 'C1' }, { content: 'C2' }]
|
|
66
|
-
}, @post_serializer.serializable_hash)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def test_associations_embedding_objects_serialization_using_as_json
|
|
70
|
-
@association.embed = :objects
|
|
71
|
-
|
|
72
|
-
assert_equal({
|
|
73
|
-
'post' => { title: 'Title 1', body: 'Body 1', comments: [{ content: 'C1' }, { content: 'C2' }] }
|
|
74
|
-
}, @post_serializer.as_json)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def test_associations_embedding_nil_objects_serialization_using_as_json
|
|
78
|
-
@association.embed = :objects
|
|
79
|
-
@post.instance_eval do
|
|
80
|
-
def comments
|
|
81
|
-
[nil]
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
assert_equal({
|
|
86
|
-
'post' => { title: 'Title 1', body: 'Body 1', comments: [nil] }
|
|
87
|
-
}, @post_serializer.as_json)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def test_associations_embedding_objects_serialization_using_serializable_hash_and_root_from_options
|
|
91
|
-
@association.embed = :objects
|
|
92
|
-
@association.embedded_key = 'root'
|
|
93
|
-
|
|
94
|
-
assert_equal({
|
|
95
|
-
title: 'Title 1', body: 'Body 1', 'root' => [{ content: 'C1' }, { content: 'C2' }]
|
|
96
|
-
}, @post_serializer.serializable_hash)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def test_associations_embedding_ids_including_objects_serialization_using_serializable_hash
|
|
100
|
-
@association.embed = :ids
|
|
101
|
-
@association.embed_in_root = true
|
|
102
|
-
|
|
103
|
-
assert_equal({
|
|
104
|
-
title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id }
|
|
105
|
-
}, @post_serializer.serializable_hash)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def test_associations_embedding_ids_including_objects_serialization_using_as_json
|
|
109
|
-
@association.embed = :ids
|
|
110
|
-
@association.embed_in_root = true
|
|
111
|
-
|
|
112
|
-
assert_equal({
|
|
113
|
-
'post' => { title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } },
|
|
114
|
-
comments: [{ content: 'C1' }, { content: 'C2' }]
|
|
115
|
-
}, @post_serializer.as_json)
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def test_associations_embedding_nothing_including_objects_serialization_using_as_json
|
|
119
|
-
@association.embed = nil
|
|
120
|
-
@association.embed_in_root = true
|
|
121
|
-
|
|
122
|
-
assert_equal({
|
|
123
|
-
'post' => { title: 'Title 1', body: 'Body 1' },
|
|
124
|
-
comments: [{ content: 'C1' }, { content: 'C2' }]
|
|
125
|
-
}, @post_serializer.as_json)
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def test_associations_using_a_given_serializer
|
|
129
|
-
@association.embed = :ids
|
|
130
|
-
@association.embed_in_root = true
|
|
131
|
-
@association.serializer_from_options = Class.new(Serializer) do
|
|
132
|
-
def content
|
|
133
|
-
object.read_attribute_for_serialization(:content) + '!'
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
attributes :content
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
assert_equal({
|
|
140
|
-
'post' => { title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } },
|
|
141
|
-
comments: [{ content: 'C1!' }, { content: 'C2!' }]
|
|
142
|
-
}, @post_serializer.as_json)
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
def test_associations_embedding_ids_using_a_given_array_serializer
|
|
146
|
-
@association.embed = :ids
|
|
147
|
-
@association.embed_in_root = true
|
|
148
|
-
@association.serializer_from_options = Class.new(ArraySerializer) do
|
|
149
|
-
def serializable_object
|
|
150
|
-
{ my_content: ['fake'] }
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
assert_equal({
|
|
155
|
-
'post' => { title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } },
|
|
156
|
-
comments: { my_content: ['fake'] }
|
|
157
|
-
}, @post_serializer.as_json)
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def test_associations_embedding_objects_using_a_given_array_serializer
|
|
161
|
-
@association.serializer_from_options = Class.new(ArraySerializer) do
|
|
162
|
-
def serializable_object
|
|
163
|
-
{ my_content: ['fake'] }
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
assert_equal({
|
|
168
|
-
'post' => { title: 'Title 1', body: 'Body 1', comments: { my_content: ['fake'] } }
|
|
169
|
-
}, @post_serializer.as_json)
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
def test_associations_embedding_ids_including_objects_serialization_with_embed_in_root_key
|
|
173
|
-
@association.embed_in_root = true
|
|
174
|
-
@association.embed_in_root_key = :linked
|
|
175
|
-
@association.embed = :ids
|
|
176
|
-
assert_equal({
|
|
177
|
-
linked: {
|
|
178
|
-
comments: [
|
|
179
|
-
{ content: 'C1' },
|
|
180
|
-
{ content: 'C2' }
|
|
181
|
-
]
|
|
182
|
-
},
|
|
183
|
-
'post' => {
|
|
184
|
-
title: 'Title 1', body: 'Body 1',
|
|
185
|
-
'comment_ids' => @post.comments.map(&:object_id)
|
|
186
|
-
}
|
|
187
|
-
}, @post_serializer.as_json)
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
def test_associations_embedding_ids_using_embed_namespace_including_object_serialization_with_embed_in_root_key
|
|
191
|
-
@association.embed_in_root = true
|
|
192
|
-
@association.embed_in_root_key = :linked
|
|
193
|
-
@association.embed = :ids
|
|
194
|
-
@association.embed_namespace = :links
|
|
195
|
-
@association.key = :comments
|
|
196
|
-
assert_equal({
|
|
197
|
-
linked: {
|
|
198
|
-
comments: [
|
|
199
|
-
{ content: 'C1' },
|
|
200
|
-
{ content: 'C2' }
|
|
201
|
-
]
|
|
202
|
-
},
|
|
203
|
-
'post' => {
|
|
204
|
-
title: 'Title 1', body: 'Body 1',
|
|
205
|
-
links: {
|
|
206
|
-
comments: @post.comments.map(&:object_id)
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}, @post_serializer.as_json)
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
def test_associations_embedding_objects_using_embed_namespace
|
|
213
|
-
@association.embed = :objects
|
|
214
|
-
@association.embed_namespace = :links
|
|
215
|
-
|
|
216
|
-
assert_equal({
|
|
217
|
-
'post' => {
|
|
218
|
-
title: 'Title 1', body: 'Body 1',
|
|
219
|
-
links: {
|
|
220
|
-
comments: [
|
|
221
|
-
{ content: 'C1' },
|
|
222
|
-
{ content: 'C2' }
|
|
223
|
-
]
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}, @post_serializer.as_json)
|
|
227
|
-
end
|
|
228
|
-
end
|
|
229
|
-
end
|
|
230
|
-
end
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
module ActiveModel
|
|
4
|
-
class Serializer
|
|
5
|
-
class HasOneTest < Minitest::Test
|
|
6
|
-
def setup
|
|
7
|
-
@association = UserSerializer._associations[:profile]
|
|
8
|
-
@old_association = @association.dup
|
|
9
|
-
|
|
10
|
-
@user = User.new({ name: 'Name 1', email: 'mail@server.com', gender: 'M' })
|
|
11
|
-
@user_serializer = UserSerializer.new(@user)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def teardown
|
|
15
|
-
UserSerializer._associations[:profile] = @old_association
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_associations_definition
|
|
19
|
-
assert_equal 1, UserSerializer._associations.length
|
|
20
|
-
assert_kind_of Association::HasOne, @association
|
|
21
|
-
assert_equal 'profile', @association.name
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def test_associations_embedding_ids_serialization_using_serializable_hash
|
|
25
|
-
@association.embed = :ids
|
|
26
|
-
|
|
27
|
-
assert_equal({
|
|
28
|
-
name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id
|
|
29
|
-
}, @user_serializer.serializable_hash)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_associations_embedding_ids_serialization_using_as_json
|
|
33
|
-
@association.embed = :ids
|
|
34
|
-
|
|
35
|
-
assert_equal({
|
|
36
|
-
'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id }
|
|
37
|
-
}, @user_serializer.as_json)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_associations_embedding_ids_serialization_using_serializable_hash_and_key_from_options
|
|
41
|
-
@association.embed = :ids
|
|
42
|
-
@association.key = 'key'
|
|
43
|
-
|
|
44
|
-
assert_equal({
|
|
45
|
-
name: 'Name 1', email: 'mail@server.com', 'key' => @user.profile.object_id
|
|
46
|
-
}, @user_serializer.serializable_hash)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def test_associations_embedding_objects_serialization_using_serializable_hash
|
|
50
|
-
@association.embed = :objects
|
|
51
|
-
|
|
52
|
-
assert_equal({
|
|
53
|
-
name: 'Name 1', email: 'mail@server.com', profile: { name: 'N1', description: 'D1' }
|
|
54
|
-
}, @user_serializer.serializable_hash)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def test_associations_embedding_objects_serialization_using_as_json
|
|
58
|
-
@association.embed = :objects
|
|
59
|
-
|
|
60
|
-
assert_equal({
|
|
61
|
-
'user' => { name: 'Name 1', email: 'mail@server.com', profile: { name: 'N1', description: 'D1' } }
|
|
62
|
-
}, @user_serializer.as_json)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_associations_embedding_nil_ids_serialization_using_as_json
|
|
66
|
-
@association.embed = :ids
|
|
67
|
-
@user.instance_eval do
|
|
68
|
-
def profile
|
|
69
|
-
nil
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
assert_equal({
|
|
74
|
-
'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => nil }
|
|
75
|
-
}, @user_serializer.as_json)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def test_associations_embedding_nil_objects_serialization_using_as_json
|
|
79
|
-
@association.embed = :objects
|
|
80
|
-
@user.instance_eval do
|
|
81
|
-
def profile
|
|
82
|
-
nil
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
assert_equal({
|
|
87
|
-
'user' => { name: 'Name 1', email: 'mail@server.com', profile: nil }
|
|
88
|
-
}, @user_serializer.as_json)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def test_associations_embedding_objects_serialization_using_serializable_hash_and_root_from_options
|
|
92
|
-
@association.embed = :objects
|
|
93
|
-
@association.embedded_key = 'root'
|
|
94
|
-
|
|
95
|
-
assert_equal({
|
|
96
|
-
name: 'Name 1', email: 'mail@server.com', 'root' => { name: 'N1', description: 'D1' }
|
|
97
|
-
}, @user_serializer.serializable_hash)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def test_associations_embedding_ids_including_objects_serialization_using_serializable_hash
|
|
101
|
-
@association.embed = :ids
|
|
102
|
-
@association.embed_in_root = true
|
|
103
|
-
|
|
104
|
-
assert_equal({
|
|
105
|
-
name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id
|
|
106
|
-
}, @user_serializer.serializable_hash)
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
def test_associations_embedding_nil_ids_including_objects_serialization_using_as_json
|
|
110
|
-
@association.embed = :ids
|
|
111
|
-
@association.embed_in_root = true
|
|
112
|
-
@user.instance_eval do
|
|
113
|
-
def profile
|
|
114
|
-
nil
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
assert_equal({
|
|
119
|
-
'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => nil },
|
|
120
|
-
'profiles' => []
|
|
121
|
-
}, @user_serializer.as_json)
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def test_associations_embedding_ids_including_objects_serialization_using_as_json
|
|
125
|
-
@association.embed = :ids
|
|
126
|
-
@association.embed_in_root = true
|
|
127
|
-
|
|
128
|
-
assert_equal({
|
|
129
|
-
'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id },
|
|
130
|
-
'profiles' => [{ name: 'N1', description: 'D1' }]
|
|
131
|
-
}, @user_serializer.as_json)
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def test_associations_embedding_ids_using_a_given_serializer
|
|
135
|
-
@association.embed = :ids
|
|
136
|
-
@association.embed_in_root = true
|
|
137
|
-
@association.serializer_from_options = Class.new(Serializer) do
|
|
138
|
-
def name
|
|
139
|
-
'fake'
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
attributes :name
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
assert_equal({
|
|
146
|
-
'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id },
|
|
147
|
-
'profiles' => [{ name: 'fake' }]
|
|
148
|
-
}, @user_serializer.as_json)
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def test_associations_embedding_objects_using_a_given_serializer
|
|
152
|
-
@association.serializer_from_options = Class.new(Serializer) do
|
|
153
|
-
def name
|
|
154
|
-
'fake'
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
attributes :name
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
assert_equal({
|
|
161
|
-
'user' => { name: 'Name 1', email: 'mail@server.com', profile: { name: 'fake' } }
|
|
162
|
-
}, @user_serializer.as_json)
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
def test_associations_embedding_ids_using_embed_namespace
|
|
166
|
-
@association.embed_namespace = :links
|
|
167
|
-
@association.embed = :ids
|
|
168
|
-
@association.key = :profile
|
|
169
|
-
assert_equal({
|
|
170
|
-
'user' => {
|
|
171
|
-
name: 'Name 1', email: 'mail@server.com',
|
|
172
|
-
links: {
|
|
173
|
-
profile: @user.profile.object_id
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}, @user_serializer.as_json)
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
def test_asociations_embedding_objects_using_embed_namespace
|
|
180
|
-
@association.embed_namespace = :links
|
|
181
|
-
@association.embed = :objects
|
|
182
|
-
assert_equal({
|
|
183
|
-
'user' => {
|
|
184
|
-
name: 'Name 1', email: 'mail@server.com',
|
|
185
|
-
links: {
|
|
186
|
-
profile: { name: 'N1', description: 'D1' }
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}, @user_serializer.as_json)
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
def test_associations_embedding_ids_using_embed_namespace_and_embed_in_root_key
|
|
193
|
-
@association.embed_in_root = true
|
|
194
|
-
@association.embed_in_root_key = :linked
|
|
195
|
-
@association.embed = :ids
|
|
196
|
-
assert_equal({
|
|
197
|
-
'user' => {
|
|
198
|
-
name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id
|
|
199
|
-
},
|
|
200
|
-
linked: {
|
|
201
|
-
'profiles' => [ { name: 'N1', description: 'D1' } ]
|
|
202
|
-
}
|
|
203
|
-
}, @user_serializer.as_json)
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
module ActiveModel
|
|
4
|
-
class Serializer
|
|
5
|
-
class KeyFormatTest < Minitest::Test
|
|
6
|
-
def test_lower_camel_format_option
|
|
7
|
-
object = WebLog.new({ name: 'Name 1', display_name: 'Display Name 1'})
|
|
8
|
-
serializer = WebLogSerializer.new(object, key_format: :lower_camel)
|
|
9
|
-
|
|
10
|
-
expected = { name: 'Name 1', displayName: 'Display Name 1' }
|
|
11
|
-
|
|
12
|
-
assert_equal expected, serializer.serializable_object
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_lower_camel_format_serializer
|
|
16
|
-
object = WebLog.new({ name: 'Name 1', display_name: 'Display Name 1'})
|
|
17
|
-
serializer = WebLogLowerCamelSerializer.new(object)
|
|
18
|
-
|
|
19
|
-
expected = { name: 'Name 1', displayName: 'Display Name 1' }
|
|
20
|
-
|
|
21
|
-
assert_equal expected, serializer.serializable_object
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|