active_model_serializers 0.9.12 → 0.10.15

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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +638 -82
  3. data/MIT-LICENSE +3 -2
  4. data/README.md +194 -846
  5. data/lib/action_controller/serialization.rb +34 -74
  6. data/lib/active_model/serializable_resource.rb +13 -0
  7. data/lib/active_model/serializer/adapter/attributes.rb +17 -0
  8. data/lib/active_model/serializer/adapter/base.rb +20 -0
  9. data/lib/active_model/serializer/adapter/json.rb +17 -0
  10. data/lib/active_model/serializer/adapter/json_api.rb +17 -0
  11. data/lib/active_model/serializer/adapter/null.rb +17 -0
  12. data/lib/active_model/serializer/adapter.rb +26 -0
  13. data/lib/active_model/serializer/array_serializer.rb +14 -0
  14. data/lib/active_model/serializer/association.rb +53 -38
  15. data/lib/active_model/serializer/attribute.rb +27 -0
  16. data/lib/active_model/serializer/belongs_to_reflection.rb +13 -0
  17. data/lib/active_model/serializer/collection_serializer.rb +99 -0
  18. data/lib/active_model/serializer/concerns/caching.rb +305 -0
  19. data/lib/active_model/serializer/error_serializer.rb +16 -0
  20. data/lib/active_model/serializer/errors_serializer.rb +34 -0
  21. data/lib/active_model/serializer/field.rb +92 -0
  22. data/lib/active_model/serializer/fieldset.rb +33 -0
  23. data/lib/active_model/serializer/has_many_reflection.rb +12 -0
  24. data/lib/active_model/serializer/has_one_reflection.rb +9 -0
  25. data/lib/active_model/serializer/lazy_association.rb +99 -0
  26. data/lib/active_model/serializer/link.rb +23 -0
  27. data/lib/active_model/serializer/lint.rb +152 -0
  28. data/lib/active_model/serializer/null.rb +19 -0
  29. data/lib/active_model/serializer/reflection.rb +212 -0
  30. data/lib/active_model/serializer/version.rb +1 -1
  31. data/lib/active_model/serializer.rb +361 -263
  32. data/lib/active_model_serializers/adapter/attributes.rb +36 -0
  33. data/lib/active_model_serializers/adapter/base.rb +85 -0
  34. data/lib/active_model_serializers/adapter/json.rb +23 -0
  35. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +215 -0
  36. data/lib/active_model_serializers/adapter/json_api/error.rb +98 -0
  37. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +51 -0
  38. data/lib/active_model_serializers/adapter/json_api/link.rb +85 -0
  39. data/lib/active_model_serializers/adapter/json_api/meta.rb +39 -0
  40. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +94 -0
  41. data/lib/active_model_serializers/adapter/json_api/relationship.rb +106 -0
  42. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +68 -0
  43. data/lib/active_model_serializers/adapter/json_api.rb +535 -0
  44. data/lib/active_model_serializers/adapter/null.rb +11 -0
  45. data/lib/active_model_serializers/adapter.rb +100 -0
  46. data/lib/active_model_serializers/callbacks.rb +57 -0
  47. data/lib/active_model_serializers/deprecate.rb +56 -0
  48. data/lib/active_model_serializers/deserialization.rb +17 -0
  49. data/lib/active_model_serializers/json_pointer.rb +16 -0
  50. data/lib/active_model_serializers/logging.rb +124 -0
  51. data/lib/active_model_serializers/lookup_chain.rb +82 -0
  52. data/lib/active_model_serializers/model.rb +132 -0
  53. data/lib/active_model_serializers/railtie.rb +62 -0
  54. data/lib/active_model_serializers/register_jsonapi_renderer.rb +80 -0
  55. data/lib/active_model_serializers/serializable_resource.rb +84 -0
  56. data/lib/active_model_serializers/serialization_context.rb +41 -0
  57. data/lib/active_model_serializers/test/schema.rb +140 -0
  58. data/lib/active_model_serializers/test/serializer.rb +127 -0
  59. data/lib/active_model_serializers/test.rb +9 -0
  60. data/lib/active_model_serializers.rb +58 -27
  61. data/lib/generators/rails/USAGE +6 -0
  62. data/lib/{active_model/serializer/generators → generators/rails}/resource_override.rb +1 -4
  63. data/lib/{active_model/serializer/generators/serializer → generators/rails}/serializer_generator.rb +4 -5
  64. data/lib/grape/active_model_serializers.rb +18 -0
  65. data/lib/grape/formatters/active_model_serializers.rb +34 -0
  66. data/lib/grape/helpers/active_model_serializers.rb +19 -0
  67. data/lib/tasks/rubocop.rake +60 -0
  68. metadata +248 -155
  69. data/CONTRIBUTING.md +0 -20
  70. data/DESIGN.textile +0 -586
  71. data/lib/action_controller/serialization_test_case.rb +0 -82
  72. data/lib/active_model/array_serializer.rb +0 -70
  73. data/lib/active_model/default_serializer.rb +0 -30
  74. data/lib/active_model/serializable/utils.rb +0 -18
  75. data/lib/active_model/serializable.rb +0 -61
  76. data/lib/active_model/serializer/association/has_many.rb +0 -41
  77. data/lib/active_model/serializer/association/has_one.rb +0 -27
  78. data/lib/active_model/serializer/config.rb +0 -33
  79. data/lib/active_model/serializer/generators/serializer/USAGE +0 -9
  80. data/lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb +0 -16
  81. data/lib/active_model/serializer/generators/serializer/templates/controller.rb +0 -93
  82. data/lib/active_model/serializer/railtie.rb +0 -24
  83. data/lib/active_model/serializer_support.rb +0 -7
  84. data/test/benchmark/app.rb +0 -60
  85. data/test/benchmark/benchmarking_support.rb +0 -67
  86. data/test/benchmark/bm_active_record.rb +0 -41
  87. data/test/benchmark/setup.rb +0 -75
  88. data/test/benchmark/tmp/miniprofiler/mp_timers_6eqewtfgrhitvq5gqm25 +0 -0
  89. data/test/benchmark/tmp/miniprofiler/mp_timers_8083sx03hu72pxz1a4d0 +0 -0
  90. data/test/benchmark/tmp/miniprofiler/mp_timers_fyz2gsml4z0ph9kpoy1c +0 -0
  91. data/test/benchmark/tmp/miniprofiler/mp_timers_hjry5rc32imd42oxoi48 +0 -0
  92. data/test/benchmark/tmp/miniprofiler/mp_timers_m8fpoz2cvt3g9agz0bs3 +0 -0
  93. data/test/benchmark/tmp/miniprofiler/mp_timers_p92m2drnj1i568u3sta0 +0 -0
  94. data/test/benchmark/tmp/miniprofiler/mp_timers_qg52tpca3uesdfguee9i +0 -0
  95. data/test/benchmark/tmp/miniprofiler/mp_timers_s15t1a6mvxe0z7vjv790 +0 -0
  96. data/test/benchmark/tmp/miniprofiler/mp_timers_x8kal3d17nfds6vp4kcj +0 -0
  97. data/test/benchmark/tmp/miniprofiler/mp_views_127.0.0.1 +0 -0
  98. data/test/fixtures/active_record.rb +0 -96
  99. data/test/fixtures/poro.rb +0 -255
  100. data/test/fixtures/template.html.erb +0 -1
  101. data/test/integration/action_controller/namespaced_serialization_test.rb +0 -105
  102. data/test/integration/action_controller/serialization_test.rb +0 -287
  103. data/test/integration/action_controller/serialization_test_case_test.rb +0 -71
  104. data/test/integration/active_record/active_record_test.rb +0 -94
  105. data/test/integration/generators/resource_generator_test.rb +0 -26
  106. data/test/integration/generators/scaffold_controller_generator_test.rb +0 -64
  107. data/test/integration/generators/serializer_generator_test.rb +0 -41
  108. data/test/test_app.rb +0 -18
  109. data/test/test_helper.rb +0 -31
  110. data/test/tmp/app/assets/javascripts/accounts.js +0 -2
  111. data/test/tmp/app/assets/stylesheets/accounts.css +0 -4
  112. data/test/tmp/app/controllers/accounts_controller.rb +0 -3
  113. data/test/tmp/app/helpers/accounts_helper.rb +0 -3
  114. data/test/tmp/app/serializers/account_serializer.rb +0 -4
  115. data/test/tmp/config/routes.rb +0 -2
  116. data/test/unit/active_model/array_serializer/except_test.rb +0 -18
  117. data/test/unit/active_model/array_serializer/key_format_test.rb +0 -18
  118. data/test/unit/active_model/array_serializer/meta_test.rb +0 -53
  119. data/test/unit/active_model/array_serializer/only_test.rb +0 -18
  120. data/test/unit/active_model/array_serializer/options_test.rb +0 -16
  121. data/test/unit/active_model/array_serializer/root_test.rb +0 -102
  122. data/test/unit/active_model/array_serializer/scope_test.rb +0 -24
  123. data/test/unit/active_model/array_serializer/serialization_test.rb +0 -239
  124. data/test/unit/active_model/default_serializer_test.rb +0 -13
  125. data/test/unit/active_model/serializer/associations/build_serializer_test.rb +0 -36
  126. data/test/unit/active_model/serializer/associations_test.rb +0 -49
  127. data/test/unit/active_model/serializer/attributes_test.rb +0 -57
  128. data/test/unit/active_model/serializer/config_test.rb +0 -91
  129. data/test/unit/active_model/serializer/filter_test.rb +0 -69
  130. data/test/unit/active_model/serializer/has_many_polymorphic_test.rb +0 -189
  131. data/test/unit/active_model/serializer/has_many_test.rb +0 -265
  132. data/test/unit/active_model/serializer/has_one_and_has_many_test.rb +0 -27
  133. data/test/unit/active_model/serializer/has_one_polymorphic_test.rb +0 -196
  134. data/test/unit/active_model/serializer/has_one_test.rb +0 -253
  135. data/test/unit/active_model/serializer/key_format_test.rb +0 -25
  136. data/test/unit/active_model/serializer/meta_test.rb +0 -39
  137. data/test/unit/active_model/serializer/options_test.rb +0 -42
  138. data/test/unit/active_model/serializer/root_test.rb +0 -117
  139. data/test/unit/active_model/serializer/scope_test.rb +0 -49
  140. data/test/unit/active_model/serializer/url_helpers_test.rb +0 -36
  141. data/test/unit/active_model/serilizable_test.rb +0 -50
  142. /data/lib/{active_model/serializer/generators/serializer/templates/serializer.rb → generators/rails/templates/serializer.rb.erb} +0 -0
@@ -1,196 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class HasOnePolymorphicTest < Minitest::Test
6
- def setup
7
- @association = InterviewSerializer._associations[:attachment]
8
- @old_association = @association.dup
9
-
10
- @interview = Interview.new({ text: 'Text 1' })
11
- @interview_serializer = InterviewSerializer.new(@interview)
12
- end
13
-
14
- def teardown
15
- InterviewSerializer._associations[:attachment] = @old_association
16
- end
17
-
18
- def model_name(object)
19
- object.class.to_s.demodulize.underscore.to_sym
20
- end
21
-
22
- def test_associations_definition
23
- assert_equal 1, InterviewSerializer._associations.length
24
- assert_kind_of Association::HasOne, @association
25
- assert_equal true, @association.polymorphic
26
- assert_equal 'attachment', @association.name
27
- end
28
-
29
- def test_associations_embedding_ids_serialization_using_serializable_hash
30
- @association.embed = :ids
31
-
32
- assert_equal({
33
- text: 'Text 1',
34
- 'attachment_id' => {
35
- type: model_name(@interview.attachment),
36
- id: @interview.attachment.object_id
37
- }
38
- }, @interview_serializer.serializable_hash)
39
- end
40
-
41
- def test_associations_embedding_ids_serialization_using_as_json
42
- @association.embed = :ids
43
-
44
- assert_equal({
45
- 'interview' => {
46
- text: 'Text 1',
47
- 'attachment_id' => {
48
- type: model_name(@interview.attachment),
49
- id: @interview.attachment.object_id
50
- }
51
- }
52
- }, @interview_serializer.as_json)
53
- end
54
-
55
- def test_associations_embedding_ids_serialization_using_serializable_hash_and_key_from_options
56
- @association.embed = :ids
57
- @association.key = 'key'
58
-
59
- assert_equal({
60
- text: 'Text 1',
61
- 'key' => {
62
- type: model_name(@interview.attachment),
63
- id: @interview.attachment.object_id
64
- }
65
- }, @interview_serializer.serializable_hash)
66
- end
67
-
68
- def test_associations_embedding_objects_serialization_using_serializable_hash
69
- @association.embed = :objects
70
-
71
- assert_equal({
72
- text: 'Text 1',
73
- attachment: {
74
- type: model_name(@interview.attachment),
75
- model_name(@interview.attachment) => { url: 'U1'}
76
- }
77
- }, @interview_serializer.serializable_hash)
78
- end
79
-
80
- def test_associations_embedding_objects_serialization_using_as_json
81
- @association.embed = :objects
82
-
83
- assert_equal({
84
- 'interview' => {
85
- text: 'Text 1',
86
- attachment: {
87
- type: model_name(@interview.attachment),
88
- model_name(@interview.attachment) => { url: 'U1'}
89
- }
90
- }
91
- }, @interview_serializer.as_json)
92
- end
93
-
94
- def test_associations_embedding_nil_ids_serialization_using_as_json
95
- @association.embed = :ids
96
- @interview.instance_eval do
97
- def attachment
98
- nil
99
- end
100
- end
101
-
102
- assert_equal({
103
- 'interview' => { text: 'Text 1', 'attachment_id' => nil }
104
- }, @interview_serializer.as_json)
105
- end
106
-
107
- def test_associations_embedding_nil_objects_serialization_using_as_json
108
- @association.embed = :objects
109
- @interview.instance_eval do
110
- def attachment
111
- nil
112
- end
113
- end
114
-
115
- assert_equal({
116
- 'interview' => { text: 'Text 1', attachment: nil }
117
- }, @interview_serializer.as_json)
118
- end
119
-
120
- def test_associations_embedding_objects_serialization_using_serializable_hash_and_root_from_options
121
- @association.embed = :objects
122
- @association.embedded_key = 'root'
123
-
124
- assert_equal({
125
- text: 'Text 1',
126
- 'root' => {
127
- type: model_name(@interview.attachment),
128
- model_name(@interview.attachment) => { url: 'U1'}
129
- }
130
- }, @interview_serializer.serializable_hash)
131
- end
132
-
133
- def test_associations_embedding_ids_including_objects_serialization_using_serializable_hash
134
- @association.embed = :ids
135
- @association.embed_in_root = true
136
-
137
- assert_equal({
138
- text: 'Text 1',
139
- 'attachment_id' => {
140
- type: model_name(@interview.attachment),
141
- id: @interview.attachment.object_id
142
- }
143
- }, @interview_serializer.serializable_hash)
144
- end
145
-
146
- def test_associations_embedding_ids_including_objects_serialization_using_as_json
147
- @association.embed = :ids
148
- @association.embed_in_root = true
149
-
150
- assert_equal({
151
- 'interview' => {
152
- text: 'Text 1',
153
- 'attachment_id' => {
154
- type: model_name(@interview.attachment),
155
- id: @interview.attachment.object_id
156
- }
157
- },
158
- "attachments" => [{
159
- type: model_name(@interview.attachment),
160
- model_name(@interview.attachment) => {
161
- url: 'U1'
162
- }
163
- }]
164
- }, @interview_serializer.as_json)
165
- end
166
-
167
- def test_associations_using_a_given_serializer
168
- @association.embed = :ids
169
- @association.embed_in_root = true
170
- @association.serializer_from_options = Class.new(ActiveModel::Serializer) do
171
- def name
172
- 'fake'
173
- end
174
-
175
- attributes :name
176
- end
177
-
178
- assert_equal({
179
- 'interview' => {
180
- text: 'Text 1',
181
- 'attachment_id' => {
182
- type: model_name(@interview.attachment),
183
- id: @interview.attachment.object_id
184
- }
185
- },
186
- "attachments" => [{
187
- type: model_name(@interview.attachment),
188
- model_name(@interview.attachment) => {
189
- name: 'fake'
190
- }
191
- }]
192
- }, @interview_serializer.as_json)
193
- end
194
- end
195
- end
196
- end
@@ -1,253 +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_including_objects_serialization_when_invoked_from_parent_serializer
135
- @association.embed = :ids
136
- @association.embed_in_root = true
137
-
138
- user_info = UserInfo.new
139
- user_info.instance_variable_set(:@user, @user)
140
- user_info_serializer = UserInfoSerializer.new(user_info)
141
-
142
- assert_equal({
143
- 'user_info' => { user: { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id } },
144
- 'profiles' => [{ name: 'N1', description: 'D1' }]
145
- }, user_info_serializer.as_json)
146
- end
147
-
148
- def test_associations_embedding_ids_using_a_given_serializer
149
- @association.embed = :ids
150
- @association.embed_in_root = true
151
- @association.serializer_from_options = Class.new(Serializer) do
152
- def name
153
- 'fake'
154
- end
155
-
156
- attributes :name
157
- end
158
-
159
- assert_equal({
160
- 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id },
161
- 'profiles' => [{ name: 'fake' }]
162
- }, @user_serializer.as_json)
163
- end
164
-
165
- def test_associations_embedding_objects_using_a_given_serializer
166
- @association.serializer_from_options = Class.new(Serializer) do
167
- def name
168
- 'fake'
169
- end
170
-
171
- attributes :name
172
- end
173
-
174
- assert_equal({
175
- 'user' => { name: 'Name 1', email: 'mail@server.com', profile: { name: 'fake' } }
176
- }, @user_serializer.as_json)
177
- end
178
-
179
- def test_associations_embedding_objects_with_nil_values
180
- user_info = UserInfo.new
181
- user_info.instance_eval do
182
- def user
183
- nil
184
- end
185
- end
186
- user_info_serializer = UserInfoSerializer.new(user_info)
187
-
188
- assert_equal({
189
- 'user_info' => { user: nil }
190
- }, user_info_serializer.as_json)
191
- end
192
-
193
- def test_associations_embedding_ids_using_embed_namespace
194
- @association.embed_namespace = :links
195
- @association.embed = :ids
196
- @association.key = :profile
197
- assert_equal({
198
- 'user' => {
199
- name: 'Name 1', email: 'mail@server.com',
200
- links: {
201
- profile: @user.profile.object_id
202
- }
203
- }
204
- }, @user_serializer.as_json)
205
- end
206
-
207
- def test_asociations_embedding_objects_using_embed_namespace
208
- @association.embed_namespace = :links
209
- @association.embed = :objects
210
- assert_equal({
211
- 'user' => {
212
- name: 'Name 1', email: 'mail@server.com',
213
- links: {
214
- profile: { name: 'N1', description: 'D1' }
215
- }
216
- }
217
- }, @user_serializer.as_json)
218
- end
219
-
220
- def test_associations_embedding_ids_using_embed_namespace_and_embed_in_root_key
221
- @association.embed_in_root = true
222
- @association.embed_in_root_key = :linked
223
- @association.embed = :ids
224
- assert_equal({
225
- 'user' => {
226
- name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id
227
- },
228
- linked: {
229
- 'profiles' => [ { name: 'N1', description: 'D1' } ]
230
- }
231
- }, @user_serializer.as_json)
232
- end
233
-
234
- def test_associations_name_key_embedding_ids_serialization_using_serializable_hash
235
- @association = NameKeyUserSerializer._associations[:profile]
236
- @association.embed = :ids
237
-
238
- assert_equal({
239
- name: 'Name 1', email: 'mail@server.com', 'profile' => @user.profile.object_id
240
- }, NameKeyUserSerializer.new(@user).serializable_hash)
241
- end
242
-
243
- def test_associations_name_key_embedding_ids_serialization_using_as_json
244
- @association = NameKeyUserSerializer._associations[:profile]
245
- @association.embed = :ids
246
-
247
- assert_equal({
248
- 'name_key_user' => { name: 'Name 1', email: 'mail@server.com', 'profile' => @user.profile.object_id }
249
- }, NameKeyUserSerializer.new(@user).as_json)
250
- end
251
- end
252
- end
253
- 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
@@ -1,39 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class MetaTest < Minitest::Test
6
- def setup
7
- @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
8
- end
9
-
10
- def test_meta
11
- profile_serializer = ProfileSerializer.new(@profile, root: 'profile', meta: { total: 10 })
12
-
13
- assert_equal({
14
- 'profile' => {
15
- name: 'Name 1',
16
- description: 'Description 1'
17
- },
18
- meta: {
19
- total: 10
20
- }
21
- }, profile_serializer.as_json)
22
- end
23
-
24
- def test_meta_using_meta_key
25
- profile_serializer = ProfileSerializer.new(@profile, root: 'profile', meta_key: :my_meta, my_meta: { total: 10 })
26
-
27
- assert_equal({
28
- 'profile' => {
29
- name: 'Name 1',
30
- description: 'Description 1'
31
- },
32
- my_meta: {
33
- total: 10
34
- }
35
- }, profile_serializer.as_json)
36
- end
37
- end
38
- end
39
- end
@@ -1,42 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class OptionsTest < Minitest::Test
6
- def setup
7
- @serializer = ProfileSerializer.new(nil, context: {foo: :bar})
8
- end
9
-
10
- def test_custom_options_are_accessible_from_serializer
11
- assert_equal({foo: :bar}, @serializer.context)
12
- end
13
- end
14
-
15
- class SerializationOptionsTest < Minitest::Test
16
- def setup
17
- @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
18
- @profile_serializer = ProfileSerializer.new(@profile)
19
- @profile_serializer.instance_eval do
20
- def description
21
- serialization_options[:force_the_description]
22
- end
23
- end
24
-
25
- @category = Category.new({name: 'Category 1'})
26
- @category_serializer = CategorySerializer.new(@category)
27
- end
28
-
29
- def test_filtered_attributes_serialization
30
- forced_description = "This is a test"
31
- assert_equal({
32
- 'profile' => { name: 'Name 1', description: forced_description }
33
- }, @profile_serializer.as_json(force_the_description: forced_description))
34
- end
35
-
36
- def test_filtered_attributes_serialization_across_association
37
- assert_equal("'T1'",
38
- @category_serializer.as_json(highlight_keyword: 'T1')['category'][:posts][0][:title])
39
- end
40
- end
41
- end
42
- end
@@ -1,117 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class RootAsOptionTest < Minitest::Test
6
- def setup
7
- @old_root = ProfileSerializer._root
8
- @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
9
- @serializer = ProfileSerializer.new(@profile, root: :initialize)
10
- ProfileSerializer._root = true
11
- end
12
-
13
- def teardown
14
- ProfileSerializer._root = @old_root
15
- end
16
-
17
- def test_root_is_not_displayed_using_serializable_hash
18
- assert_equal({
19
- name: 'Name 1', description: 'Description 1'
20
- }, @serializer.serializable_hash)
21
- end
22
-
23
- def test_root_using_as_json
24
- assert_equal({
25
- initialize: {
26
- name: 'Name 1', description: 'Description 1'
27
- }
28
- }, @serializer.as_json)
29
- end
30
-
31
- def test_root_from_serializer_name
32
- @serializer = ProfileSerializer.new(@profile)
33
-
34
- assert_equal({
35
- 'profile' => {
36
- name: 'Name 1', description: 'Description 1'
37
- }
38
- }, @serializer.as_json)
39
- end
40
-
41
- def test_root_as_argument_takes_precedence
42
- assert_equal({
43
- argument: {
44
- name: 'Name 1', description: 'Description 1'
45
- }
46
- }, @serializer.as_json(root: :argument))
47
- end
48
-
49
- def test_using_false_root_in_initializer_takes_precedence
50
- ProfileSerializer._root = 'root'
51
- @serializer = ProfileSerializer.new(@profile, root: false)
52
-
53
- assert_equal({
54
- name: 'Name 1', description: 'Description 1'
55
- }, @serializer.as_json)
56
- end
57
-
58
- def test_root_inheritance
59
- ProfileSerializer._root = 'profile'
60
-
61
- inherited_serializer_klass = Class.new(ProfileSerializer)
62
- inherited_serializer_klass._root = 'inherited_profile'
63
-
64
- another_inherited_serializer_klass = Class.new(ProfileSerializer)
65
-
66
- assert_equal('inherited_profile',
67
- inherited_serializer_klass._root)
68
- assert_equal('profile',
69
- another_inherited_serializer_klass._root)
70
- end
71
- end
72
-
73
- class RootInSerializerTest < Minitest::Test
74
- def setup
75
- @old_root = ProfileSerializer._root
76
- ProfileSerializer._root = :in_serializer
77
- profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
78
- @serializer = ProfileSerializer.new(profile)
79
- @rooted_serializer = ProfileSerializer.new(profile, root: :initialize)
80
- end
81
-
82
- def teardown
83
- ProfileSerializer._root = @old_root
84
- end
85
-
86
- def test_root_is_not_displayed_using_serializable_hash
87
- assert_equal({
88
- name: 'Name 1', description: 'Description 1'
89
- }, @serializer.serializable_hash)
90
- end
91
-
92
- def test_root_using_as_json
93
- assert_equal({
94
- in_serializer: {
95
- name: 'Name 1', description: 'Description 1'
96
- }
97
- }, @serializer.as_json)
98
- end
99
-
100
- def test_root_in_initializer_takes_precedence
101
- assert_equal({
102
- initialize: {
103
- name: 'Name 1', description: 'Description 1'
104
- }
105
- }, @rooted_serializer.as_json)
106
- end
107
-
108
- def test_root_as_argument_takes_precedence
109
- assert_equal({
110
- argument: {
111
- name: 'Name 1', description: 'Description 1'
112
- }
113
- }, @rooted_serializer.as_json(root: :argument))
114
- end
115
- end
116
- end
117
- end