active_model_serializers 0.10.0 → 0.10.13

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 (215) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +239 -2
  3. data/README.md +171 -34
  4. data/lib/action_controller/serialization.rb +23 -3
  5. data/lib/active_model/serializable_resource.rb +2 -0
  6. data/lib/active_model/serializer/adapter/attributes.rb +2 -0
  7. data/lib/active_model/serializer/adapter/base.rb +4 -0
  8. data/lib/active_model/serializer/adapter/json.rb +2 -0
  9. data/lib/active_model/serializer/adapter/json_api.rb +2 -0
  10. data/lib/active_model/serializer/adapter/null.rb +2 -0
  11. data/lib/active_model/serializer/adapter.rb +2 -0
  12. data/lib/active_model/serializer/array_serializer.rb +10 -5
  13. data/lib/active_model/serializer/association.rb +64 -10
  14. data/lib/active_model/serializer/attribute.rb +2 -0
  15. data/lib/active_model/serializer/belongs_to_reflection.rb +6 -3
  16. data/lib/active_model/serializer/collection_serializer.rb +48 -13
  17. data/lib/active_model/serializer/{caching.rb → concerns/caching.rb} +89 -117
  18. data/lib/active_model/serializer/error_serializer.rb +13 -7
  19. data/lib/active_model/serializer/errors_serializer.rb +27 -20
  20. data/lib/active_model/serializer/field.rb +2 -0
  21. data/lib/active_model/serializer/fieldset.rb +3 -1
  22. data/lib/active_model/serializer/has_many_reflection.rb +5 -3
  23. data/lib/active_model/serializer/has_one_reflection.rb +3 -4
  24. data/lib/active_model/serializer/lazy_association.rb +99 -0
  25. data/lib/active_model/serializer/link.rb +23 -0
  26. data/lib/active_model/serializer/lint.rb +136 -130
  27. data/lib/active_model/serializer/null.rb +2 -0
  28. data/lib/active_model/serializer/reflection.rb +130 -65
  29. data/lib/active_model/serializer/version.rb +3 -1
  30. data/lib/active_model/serializer.rb +321 -86
  31. data/lib/active_model_serializers/adapter/attributes.rb +17 -57
  32. data/lib/active_model_serializers/adapter/base.rb +41 -39
  33. data/lib/active_model_serializers/adapter/json.rb +2 -0
  34. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +4 -2
  35. data/lib/active_model_serializers/adapter/json_api/error.rb +2 -0
  36. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +2 -0
  37. data/lib/active_model_serializers/adapter/json_api/link.rb +3 -1
  38. data/lib/active_model_serializers/adapter/json_api/meta.rb +2 -0
  39. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +52 -20
  40. data/lib/active_model_serializers/adapter/json_api/relationship.rb +77 -23
  41. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +41 -10
  42. data/lib/active_model_serializers/adapter/json_api.rb +84 -65
  43. data/lib/active_model_serializers/adapter/null.rb +2 -0
  44. data/lib/active_model_serializers/adapter.rb +9 -1
  45. data/lib/active_model_serializers/callbacks.rb +2 -0
  46. data/lib/active_model_serializers/deprecate.rb +3 -2
  47. data/lib/active_model_serializers/deserialization.rb +4 -0
  48. data/lib/active_model_serializers/json_pointer.rb +2 -0
  49. data/lib/active_model_serializers/logging.rb +2 -0
  50. data/lib/active_model_serializers/lookup_chain.rb +82 -0
  51. data/lib/active_model_serializers/model/caching.rb +26 -0
  52. data/lib/active_model_serializers/model.rb +111 -28
  53. data/lib/active_model_serializers/railtie.rb +7 -1
  54. data/lib/active_model_serializers/register_jsonapi_renderer.rb +46 -31
  55. data/lib/active_model_serializers/serializable_resource.rb +10 -7
  56. data/lib/active_model_serializers/serialization_context.rb +12 -3
  57. data/lib/active_model_serializers/test/schema.rb +4 -2
  58. data/lib/active_model_serializers/test/serializer.rb +2 -0
  59. data/lib/active_model_serializers/test.rb +2 -0
  60. data/lib/active_model_serializers.rb +35 -10
  61. data/lib/generators/rails/resource_override.rb +3 -1
  62. data/lib/generators/rails/serializer_generator.rb +6 -4
  63. data/lib/grape/active_model_serializers.rb +9 -5
  64. data/lib/grape/formatters/active_model_serializers.rb +21 -2
  65. data/lib/grape/helpers/active_model_serializers.rb +3 -0
  66. data/lib/tasks/rubocop.rake +55 -0
  67. metadata +104 -296
  68. data/.github/ISSUE_TEMPLATE.md +0 -29
  69. data/.github/PULL_REQUEST_TEMPLATE.md +0 -15
  70. data/.gitignore +0 -35
  71. data/.rubocop.yml +0 -104
  72. data/.rubocop_todo.yml +0 -167
  73. data/.simplecov +0 -110
  74. data/.travis.yml +0 -43
  75. data/CONTRIBUTING.md +0 -105
  76. data/Gemfile +0 -53
  77. data/Rakefile +0 -103
  78. data/active_model_serializers.gemspec +0 -66
  79. data/appveyor.yml +0 -24
  80. data/bin/bench +0 -171
  81. data/bin/bench_regression +0 -316
  82. data/bin/serve_benchmark +0 -39
  83. data/docs/ARCHITECTURE.md +0 -126
  84. data/docs/README.md +0 -40
  85. data/docs/STYLE.md +0 -58
  86. data/docs/general/adapters.md +0 -245
  87. data/docs/general/caching.md +0 -52
  88. data/docs/general/configuration_options.md +0 -100
  89. data/docs/general/deserialization.md +0 -100
  90. data/docs/general/getting_started.md +0 -133
  91. data/docs/general/instrumentation.md +0 -40
  92. data/docs/general/key_transforms.md +0 -40
  93. data/docs/general/logging.md +0 -14
  94. data/docs/general/rendering.md +0 -255
  95. data/docs/general/serializers.md +0 -372
  96. data/docs/how-open-source-maintained.jpg +0 -0
  97. data/docs/howto/add_pagination_links.md +0 -139
  98. data/docs/howto/add_root_key.md +0 -51
  99. data/docs/howto/outside_controller_use.md +0 -58
  100. data/docs/howto/passing_arbitrary_options.md +0 -27
  101. data/docs/howto/serialize_poro.md +0 -32
  102. data/docs/howto/test.md +0 -152
  103. data/docs/integrations/ember-and-json-api.md +0 -112
  104. data/docs/integrations/grape.md +0 -19
  105. data/docs/jsonapi/errors.md +0 -56
  106. data/docs/jsonapi/schema/schema.json +0 -366
  107. data/docs/jsonapi/schema.md +0 -151
  108. data/docs/rfcs/0000-namespace.md +0 -106
  109. data/docs/rfcs/template.md +0 -15
  110. data/lib/active_model/serializer/associations.rb +0 -100
  111. data/lib/active_model/serializer/attributes.rb +0 -82
  112. data/lib/active_model/serializer/collection_reflection.rb +0 -7
  113. data/lib/active_model/serializer/configuration.rb +0 -35
  114. data/lib/active_model/serializer/include_tree.rb +0 -111
  115. data/lib/active_model/serializer/links.rb +0 -35
  116. data/lib/active_model/serializer/meta.rb +0 -29
  117. data/lib/active_model/serializer/singular_reflection.rb +0 -7
  118. data/lib/active_model/serializer/type.rb +0 -25
  119. data/lib/active_model_serializers/key_transform.rb +0 -70
  120. data/test/action_controller/adapter_selector_test.rb +0 -53
  121. data/test/action_controller/explicit_serializer_test.rb +0 -134
  122. data/test/action_controller/json/include_test.rb +0 -167
  123. data/test/action_controller/json_api/deserialization_test.rb +0 -112
  124. data/test/action_controller/json_api/errors_test.rb +0 -41
  125. data/test/action_controller/json_api/linked_test.rb +0 -197
  126. data/test/action_controller/json_api/pagination_test.rb +0 -116
  127. data/test/action_controller/json_api/transform_test.rb +0 -181
  128. data/test/action_controller/serialization_scope_name_test.rb +0 -229
  129. data/test/action_controller/serialization_test.rb +0 -469
  130. data/test/active_model_serializers/adapter_for_test.rb +0 -208
  131. data/test/active_model_serializers/json_pointer_test.rb +0 -20
  132. data/test/active_model_serializers/key_transform_test.rb +0 -263
  133. data/test/active_model_serializers/logging_test.rb +0 -77
  134. data/test/active_model_serializers/model_test.rb +0 -9
  135. data/test/active_model_serializers/railtie_test_isolated.rb +0 -63
  136. data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -58
  137. data/test/active_model_serializers/test/schema_test.rb +0 -130
  138. data/test/active_model_serializers/test/serializer_test.rb +0 -62
  139. data/test/active_record_test.rb +0 -9
  140. data/test/adapter/deprecation_test.rb +0 -100
  141. data/test/adapter/json/belongs_to_test.rb +0 -45
  142. data/test/adapter/json/collection_test.rb +0 -90
  143. data/test/adapter/json/has_many_test.rb +0 -45
  144. data/test/adapter/json/transform_test.rb +0 -93
  145. data/test/adapter/json_api/belongs_to_test.rb +0 -155
  146. data/test/adapter/json_api/collection_test.rb +0 -95
  147. data/test/adapter/json_api/errors_test.rb +0 -78
  148. data/test/adapter/json_api/fields_test.rb +0 -87
  149. data/test/adapter/json_api/has_many_embed_ids_test.rb +0 -43
  150. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -96
  151. data/test/adapter/json_api/has_many_test.rb +0 -144
  152. data/test/adapter/json_api/has_one_test.rb +0 -80
  153. data/test/adapter/json_api/json_api_test.rb +0 -35
  154. data/test/adapter/json_api/linked_test.rb +0 -392
  155. data/test/adapter/json_api/links_test.rb +0 -93
  156. data/test/adapter/json_api/pagination_links_test.rb +0 -166
  157. data/test/adapter/json_api/parse_test.rb +0 -137
  158. data/test/adapter/json_api/relationship_test.rb +0 -161
  159. data/test/adapter/json_api/relationships_test.rb +0 -199
  160. data/test/adapter/json_api/resource_identifier_test.rb +0 -85
  161. data/test/adapter/json_api/resource_meta_test.rb +0 -100
  162. data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -82
  163. data/test/adapter/json_api/transform_test.rb +0 -502
  164. data/test/adapter/json_api/type_test.rb +0 -61
  165. data/test/adapter/json_test.rb +0 -45
  166. data/test/adapter/null_test.rb +0 -23
  167. data/test/adapter/polymorphic_test.rb +0 -171
  168. data/test/adapter_test.rb +0 -67
  169. data/test/array_serializer_test.rb +0 -22
  170. data/test/benchmark/app.rb +0 -65
  171. data/test/benchmark/benchmarking_support.rb +0 -67
  172. data/test/benchmark/bm_caching.rb +0 -119
  173. data/test/benchmark/bm_transform.rb +0 -34
  174. data/test/benchmark/config.ru +0 -3
  175. data/test/benchmark/controllers.rb +0 -84
  176. data/test/benchmark/fixtures.rb +0 -219
  177. data/test/cache_test.rb +0 -485
  178. data/test/collection_serializer_test.rb +0 -110
  179. data/test/fixtures/active_record.rb +0 -78
  180. data/test/fixtures/poro.rb +0 -282
  181. data/test/generators/scaffold_controller_generator_test.rb +0 -24
  182. data/test/generators/serializer_generator_test.rb +0 -57
  183. data/test/grape_test.rb +0 -82
  184. data/test/include_tree/from_include_args_test.rb +0 -26
  185. data/test/include_tree/from_string_test.rb +0 -94
  186. data/test/include_tree/include_args_to_hash_test.rb +0 -64
  187. data/test/lint_test.rb +0 -49
  188. data/test/logger_test.rb +0 -18
  189. data/test/poro_test.rb +0 -9
  190. data/test/serializable_resource_test.rb +0 -83
  191. data/test/serializers/association_macros_test.rb +0 -36
  192. data/test/serializers/associations_test.rb +0 -295
  193. data/test/serializers/attribute_test.rb +0 -151
  194. data/test/serializers/attributes_test.rb +0 -52
  195. data/test/serializers/caching_configuration_test_isolated.rb +0 -170
  196. data/test/serializers/configuration_test.rb +0 -32
  197. data/test/serializers/fieldset_test.rb +0 -14
  198. data/test/serializers/meta_test.rb +0 -196
  199. data/test/serializers/options_test.rb +0 -21
  200. data/test/serializers/read_attribute_for_serialization_test.rb +0 -79
  201. data/test/serializers/root_test.rb +0 -21
  202. data/test/serializers/serialization_test.rb +0 -55
  203. data/test/serializers/serializer_for_test.rb +0 -134
  204. data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  205. data/test/support/isolated_unit.rb +0 -79
  206. data/test/support/rails5_shims.rb +0 -47
  207. data/test/support/rails_app.rb +0 -45
  208. data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  209. data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
  210. data/test/support/schemas/custom/show.json +0 -7
  211. data/test/support/schemas/hyper_schema.json +0 -93
  212. data/test/support/schemas/render_using_json_api.json +0 -43
  213. data/test/support/schemas/simple_json_pointers.json +0 -10
  214. data/test/support/serialization_testing.rb +0 -53
  215. data/test/test_helper.rb +0 -57
@@ -1,79 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class ReadAttributeForSerializationTest < ActiveSupport::TestCase
6
- # https://github.com/rails-api/active_model_serializers/issues/1653
7
- class Parent < ActiveModelSerializers::Model
8
- attr_accessor :id
9
- end
10
- class Child < Parent
11
- attr_accessor :name
12
- end
13
- class ParentSerializer < ActiveModel::Serializer
14
- attributes :$id
15
-
16
- define_method(:$id) do
17
- object.id
18
- end
19
- end
20
- class ChildSerializer < ParentSerializer
21
- attributes :name
22
- end
23
-
24
- def test_child_serializer_calls_dynamic_method_in_parent_serializer
25
- parent = ParentSerializer.new(Parent.new(id: 5))
26
- child = ChildSerializer.new(Child.new(id: 6, name: 'Child'))
27
- assert_equal 5, parent.read_attribute_for_serialization(:$id)
28
- assert_equal 6, child.read_attribute_for_serialization(:$id)
29
- end
30
-
31
- # https://github.com/rails-api/active_model_serializers/issues/1658
32
- class ErrorResponse < ActiveModelSerializers::Model
33
- attr_accessor :error
34
- end
35
- class ApplicationSerializer < ActiveModel::Serializer
36
- attributes :status
37
-
38
- def status
39
- object.try(:errors).blank? && object.try(:error).blank?
40
- end
41
- end
42
- class ErrorResponseSerializer < ApplicationSerializer
43
- attributes :error
44
- end
45
- class ErrorResponseWithSuperSerializer < ApplicationSerializer
46
- attributes :error
47
-
48
- def success
49
- super
50
- end
51
- end
52
-
53
- def test_child_serializer_with_error_attribute
54
- error = ErrorResponse.new(error: 'i have an error')
55
- serializer = ErrorResponseSerializer.new(error)
56
- serializer_with_super = ErrorResponseWithSuperSerializer.new(error)
57
- assert_equal false, serializer.read_attribute_for_serialization(:status)
58
- assert_equal false, serializer_with_super.read_attribute_for_serialization(:status)
59
- end
60
-
61
- def test_child_serializer_with_errors
62
- error = ErrorResponse.new
63
- error.errors.add(:invalid, 'i am not valid')
64
- serializer = ErrorResponseSerializer.new(error)
65
- serializer_with_super = ErrorResponseWithSuperSerializer.new(error)
66
- assert_equal false, serializer.read_attribute_for_serialization(:status)
67
- assert_equal false, serializer_with_super.read_attribute_for_serialization(:status)
68
- end
69
-
70
- def test_child_serializer_no_error_attribute_or_errors
71
- error = ErrorResponse.new
72
- serializer = ErrorResponseSerializer.new(error)
73
- serializer_with_super = ErrorResponseWithSuperSerializer.new(error)
74
- assert_equal true, serializer.read_attribute_for_serialization(:status)
75
- assert_equal true, serializer_with_super.read_attribute_for_serialization(:status)
76
- end
77
- end
78
- end
79
- end
@@ -1,21 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class RootTest < ActiveSupport::TestCase
6
- def setup
7
- @virtual_value = VirtualValue.new(id: 1)
8
- end
9
-
10
- def test_overwrite_root
11
- serializer = VirtualValueSerializer.new(@virtual_value, { root: 'smth' })
12
- assert_equal('smth', serializer.json_key)
13
- end
14
-
15
- def test_underscore_in_root
16
- serializer = VirtualValueSerializer.new(@virtual_value)
17
- assert_equal('virtual_value', serializer.json_key)
18
- end
19
- end
20
- end
21
- end
@@ -1,55 +0,0 @@
1
- module ActiveModel
2
- class Serializer
3
- class SerializationTest < ActiveSupport::TestCase
4
- class Blog < ActiveModelSerializers::Model
5
- attr_accessor :id, :name, :authors
6
- end
7
- class Author < ActiveModelSerializers::Model
8
- attr_accessor :id, :name
9
- end
10
- class BlogSerializer < ActiveModel::Serializer
11
- attributes :id
12
- attribute :name, key: :title
13
-
14
- has_many :authors
15
- end
16
- class AuthorSerializer < ActiveModel::Serializer
17
- attributes :id, :name
18
- end
19
-
20
- setup do
21
- @authors = [Author.new(id: 1, name: 'Blog Author')]
22
- @blog = Blog.new(id: 2, name: 'The Blog', authors: @authors)
23
- @serializer_instance = BlogSerializer.new(@blog)
24
- @serializable = ActiveModelSerializers::SerializableResource.new(@blog, serializer: BlogSerializer, adapter: :attributes)
25
- @expected_hash = { id: 2, title: 'The Blog', authors: [{ id: 1, name: 'Blog Author' }] }
26
- @expected_json = '{"id":2,"title":"The Blog","authors":[{"id":1,"name":"Blog Author"}]}'
27
- end
28
-
29
- test '#serializable_hash is the same as generated by the attributes adapter' do
30
- assert_equal @serializable.serializable_hash, @serializer_instance.serializable_hash
31
- assert_equal @expected_hash, @serializer_instance.serializable_hash
32
- end
33
-
34
- test '#as_json is the same as generated by the attributes adapter' do
35
- assert_equal @serializable.as_json, @serializer_instance.as_json
36
- assert_equal @expected_hash, @serializer_instance.as_json
37
- end
38
-
39
- test '#to_json is the same as generated by the attributes adapter' do
40
- assert_equal @serializable.to_json, @serializer_instance.to_json
41
- assert_equal @expected_json, @serializer_instance.to_json
42
- end
43
-
44
- test '#to_h is an alias for #serializable_hash' do
45
- assert_equal @serializable.serializable_hash, @serializer_instance.to_h
46
- assert_equal @expected_hash, @serializer_instance.to_h
47
- end
48
-
49
- test '#to_hash is an alias for #serializable_hash' do
50
- assert_equal @serializable.serializable_hash, @serializer_instance.to_hash
51
- assert_equal @expected_hash, @serializer_instance.to_hash
52
- end
53
- end
54
- end
55
- end
@@ -1,134 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class SerializerForTest < ActiveSupport::TestCase
6
- class CollectionSerializerTest < ActiveSupport::TestCase
7
- def setup
8
- @array = [1, 2, 3]
9
- @previous_collection_serializer = ActiveModelSerializers.config.collection_serializer
10
- end
11
-
12
- def teardown
13
- ActiveModelSerializers.config.collection_serializer = @previous_collection_serializer
14
- end
15
-
16
- def test_serializer_for_array
17
- serializer = ActiveModel::Serializer.serializer_for(@array)
18
- assert_equal ActiveModelSerializers.config.collection_serializer, serializer
19
- end
20
-
21
- def test_overwritten_serializer_for_array
22
- new_collection_serializer = Class.new
23
- ActiveModelSerializers.config.collection_serializer = new_collection_serializer
24
- serializer = ActiveModel::Serializer.serializer_for(@array)
25
- assert_equal new_collection_serializer, serializer
26
- end
27
- end
28
-
29
- class SerializerTest < ActiveSupport::TestCase
30
- module ResourceNamespace
31
- Post = Class.new(::Model)
32
- Comment = Class.new(::Model)
33
-
34
- class PostSerializer < ActiveModel::Serializer
35
- class CommentSerializer < ActiveModel::Serializer
36
- end
37
- end
38
- end
39
-
40
- class MyProfile < Profile
41
- end
42
-
43
- class CustomProfile
44
- def serializer_class; ProfileSerializer; end
45
- end
46
-
47
- Tweet = Class.new(::Model)
48
- TweetSerializer = Class.new
49
-
50
- def setup
51
- @profile = Profile.new
52
- @my_profile = MyProfile.new
53
- @custom_profile = CustomProfile.new
54
- @model = ::Model.new
55
- @tweet = Tweet.new
56
- end
57
-
58
- def test_serializer_for_non_ams_serializer
59
- serializer = ActiveModel::Serializer.serializer_for(@tweet)
60
- assert_equal nil, serializer
61
- end
62
-
63
- def test_serializer_for_existing_serializer
64
- serializer = ActiveModel::Serializer.serializer_for(@profile)
65
- assert_equal ProfileSerializer, serializer
66
- end
67
-
68
- def test_serializer_for_existing_serializer_with_lookup_disabled
69
- serializer = with_serializer_lookup_disabled do
70
- ActiveModel::Serializer.serializer_for(@profile)
71
- end
72
- assert_equal nil, serializer
73
- end
74
-
75
- def test_serializer_for_not_existing_serializer
76
- serializer = ActiveModel::Serializer.serializer_for(@model)
77
- assert_equal nil, serializer
78
- end
79
-
80
- def test_serializer_inherited_serializer
81
- serializer = ActiveModel::Serializer.serializer_for(@my_profile)
82
- assert_equal ProfileSerializer, serializer
83
- end
84
-
85
- def test_serializer_inherited_serializer_with_lookup_disabled
86
- serializer = with_serializer_lookup_disabled do
87
- ActiveModel::Serializer.serializer_for(@my_profile)
88
- end
89
- assert_equal nil, serializer
90
- end
91
-
92
- def test_serializer_custom_serializer
93
- serializer = ActiveModel::Serializer.serializer_for(@custom_profile)
94
- assert_equal ProfileSerializer, serializer
95
- end
96
-
97
- def test_serializer_custom_serializer_with_lookup_disabled
98
- serializer = with_serializer_lookup_disabled do
99
- ActiveModel::Serializer.serializer_for(@custom_profile)
100
- end
101
- assert_equal ProfileSerializer, serializer
102
- end
103
-
104
- def test_serializer_for_namespaced_resource
105
- post = ResourceNamespace::Post.new
106
- serializer = ActiveModel::Serializer.serializer_for(post)
107
- assert_equal ResourceNamespace::PostSerializer, serializer
108
- end
109
-
110
- def test_serializer_for_namespaced_resource_with_lookup_disabled
111
- post = ResourceNamespace::Post.new
112
- serializer = with_serializer_lookup_disabled do
113
- ActiveModel::Serializer.serializer_for(post)
114
- end
115
- assert_equal nil, serializer
116
- end
117
-
118
- def test_serializer_for_nested_resource
119
- comment = ResourceNamespace::Comment.new
120
- serializer = ResourceNamespace::PostSerializer.serializer_for(comment)
121
- assert_equal ResourceNamespace::PostSerializer::CommentSerializer, serializer
122
- end
123
-
124
- def test_serializer_for_nested_resource_with_lookup_disabled
125
- comment = ResourceNamespace::Comment.new
126
- serializer = with_serializer_lookup_disabled do
127
- ResourceNamespace::PostSerializer.serializer_for(comment)
128
- end
129
- assert_equal nil, serializer
130
- end
131
- end
132
- end
133
- end
134
- end
@@ -1,6 +0,0 @@
1
- {
2
- "properties": {
3
- "name" : { "type" : "string" },
4
- "description" : { "type" : "string" }
5
- }
6
- }
@@ -1,79 +0,0 @@
1
- # https://github.com/rails/rails/blob/v5.0.0.beta1/railties/test/isolation/abstract_unit.rb
2
-
3
- # Usage Example:
4
- #
5
- # require 'support/isolated_unit'
6
- #
7
- # class RailtieTest < ActiveSupport::TestCase
8
- # include ActiveSupport::Testing::Isolation
9
- #
10
- # class WithRailsDefinedOnLoad < RailtieTest
11
- # setup do
12
- # require 'rails'
13
- # require 'active_model_serializers'
14
- # make_basic_app
15
- # end
16
- #
17
- # # some tests
18
- # end
19
- #
20
- # class WithoutRailsDefinedOnLoad < RailtieTest
21
- # setup do
22
- # require 'active_model_serializers'
23
- # make_basic_app
24
- # end
25
- #
26
- # # some tests
27
- # end
28
- # end
29
- #
30
- # Note:
31
- # It is important to keep this file as light as possible
32
- # the goal for tests that require this is to test booting up
33
- # rails from an empty state, so anything added here could
34
- # hide potential failures
35
- #
36
- # It is also good to know what is the bare minimum to get
37
- # Rails booted up.
38
- require 'bundler/setup' unless defined?(Bundler)
39
- require 'active_support'
40
- require 'active_support/core_ext/string/access'
41
-
42
- # These files do not require any others and are needed
43
- # to run the tests
44
- require 'active_support/testing/isolation'
45
-
46
- module TestHelpers
47
- module Generation
48
- module_function
49
-
50
- # Make a very basic app, without creating the whole directory structure.
51
- # Is faster and simpler than generating a Rails app in a temp directory
52
- def make_basic_app
53
- require 'rails'
54
- require 'action_controller/railtie'
55
-
56
- @app = Class.new(Rails::Application) do
57
- config.eager_load = false
58
- config.session_store :cookie_store, key: '_myapp_session'
59
- config.active_support.deprecation = :log
60
- config.active_support.test_order = :parallel
61
- ActiveSupport::TestCase.respond_to?(:test_order=) && ActiveSupport::TestCase.test_order = :parallel
62
- config.root = File.dirname(__FILE__)
63
- config.log_level = :info
64
- # Set a fake logger to avoid creating the log directory automatically
65
- fake_logger = Logger.new(nil)
66
- config.logger = fake_logger
67
- Rails.application.routes.default_url_options = { host: 'example.com' }
68
- end
69
- @app.respond_to?(:secrets) && @app.secrets.secret_key_base = '3b7cd727ee24e8444053437c36cc66c4'
70
-
71
- yield @app if block_given?
72
- @app.initialize!
73
- end
74
- end
75
- end
76
-
77
- class ActiveSupport::TestCase
78
- include TestHelpers::Generation
79
- end
@@ -1,47 +0,0 @@
1
- module Rails5Shims
2
- module ControllerTests
3
- # https://github.com/rails/rails/blob/b217354/actionpack/lib/action_controller/test_case.rb
4
- REQUEST_KWARGS = [:params, :session, :flash, :method, :body, :xhr].freeze
5
-
6
- def get(path, *args)
7
- fold_kwargs!(args)
8
- super
9
- end
10
-
11
- def post(path, *args)
12
- fold_kwargs!(args)
13
- super
14
- end
15
-
16
- def patch(path, *args)
17
- fold_kwargs!(args)
18
- super
19
- end
20
-
21
- def put(path, *args)
22
- fold_kwargs!(args)
23
- super
24
- end
25
-
26
- # Fold kwargs from test request into args
27
- # Band-aid for DEPRECATION WARNING
28
- def fold_kwargs!(args)
29
- hash = args && args[0]
30
- return unless hash.respond_to?(:key)
31
- Rails5Shims::ControllerTests::REQUEST_KWARGS.each do |kwarg|
32
- next unless hash.key?(kwarg)
33
- hash.merge! hash.delete(kwarg)
34
- end
35
- end
36
-
37
- # Uncomment for debugging where the kwargs warnings come from
38
- # def non_kwarg_request_warning
39
- # super.tap do
40
- # STDOUT.puts caller[2..3]
41
- # end
42
- # end
43
- end
44
- end
45
- if Rails::VERSION::MAJOR < 5
46
- ActionController::TestCase.send :include, Rails5Shims::ControllerTests
47
- end
@@ -1,45 +0,0 @@
1
- require 'support/isolated_unit'
2
- module ActiveModelSerializers
3
- RailsApplication = TestHelpers::Generation.make_basic_app do |app|
4
- app.configure do
5
- config.secret_key_base = 'abc123'
6
- config.active_support.test_order = :random
7
- config.action_controller.perform_caching = true
8
- config.action_controller.cache_store = :memory_store
9
- end
10
-
11
- app.routes.default_url_options = { host: 'example.com' }
12
- end
13
- end
14
-
15
- Routes = ActionDispatch::Routing::RouteSet.new
16
- Routes.draw do
17
- get ':controller(/:action(/:id))'
18
- get ':controller(/:action)'
19
- end
20
- ActionController::Base.send :include, Routes.url_helpers
21
- ActionController::TestCase.class_eval do
22
- def setup
23
- @routes = Routes
24
- end
25
-
26
- # For Rails5
27
- # https://github.com/rails/rails/commit/ca83436d1b3b6cedd1eca2259f65661e69b01909#diff-b9bbf56e85d3fe1999f16317f2751e76L17
28
- def assigns(key = nil)
29
- warn "DEPRECATION: Calling 'assigns(#{key})' from #{caller[0]}"
30
- assigns = {}.with_indifferent_access
31
- @controller.view_assigns.each { |k, v| assigns.regular_writer(k, v) }
32
- key.nil? ? assigns : assigns[key]
33
- end
34
- end
35
-
36
- # ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
37
- # ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
38
- #
39
- # Load fixtures from the engine
40
- # if ActiveSupport::TestCase.respond_to?(:fixture_path=)
41
- # ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
42
- # ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
43
- # ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + "/files"
44
- # ActiveSupport::TestCase.fixtures :all
45
- # end
@@ -1,6 +0,0 @@
1
- {
2
- "properties": {
3
- "name" : { "type" : "string" },
4
- "description" : { "type" : "string" }
5
- }
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "properties": {
3
- "name" : { "type" : "integer" },
4
- "description" : { "type" : "boolean" }
5
- }
6
- }
@@ -1,7 +0,0 @@
1
- {
2
- "id": "file://custom/show.json#",
3
- "properties": {
4
- "name" : { "type" : "string" },
5
- "description" : { "type" : "string" }
6
- }
7
- }
@@ -1,93 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-04/hyper-schema",
3
- "title": "Profile",
4
- "description": "Profile schema",
5
- "stability": "prototype",
6
- "strictProperties": true,
7
- "type": [
8
- "object"
9
- ],
10
- "definitions": {
11
- "name": {
12
- "description": "unique name of profile",
13
- "readOnly": true,
14
- "type": [
15
- "string"
16
- ]
17
- },
18
- "description": {
19
- "description": "description of profile",
20
- "readOnly": true,
21
- "type": [
22
- "string"
23
- ]
24
- },
25
- "identity": {
26
- "anyOf": [
27
- {
28
- "$ref": "/schemata/profile#/definitions/name"
29
- }
30
- ]
31
- }
32
- },
33
- "links": [
34
- {
35
- "description": "Create a new profile.",
36
- "href": "/profiles",
37
- "method": "POST",
38
- "rel": "create",
39
- "schema": {
40
- "properties": {
41
- },
42
- "type": [
43
- "object"
44
- ]
45
- },
46
- "title": "Create"
47
- },
48
- {
49
- "description": "Delete an existing profile.",
50
- "href": "/profiles/{(%2Fschemata%2Fprofile%23%2Fdefinitions%2Fidentity)}",
51
- "method": "DELETE",
52
- "rel": "destroy",
53
- "title": "Delete"
54
- },
55
- {
56
- "description": "Info for existing profile.",
57
- "href": "/profiles/{(%2Fschemata%2Fprofile%23%2Fdefinitions%2Fidentity)}",
58
- "method": "GET",
59
- "rel": "self",
60
- "title": "Info"
61
- },
62
- {
63
- "description": "List existing profiles.",
64
- "href": "/profiles",
65
- "method": "GET",
66
- "rel": "instances",
67
- "title": "List"
68
- },
69
- {
70
- "description": "Update an existing profile.",
71
- "href": "/profiles/{(%2Fschemata%2Fprofile%23%2Fdefinitions%2Fidentity)}",
72
- "method": "PATCH",
73
- "rel": "update",
74
- "schema": {
75
- "properties": {
76
- },
77
- "type": [
78
- "object"
79
- ]
80
- },
81
- "title": "Update"
82
- }
83
- ],
84
- "properties": {
85
- "name": {
86
- "$ref": "/schemata/profile#/definitions/name"
87
- },
88
- "description": {
89
- "$ref": "/schemata/profile#/definitions/description"
90
- }
91
- },
92
- "id": "/schemata/profile"
93
- }
@@ -1,43 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-04/schema#",
3
- "id": "",
4
- "type": "object",
5
- "properties": {
6
- "data": {
7
- "id": "/data",
8
- "type": "object",
9
- "properties": {
10
- "id": {
11
- "id": "/data/id",
12
- "type": "string"
13
- },
14
- "type": {
15
- "id": "/data/type",
16
- "type": "string"
17
- },
18
- "attributes": {
19
- "id": "/data/attributes",
20
- "type": "object",
21
- "properties": {
22
- "name": {
23
- "id": "/data/attributes/name",
24
- "type": "string"
25
- },
26
- "description": {
27
- "id": "/data/attributes/description",
28
- "type": "string"
29
- }
30
- }
31
- }
32
- },
33
- "required": [
34
- "id",
35
- "type",
36
- "attributes"
37
- ]
38
- }
39
- },
40
- "required": [
41
- "data"
42
- ]
43
- }
@@ -1,10 +0,0 @@
1
- {
2
- "properties": {
3
- "name": {
4
- "$ref": "file://custom/show.json#/properties/name"
5
- },
6
- "description": {
7
- "$ref": "file://custom/show.json#/properties/description"
8
- }
9
- }
10
- }