active_model_serializers 0.10.0.rc2 → 0.10.0.rc3

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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +82 -0
  4. data/.rubocop_todo.yml +315 -0
  5. data/.simplecov +99 -0
  6. data/.travis.yml +8 -0
  7. data/CHANGELOG.md +9 -3
  8. data/Gemfile +39 -8
  9. data/README.md +55 -31
  10. data/Rakefile +29 -2
  11. data/active_model_serializers.gemspec +37 -13
  12. data/appveyor.yml +25 -0
  13. data/docs/README.md +29 -0
  14. data/docs/general/adapters.md +110 -0
  15. data/docs/general/configuration_options.md +11 -0
  16. data/docs/general/getting_started.md +73 -0
  17. data/docs/howto/add_pagination_links.md +112 -0
  18. data/docs/howto/add_root_key.md +51 -0
  19. data/docs/howto/outside_controller_use.md +42 -0
  20. data/lib/action_controller/serialization.rb +24 -33
  21. data/lib/active_model/serializable_resource.rb +70 -0
  22. data/lib/active_model/serializer.rb +50 -131
  23. data/lib/active_model/serializer/adapter.rb +84 -21
  24. data/lib/active_model/serializer/adapter/flatten_json.rb +9 -9
  25. data/lib/active_model/serializer/adapter/fragment_cache.rb +10 -13
  26. data/lib/active_model/serializer/adapter/json.rb +25 -28
  27. data/lib/active_model/serializer/adapter/json/fragment_cache.rb +2 -12
  28. data/lib/active_model/serializer/adapter/json_api.rb +100 -98
  29. data/lib/active_model/serializer/adapter/json_api/fragment_cache.rb +4 -14
  30. data/lib/active_model/serializer/adapter/json_api/pagination_links.rb +50 -0
  31. data/lib/active_model/serializer/adapter/null.rb +2 -8
  32. data/lib/active_model/serializer/array_serializer.rb +22 -17
  33. data/lib/active_model/serializer/association.rb +20 -0
  34. data/lib/active_model/serializer/associations.rb +97 -0
  35. data/lib/active_model/serializer/belongs_to_reflection.rb +10 -0
  36. data/lib/active_model/serializer/collection_reflection.rb +7 -0
  37. data/lib/active_model/serializer/configuration.rb +1 -0
  38. data/lib/active_model/serializer/fieldset.rb +7 -7
  39. data/lib/active_model/serializer/has_many_reflection.rb +10 -0
  40. data/lib/active_model/serializer/has_one_reflection.rb +10 -0
  41. data/lib/active_model/serializer/lint.rb +129 -0
  42. data/lib/active_model/serializer/railtie.rb +7 -0
  43. data/lib/active_model/serializer/reflection.rb +74 -0
  44. data/lib/active_model/serializer/singular_reflection.rb +7 -0
  45. data/lib/active_model/serializer/utils.rb +35 -0
  46. data/lib/active_model/serializer/version.rb +1 -1
  47. data/lib/active_model_serializers.rb +28 -14
  48. data/lib/generators/serializer/serializer_generator.rb +7 -7
  49. data/lib/generators/serializer/templates/{serializer.rb → serializer.rb.erb} +2 -2
  50. data/lib/tasks/rubocop.rake +0 -0
  51. data/test/action_controller/adapter_selector_test.rb +3 -3
  52. data/test/action_controller/explicit_serializer_test.rb +9 -9
  53. data/test/action_controller/json_api/linked_test.rb +179 -0
  54. data/test/action_controller/json_api/pagination_test.rb +116 -0
  55. data/test/action_controller/serialization_scope_name_test.rb +10 -6
  56. data/test/action_controller/serialization_test.rb +149 -112
  57. data/test/active_record_test.rb +9 -0
  58. data/test/adapter/fragment_cache_test.rb +11 -1
  59. data/test/adapter/json/belongs_to_test.rb +4 -5
  60. data/test/adapter/json/collection_test.rb +30 -21
  61. data/test/adapter/json/has_many_test.rb +20 -9
  62. data/test/adapter/json_api/belongs_to_test.rb +38 -38
  63. data/test/adapter/json_api/collection_test.rb +22 -23
  64. data/test/adapter/json_api/has_many_embed_ids_test.rb +2 -2
  65. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +4 -4
  66. data/test/adapter/json_api/has_many_test.rb +54 -19
  67. data/test/adapter/json_api/has_one_test.rb +28 -8
  68. data/test/adapter/json_api/json_api_test.rb +37 -0
  69. data/test/adapter/json_api/linked_test.rb +75 -75
  70. data/test/adapter/json_api/pagination_links_test.rb +115 -0
  71. data/test/adapter/json_api/resource_type_config_test.rb +59 -0
  72. data/test/adapter/json_test.rb +18 -5
  73. data/test/adapter_test.rb +10 -11
  74. data/test/array_serializer_test.rb +63 -5
  75. data/test/capture_warnings.rb +65 -0
  76. data/test/fixtures/active_record.rb +56 -0
  77. data/test/fixtures/poro.rb +60 -29
  78. data/test/generators/scaffold_controller_generator_test.rb +1 -2
  79. data/test/generators/serializer_generator_test.rb +17 -12
  80. data/test/lint_test.rb +37 -0
  81. data/test/logger_test.rb +18 -0
  82. data/test/poro_test.rb +9 -0
  83. data/test/serializable_resource_test.rb +27 -0
  84. data/test/serializers/adapter_for_test.rb +123 -3
  85. data/test/serializers/association_macros_test.rb +36 -0
  86. data/test/serializers/associations_test.rb +70 -47
  87. data/test/serializers/attribute_test.rb +28 -4
  88. data/test/serializers/attributes_test.rb +8 -14
  89. data/test/serializers/cache_test.rb +58 -31
  90. data/test/serializers/fieldset_test.rb +3 -4
  91. data/test/serializers/meta_test.rb +42 -28
  92. data/test/serializers/root_test.rb +21 -0
  93. data/test/serializers/serializer_for_test.rb +1 -1
  94. data/test/support/rails_app.rb +21 -0
  95. data/test/support/serialization_testing.rb +13 -0
  96. data/test/support/simplecov.rb +6 -0
  97. data/test/support/stream_capture.rb +50 -0
  98. data/test/support/test_case.rb +5 -0
  99. data/test/test_helper.rb +41 -29
  100. data/test/utils/include_args_to_hash_test.rb +79 -0
  101. metadata +123 -17
  102. data/test/action_controller/json_api_linked_test.rb +0 -179
  103. data/test/action_controller/rescue_from_test.rb +0 -32
  104. data/test/serializers/urls_test.rb +0 -26
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0.rc2
4
+ version: 0.10.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Klabnik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-16 00:00:00.000000000 Z
11
+ date: 2015-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -25,19 +25,67 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rails
28
+ name: actionpack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.0'
34
- type: :development
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '4.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '4.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '4.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: kaminari
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.16.3
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.16.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: will_paginate
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 3.0.7
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '3.0'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 3.0.7
41
89
  - !ruby/object:Gem::Dependency
42
90
  name: bundler
43
91
  requirement: !ruby/object:Gem::Requirement
@@ -53,19 +101,19 @@ dependencies:
53
101
  - !ruby/object:Gem::Version
54
102
  version: '1.6'
55
103
  - !ruby/object:Gem::Dependency
56
- name: rake
104
+ name: timecop
57
105
  requirement: !ruby/object:Gem::Requirement
58
106
  requirements:
59
- - - ">="
107
+ - - "~>"
60
108
  - !ruby/object:Gem::Version
61
- version: '0'
109
+ version: '0.7'
62
110
  type: :development
63
111
  prerelease: false
64
112
  version_requirements: !ruby/object:Gem::Requirement
65
113
  requirements:
66
- - - ">="
114
+ - - "~>"
67
115
  - !ruby/object:Gem::Version
68
- version: '0'
116
+ version: '0.7'
69
117
  description: ActiveModel::Serializers allows you to generate your JSON in an object-oriented
70
118
  and convention-driven manner.
71
119
  email:
@@ -75,6 +123,9 @@ extensions: []
75
123
  extra_rdoc_files: []
76
124
  files:
77
125
  - ".gitignore"
126
+ - ".rubocop.yml"
127
+ - ".rubocop_todo.yml"
128
+ - ".simplecov"
78
129
  - ".travis.yml"
79
130
  - CHANGELOG.md
80
131
  - CONTRIBUTING.md
@@ -83,7 +134,16 @@ files:
83
134
  - README.md
84
135
  - Rakefile
85
136
  - active_model_serializers.gemspec
137
+ - appveyor.yml
138
+ - docs/README.md
139
+ - docs/general/adapters.md
140
+ - docs/general/configuration_options.md
141
+ - docs/general/getting_started.md
142
+ - docs/howto/add_pagination_links.md
143
+ - docs/howto/add_root_key.md
144
+ - docs/howto/outside_controller_use.md
86
145
  - lib/action_controller/serialization.rb
146
+ - lib/active_model/serializable_resource.rb
87
147
  - lib/active_model/serializer.rb
88
148
  - lib/active_model/serializer/adapter.rb
89
149
  - lib/active_model/serializer/adapter/flatten_json.rb
@@ -92,23 +152,36 @@ files:
92
152
  - lib/active_model/serializer/adapter/json/fragment_cache.rb
93
153
  - lib/active_model/serializer/adapter/json_api.rb
94
154
  - lib/active_model/serializer/adapter/json_api/fragment_cache.rb
155
+ - lib/active_model/serializer/adapter/json_api/pagination_links.rb
95
156
  - lib/active_model/serializer/adapter/null.rb
96
157
  - lib/active_model/serializer/array_serializer.rb
158
+ - lib/active_model/serializer/association.rb
159
+ - lib/active_model/serializer/associations.rb
160
+ - lib/active_model/serializer/belongs_to_reflection.rb
161
+ - lib/active_model/serializer/collection_reflection.rb
97
162
  - lib/active_model/serializer/configuration.rb
98
163
  - lib/active_model/serializer/fieldset.rb
164
+ - lib/active_model/serializer/has_many_reflection.rb
165
+ - lib/active_model/serializer/has_one_reflection.rb
166
+ - lib/active_model/serializer/lint.rb
99
167
  - lib/active_model/serializer/railtie.rb
168
+ - lib/active_model/serializer/reflection.rb
169
+ - lib/active_model/serializer/singular_reflection.rb
170
+ - lib/active_model/serializer/utils.rb
100
171
  - lib/active_model/serializer/version.rb
101
172
  - lib/active_model_serializers.rb
102
173
  - lib/generators/serializer/USAGE
103
174
  - lib/generators/serializer/resource_override.rb
104
175
  - lib/generators/serializer/serializer_generator.rb
105
- - lib/generators/serializer/templates/serializer.rb
176
+ - lib/generators/serializer/templates/serializer.rb.erb
177
+ - lib/tasks/rubocop.rake
106
178
  - test/action_controller/adapter_selector_test.rb
107
179
  - test/action_controller/explicit_serializer_test.rb
108
- - test/action_controller/json_api_linked_test.rb
109
- - test/action_controller/rescue_from_test.rb
180
+ - test/action_controller/json_api/linked_test.rb
181
+ - test/action_controller/json_api/pagination_test.rb
110
182
  - test/action_controller/serialization_scope_name_test.rb
111
183
  - test/action_controller/serialization_test.rb
184
+ - test/active_record_test.rb
112
185
  - test/adapter/fragment_cache_test.rb
113
186
  - test/adapter/json/belongs_to_test.rb
114
187
  - test/adapter/json/collection_test.rb
@@ -119,15 +192,25 @@ files:
119
192
  - test/adapter/json_api/has_many_explicit_serializer_test.rb
120
193
  - test/adapter/json_api/has_many_test.rb
121
194
  - test/adapter/json_api/has_one_test.rb
195
+ - test/adapter/json_api/json_api_test.rb
122
196
  - test/adapter/json_api/linked_test.rb
197
+ - test/adapter/json_api/pagination_links_test.rb
198
+ - test/adapter/json_api/resource_type_config_test.rb
123
199
  - test/adapter/json_test.rb
124
200
  - test/adapter/null_test.rb
125
201
  - test/adapter_test.rb
126
202
  - test/array_serializer_test.rb
203
+ - test/capture_warnings.rb
204
+ - test/fixtures/active_record.rb
127
205
  - test/fixtures/poro.rb
128
206
  - test/generators/scaffold_controller_generator_test.rb
129
207
  - test/generators/serializer_generator_test.rb
208
+ - test/lint_test.rb
209
+ - test/logger_test.rb
210
+ - test/poro_test.rb
211
+ - test/serializable_resource_test.rb
130
212
  - test/serializers/adapter_for_test.rb
213
+ - test/serializers/association_macros_test.rb
131
214
  - test/serializers/associations_test.rb
132
215
  - test/serializers/attribute_test.rb
133
216
  - test/serializers/attributes_test.rb
@@ -136,9 +219,15 @@ files:
136
219
  - test/serializers/fieldset_test.rb
137
220
  - test/serializers/meta_test.rb
138
221
  - test/serializers/options_test.rb
222
+ - test/serializers/root_test.rb
139
223
  - test/serializers/serializer_for_test.rb
140
- - test/serializers/urls_test.rb
224
+ - test/support/rails_app.rb
225
+ - test/support/serialization_testing.rb
226
+ - test/support/simplecov.rb
227
+ - test/support/stream_capture.rb
228
+ - test/support/test_case.rb
141
229
  - test/test_helper.rb
230
+ - test/utils/include_args_to_hash_test.rb
142
231
  homepage: https://github.com/rails-api/active_model_serializers
143
232
  licenses:
144
233
  - MIT
@@ -151,7 +240,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
240
  requirements:
152
241
  - - ">="
153
242
  - !ruby/object:Gem::Version
154
- version: '0'
243
+ version: 1.9.3
155
244
  required_rubygems_version: !ruby/object:Gem::Requirement
156
245
  requirements:
157
246
  - - ">"
@@ -166,10 +255,11 @@ summary: Conventions-based JSON generation for Rails.
166
255
  test_files:
167
256
  - test/action_controller/adapter_selector_test.rb
168
257
  - test/action_controller/explicit_serializer_test.rb
169
- - test/action_controller/json_api_linked_test.rb
170
- - test/action_controller/rescue_from_test.rb
258
+ - test/action_controller/json_api/linked_test.rb
259
+ - test/action_controller/json_api/pagination_test.rb
171
260
  - test/action_controller/serialization_scope_name_test.rb
172
261
  - test/action_controller/serialization_test.rb
262
+ - test/active_record_test.rb
173
263
  - test/adapter/fragment_cache_test.rb
174
264
  - test/adapter/json/belongs_to_test.rb
175
265
  - test/adapter/json/collection_test.rb
@@ -180,15 +270,25 @@ test_files:
180
270
  - test/adapter/json_api/has_many_explicit_serializer_test.rb
181
271
  - test/adapter/json_api/has_many_test.rb
182
272
  - test/adapter/json_api/has_one_test.rb
273
+ - test/adapter/json_api/json_api_test.rb
183
274
  - test/adapter/json_api/linked_test.rb
275
+ - test/adapter/json_api/pagination_links_test.rb
276
+ - test/adapter/json_api/resource_type_config_test.rb
184
277
  - test/adapter/json_test.rb
185
278
  - test/adapter/null_test.rb
186
279
  - test/adapter_test.rb
187
280
  - test/array_serializer_test.rb
281
+ - test/capture_warnings.rb
282
+ - test/fixtures/active_record.rb
188
283
  - test/fixtures/poro.rb
189
284
  - test/generators/scaffold_controller_generator_test.rb
190
285
  - test/generators/serializer_generator_test.rb
286
+ - test/lint_test.rb
287
+ - test/logger_test.rb
288
+ - test/poro_test.rb
289
+ - test/serializable_resource_test.rb
191
290
  - test/serializers/adapter_for_test.rb
291
+ - test/serializers/association_macros_test.rb
192
292
  - test/serializers/associations_test.rb
193
293
  - test/serializers/attribute_test.rb
194
294
  - test/serializers/attributes_test.rb
@@ -197,6 +297,12 @@ test_files:
197
297
  - test/serializers/fieldset_test.rb
198
298
  - test/serializers/meta_test.rb
199
299
  - test/serializers/options_test.rb
300
+ - test/serializers/root_test.rb
200
301
  - test/serializers/serializer_for_test.rb
201
- - test/serializers/urls_test.rb
302
+ - test/support/rails_app.rb
303
+ - test/support/serialization_testing.rb
304
+ - test/support/simplecov.rb
305
+ - test/support/stream_capture.rb
306
+ - test/support/test_case.rb
202
307
  - test/test_helper.rb
308
+ - test/utils/include_args_to_hash_test.rb
@@ -1,179 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActionController
4
- module Serialization
5
- class JsonApiLinkedTest < ActionController::TestCase
6
- class JsonApiLinkedTestController < ActionController::Base
7
- def setup_post
8
- ActionController::Base.cache_store.clear
9
- @role1 = Role.new(id: 1, name: 'admin')
10
- @role2 = Role.new(id: 2, name: 'colab')
11
- @author = Author.new(id: 1, name: 'Steve K.')
12
- @author.posts = []
13
- @author.bio = nil
14
- @author.roles = [@role1, @role2]
15
- @role1.author = @author
16
- @role2.author = @author
17
- @author2 = Author.new(id: 2, name: 'Anonymous')
18
- @author2.posts = []
19
- @author2.bio = nil
20
- @author2.roles = []
21
- @post = Post.new(id: 1, title: 'New Post', body: 'Body')
22
- @first_comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
23
- @second_comment = Comment.new(id: 2, body: 'ZOMG ANOTHER COMMENT')
24
- @post.comments = [@first_comment, @second_comment]
25
- @post.author = @author
26
- @first_comment.post = @post
27
- @first_comment.author = @author2
28
- @second_comment.post = @post
29
- @second_comment.author = nil
30
- @post2 = Post.new(id: 2, title: "Another Post", body: "Body")
31
- @post2.author = @author
32
- @post2.comments = []
33
- @blog = Blog.new(id: 1, name: "My Blog!!")
34
- @post.blog = @blog
35
- @post2.blog = @blog
36
- end
37
-
38
- def render_resource_without_include
39
- setup_post
40
- render json: @post, adapter: :json_api
41
- end
42
-
43
- def render_resource_with_include
44
- setup_post
45
- render json: @post, include: 'author', adapter: :json_api
46
- end
47
-
48
- def render_resource_with_nested_include
49
- setup_post
50
- render json: @post, include: 'comments.author', adapter: :json_api
51
- end
52
-
53
- def render_resource_with_nested_has_many_include
54
- setup_post
55
- render json: @post, include: ['author', 'author.roles'], adapter: :json_api
56
- end
57
-
58
- def render_resource_with_missing_nested_has_many_include
59
- setup_post
60
- @post.author = @author2 # author2 has no roles.
61
- render json: @post, include: 'author,author.roles', adapter: :json_api
62
- end
63
-
64
- def render_collection_with_missing_nested_has_many_include
65
- setup_post
66
- @post.author = @author2
67
- render json: [@post, @post2], include: 'author,author.roles', adapter: :json_api
68
- end
69
-
70
- def render_collection_without_include
71
- setup_post
72
- render json: [@post], adapter: :json_api
73
- end
74
-
75
- def render_collection_with_include
76
- setup_post
77
- render json: [@post], include: ['author', 'comments'], adapter: :json_api
78
- end
79
- end
80
-
81
- tests JsonApiLinkedTestController
82
-
83
- def test_render_resource_without_include
84
- get :render_resource_without_include
85
- response = JSON.parse(@response.body)
86
- refute response.key? 'included'
87
- end
88
-
89
- def test_render_resource_with_include
90
- get :render_resource_with_include
91
- response = JSON.parse(@response.body)
92
- assert response.key? 'included'
93
- assert_equal 1, response['included'].size
94
- assert_equal 'Steve K.', response['included'].first['attributes']['name']
95
- end
96
-
97
- def test_render_resource_with_nested_has_many_include
98
- get :render_resource_with_nested_has_many_include
99
- response = JSON.parse(@response.body)
100
- expected_linked = [
101
- {
102
- "id" => "1",
103
- "type" => "authors",
104
- "attributes" => {
105
- "name" => "Steve K."
106
- },
107
- "relationships" => {
108
- "posts" => { "data" => [] },
109
- "roles" => { "data" => [{ "type" =>"roles", "id" => "1" }, { "type" =>"roles", "id" => "2" }] },
110
- "bio" => { "data" => nil }
111
- }
112
- }, {
113
- "id" => "1",
114
- "type" => "roles",
115
- "attributes" => {
116
- "name" => "admin",
117
- "description" => nil,
118
- "slug" => "admin-1"
119
- },
120
- "relationships" => {
121
- "author" => { "data" => { "type" =>"authors", "id" => "1" } }
122
- }
123
- }, {
124
- "id" => "2",
125
- "type" => "roles",
126
- "attributes" => {
127
- "name" => "colab",
128
- "description" => nil,
129
- "slug" => "colab-2"
130
- },
131
- "relationships" => {
132
- "author" => { "data" => { "type" =>"authors", "id" => "1" } }
133
- }
134
- }
135
- ]
136
- assert_equal expected_linked, response['included']
137
- end
138
-
139
- def test_render_resource_with_nested_include
140
- get :render_resource_with_nested_include
141
- response = JSON.parse(@response.body)
142
- assert response.key? 'included'
143
- assert_equal 1, response['included'].size
144
- assert_equal 'Anonymous', response['included'].first['attributes']['name']
145
- end
146
-
147
- def test_render_collection_without_include
148
- get :render_collection_without_include
149
- response = JSON.parse(@response.body)
150
- refute response.key? 'included'
151
- end
152
-
153
- def test_render_collection_with_include
154
- get :render_collection_with_include
155
- response = JSON.parse(@response.body)
156
- assert response.key? 'included'
157
- end
158
-
159
- def test_render_resource_with_nested_attributes_even_when_missing_associations
160
- get :render_resource_with_missing_nested_has_many_include
161
- response = JSON.parse(@response.body)
162
- assert response.key? 'included'
163
- refute has_type?(response['included'], 'roles')
164
- end
165
-
166
- def test_render_collection_with_missing_nested_has_many_include
167
- get :render_collection_with_missing_nested_has_many_include
168
- response = JSON.parse(@response.body)
169
- assert response.key? 'included'
170
- assert has_type?(response['included'], 'roles')
171
- end
172
-
173
- def has_type?(collection, value)
174
- collection.detect { |i| i['type'] == value}
175
- end
176
-
177
- end
178
- end
179
- end