active_model_serializers 0.9.1 → 0.9.2

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +0 -6
  3. data/README.md +17 -109
  4. data/lib/action_controller/serialization.rb +8 -27
  5. data/lib/action_controller/serialization_test_case.rb +4 -4
  6. data/lib/active_model/array_serializer.rb +5 -12
  7. data/lib/active_model/serializable.rb +2 -24
  8. data/lib/active_model/serializer.rb +36 -70
  9. data/lib/active_model/serializer/{association.rb → associations.rb} +52 -8
  10. data/lib/active_model/serializer/railtie.rb +0 -8
  11. data/lib/active_model/serializer/version.rb +1 -1
  12. data/lib/active_model_serializers.rb +1 -1
  13. data/test/fixtures/poro.rb +1 -110
  14. data/test/integration/action_controller/serialization_test.rb +0 -16
  15. data/test/integration/action_controller/serialization_test_case_test.rb +0 -10
  16. data/test/integration/active_record/active_record_test.rb +2 -2
  17. data/test/test_app.rb +0 -3
  18. data/test/unit/active_model/array_serializer/serialization_test.rb +1 -1
  19. data/test/unit/active_model/serializer/associations/build_serializer_test.rb +0 -15
  20. data/test/unit/active_model/serializer/attributes_test.rb +0 -16
  21. data/test/unit/active_model/serializer/config_test.rb +0 -3
  22. data/test/unit/active_model/serializer/has_many_test.rb +16 -51
  23. data/test/unit/active_model/serializer/has_one_test.rb +0 -32
  24. data/test/unit/active_model/serializer/options_test.rb +0 -19
  25. metadata +3 -18
  26. data/lib/active_model/serializable/utils.rb +0 -16
  27. data/lib/active_model/serializer/association/has_many.rb +0 -39
  28. data/lib/active_model/serializer/association/has_one.rb +0 -25
  29. data/test/fixtures/template.html.erb +0 -1
  30. data/test/integration/action_controller/namespaced_serialization_test.rb +0 -96
  31. data/test/unit/active_model/serializer/has_many_polymorphic_test.rb +0 -189
  32. data/test/unit/active_model/serializer/has_one_and_has_many_test.rb +0 -27
  33. data/test/unit/active_model/serializer/has_one_polymorphic_test.rb +0 -196
  34. data/test/unit/active_model/serializer/url_helpers_test.rb +0 -35
@@ -1,27 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class HasOneAndHasManyTest < Minitest::Test
6
- def setup
7
- @post = SpecialPost.new({ title: 'T1', body: 'B1'})
8
- @post_serializer = SpecialPostSerializer.new(@post)
9
- end
10
-
11
- def teardown
12
- end
13
-
14
- def test_side_load_has_one_and_has_many_in_same_array
15
- assert_equal({
16
- "post" => {
17
- title: 'T1',
18
- body: 'B1',
19
- 'comment_ids' => @post.comments.map { |c| c.object_id },
20
- 'special_comment_id' => @post_serializer.special_comment.object_id,
21
- },
22
- "comments" => [{ content: 'C1' }, { content: 'C2' }, { content: 'special' }]
23
- }, @post_serializer.as_json(root: 'post'))
24
- end
25
- end
26
- end
27
- end
@@ -1,196 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class HasOnePolymorphicTest < ActiveModel::TestCase
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,35 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class UrlHelpersTest < Minitest::Test
6
- include Rails.application.routes.url_helpers
7
-
8
- def setup
9
- Object.const_set 'UserController', Class.new(ActionController::Base) do
10
- def show
11
- render text: 'profile'
12
- end
13
- end
14
-
15
- Rails.application.routes.draw do
16
- get '/profile/:id', as: :profile, controller: :user, action: :show
17
- end
18
- end
19
-
20
- def test_url_helpers_are_available
21
- serializer = Class.new(ActiveModel::Serializer) do
22
- attributes :url
23
-
24
- def url
25
- profile_url(id: object.object_id)
26
- end
27
- end
28
- profile = Profile.new
29
-
30
- assert_equal({ url: profile_url(id: profile.object_id) },
31
- serializer.new(profile).as_json)
32
- end
33
- end
34
- end
35
- end