active_model_serializers 0.10.0.rc2 → 0.10.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
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