active_model_serializers 0.10.7 → 0.10.12

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 (213) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +62 -1
  3. data/README.md +20 -20
  4. data/lib/action_controller/serialization.rb +11 -1
  5. data/lib/active_model/serializable_resource.rb +2 -0
  6. data/lib/active_model/serializer.rb +33 -18
  7. data/lib/active_model/serializer/adapter.rb +2 -0
  8. data/lib/active_model/serializer/adapter/attributes.rb +2 -0
  9. data/lib/active_model/serializer/adapter/base.rb +2 -0
  10. data/lib/active_model/serializer/adapter/json.rb +2 -0
  11. data/lib/active_model/serializer/adapter/json_api.rb +2 -0
  12. data/lib/active_model/serializer/adapter/null.rb +2 -0
  13. data/lib/active_model/serializer/array_serializer.rb +2 -0
  14. data/lib/active_model/serializer/association.rb +2 -0
  15. data/lib/active_model/serializer/attribute.rb +2 -0
  16. data/lib/active_model/serializer/belongs_to_reflection.rb +2 -0
  17. data/lib/active_model/serializer/collection_serializer.rb +6 -6
  18. data/lib/active_model/serializer/concerns/caching.rb +7 -2
  19. data/lib/active_model/serializer/error_serializer.rb +2 -0
  20. data/lib/active_model/serializer/errors_serializer.rb +2 -0
  21. data/lib/active_model/serializer/field.rb +2 -0
  22. data/lib/active_model/serializer/fieldset.rb +3 -1
  23. data/lib/active_model/serializer/has_many_reflection.rb +2 -0
  24. data/lib/active_model/serializer/has_one_reflection.rb +2 -0
  25. data/lib/active_model/serializer/lazy_association.rb +6 -2
  26. data/lib/active_model/serializer/link.rb +23 -0
  27. data/lib/active_model/serializer/lint.rb +2 -0
  28. data/lib/active_model/serializer/null.rb +2 -0
  29. data/lib/active_model/serializer/reflection.rb +9 -4
  30. data/lib/active_model/serializer/version.rb +3 -1
  31. data/lib/active_model_serializers.rb +20 -10
  32. data/lib/active_model_serializers/adapter.rb +3 -1
  33. data/lib/active_model_serializers/adapter/attributes.rb +23 -0
  34. data/lib/active_model_serializers/adapter/base.rb +2 -0
  35. data/lib/active_model_serializers/adapter/json.rb +2 -0
  36. data/lib/active_model_serializers/adapter/json_api.rb +14 -9
  37. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +2 -0
  38. data/lib/active_model_serializers/adapter/json_api/error.rb +2 -0
  39. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +2 -0
  40. data/lib/active_model_serializers/adapter/json_api/link.rb +2 -0
  41. data/lib/active_model_serializers/adapter/json_api/meta.rb +2 -0
  42. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +2 -0
  43. data/lib/active_model_serializers/adapter/json_api/relationship.rb +2 -0
  44. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +3 -1
  45. data/lib/active_model_serializers/adapter/null.rb +2 -0
  46. data/lib/active_model_serializers/callbacks.rb +2 -0
  47. data/lib/active_model_serializers/deprecate.rb +2 -0
  48. data/lib/active_model_serializers/deserialization.rb +2 -0
  49. data/lib/active_model_serializers/json_pointer.rb +2 -0
  50. data/lib/active_model_serializers/logging.rb +2 -0
  51. data/lib/active_model_serializers/lookup_chain.rb +2 -0
  52. data/lib/active_model_serializers/model.rb +2 -0
  53. data/lib/active_model_serializers/model/caching.rb +25 -0
  54. data/lib/active_model_serializers/railtie.rb +4 -0
  55. data/lib/active_model_serializers/register_jsonapi_renderer.rb +2 -0
  56. data/lib/active_model_serializers/serializable_resource.rb +4 -2
  57. data/lib/active_model_serializers/serialization_context.rb +2 -0
  58. data/lib/active_model_serializers/test.rb +2 -0
  59. data/lib/active_model_serializers/test/schema.rb +2 -0
  60. data/lib/active_model_serializers/test/serializer.rb +2 -0
  61. data/lib/generators/rails/resource_override.rb +2 -0
  62. data/lib/generators/rails/serializer_generator.rb +2 -0
  63. data/lib/grape/active_model_serializers.rb +2 -0
  64. data/lib/grape/formatters/active_model_serializers.rb +2 -0
  65. data/lib/grape/helpers/active_model_serializers.rb +2 -0
  66. data/lib/tasks/rubocop.rake +2 -0
  67. metadata +70 -295
  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 -105
  72. data/.simplecov +0 -110
  73. data/.travis.yml +0 -52
  74. data/CODE_OF_CONDUCT.md +0 -74
  75. data/CONTRIBUTING.md +0 -105
  76. data/Gemfile +0 -72
  77. data/Rakefile +0 -74
  78. data/active_model_serializers.gemspec +0 -63
  79. data/appveyor.yml +0 -28
  80. data/bin/bench +0 -171
  81. data/bin/bench_regression +0 -316
  82. data/bin/rubocop +0 -38
  83. data/bin/serve_benchmark +0 -39
  84. data/docs/README.md +0 -41
  85. data/docs/STYLE.md +0 -58
  86. data/docs/general/adapters.md +0 -269
  87. data/docs/general/caching.md +0 -58
  88. data/docs/general/configuration_options.md +0 -185
  89. data/docs/general/deserialization.md +0 -100
  90. data/docs/general/fields.md +0 -31
  91. data/docs/general/getting_started.md +0 -133
  92. data/docs/general/instrumentation.md +0 -40
  93. data/docs/general/key_transforms.md +0 -40
  94. data/docs/general/logging.md +0 -21
  95. data/docs/general/rendering.md +0 -293
  96. data/docs/general/serializers.md +0 -483
  97. data/docs/how-open-source-maintained.jpg +0 -0
  98. data/docs/howto/add_pagination_links.md +0 -138
  99. data/docs/howto/add_relationship_links.md +0 -140
  100. data/docs/howto/add_root_key.md +0 -62
  101. data/docs/howto/grape_integration.md +0 -42
  102. data/docs/howto/outside_controller_use.md +0 -66
  103. data/docs/howto/passing_arbitrary_options.md +0 -27
  104. data/docs/howto/serialize_poro.md +0 -73
  105. data/docs/howto/test.md +0 -154
  106. data/docs/howto/upgrade_from_0_8_to_0_10.md +0 -265
  107. data/docs/integrations/ember-and-json-api.md +0 -147
  108. data/docs/integrations/grape.md +0 -19
  109. data/docs/jsonapi/errors.md +0 -56
  110. data/docs/jsonapi/schema.md +0 -151
  111. data/docs/jsonapi/schema/schema.json +0 -366
  112. data/docs/rfcs/0000-namespace.md +0 -106
  113. data/docs/rfcs/template.md +0 -15
  114. data/test/action_controller/adapter_selector_test.rb +0 -62
  115. data/test/action_controller/explicit_serializer_test.rb +0 -135
  116. data/test/action_controller/json/include_test.rb +0 -246
  117. data/test/action_controller/json_api/deserialization_test.rb +0 -112
  118. data/test/action_controller/json_api/errors_test.rb +0 -40
  119. data/test/action_controller/json_api/fields_test.rb +0 -66
  120. data/test/action_controller/json_api/linked_test.rb +0 -202
  121. data/test/action_controller/json_api/pagination_test.rb +0 -124
  122. data/test/action_controller/json_api/transform_test.rb +0 -189
  123. data/test/action_controller/lookup_proc_test.rb +0 -49
  124. data/test/action_controller/namespace_lookup_test.rb +0 -232
  125. data/test/action_controller/serialization_scope_name_test.rb +0 -235
  126. data/test/action_controller/serialization_test.rb +0 -472
  127. data/test/active_model_serializers/adapter_for_test.rb +0 -208
  128. data/test/active_model_serializers/json_pointer_test.rb +0 -22
  129. data/test/active_model_serializers/logging_test.rb +0 -77
  130. data/test/active_model_serializers/model_test.rb +0 -142
  131. data/test/active_model_serializers/railtie_test_isolated.rb +0 -68
  132. data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +0 -161
  133. data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -71
  134. data/test/active_model_serializers/test/schema_test.rb +0 -131
  135. data/test/active_model_serializers/test/serializer_test.rb +0 -62
  136. data/test/active_record_test.rb +0 -9
  137. data/test/adapter/attributes_test.rb +0 -40
  138. data/test/adapter/deprecation_test.rb +0 -100
  139. data/test/adapter/json/belongs_to_test.rb +0 -45
  140. data/test/adapter/json/collection_test.rb +0 -104
  141. data/test/adapter/json/has_many_test.rb +0 -53
  142. data/test/adapter/json/transform_test.rb +0 -93
  143. data/test/adapter/json_api/belongs_to_test.rb +0 -155
  144. data/test/adapter/json_api/collection_test.rb +0 -96
  145. data/test/adapter/json_api/errors_test.rb +0 -76
  146. data/test/adapter/json_api/fields_test.rb +0 -96
  147. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -96
  148. data/test/adapter/json_api/has_many_test.rb +0 -173
  149. data/test/adapter/json_api/has_one_test.rb +0 -80
  150. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +0 -213
  151. data/test/adapter/json_api/json_api_test.rb +0 -33
  152. data/test/adapter/json_api/linked_test.rb +0 -413
  153. data/test/adapter/json_api/links_test.rb +0 -95
  154. data/test/adapter/json_api/pagination_links_test.rb +0 -206
  155. data/test/adapter/json_api/parse_test.rb +0 -137
  156. data/test/adapter/json_api/relationship_test.rb +0 -397
  157. data/test/adapter/json_api/resource_meta_test.rb +0 -100
  158. data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -82
  159. data/test/adapter/json_api/transform_test.rb +0 -512
  160. data/test/adapter/json_api/type_test.rb +0 -193
  161. data/test/adapter/json_test.rb +0 -46
  162. data/test/adapter/null_test.rb +0 -22
  163. data/test/adapter/polymorphic_test.rb +0 -218
  164. data/test/adapter_test.rb +0 -67
  165. data/test/array_serializer_test.rb +0 -22
  166. data/test/benchmark/app.rb +0 -65
  167. data/test/benchmark/benchmarking_support.rb +0 -67
  168. data/test/benchmark/bm_active_record.rb +0 -81
  169. data/test/benchmark/bm_adapter.rb +0 -38
  170. data/test/benchmark/bm_caching.rb +0 -119
  171. data/test/benchmark/bm_lookup_chain.rb +0 -83
  172. data/test/benchmark/bm_transform.rb +0 -45
  173. data/test/benchmark/config.ru +0 -3
  174. data/test/benchmark/controllers.rb +0 -83
  175. data/test/benchmark/fixtures.rb +0 -219
  176. data/test/cache_test.rb +0 -651
  177. data/test/collection_serializer_test.rb +0 -127
  178. data/test/fixtures/active_record.rb +0 -113
  179. data/test/fixtures/poro.rb +0 -225
  180. data/test/generators/scaffold_controller_generator_test.rb +0 -24
  181. data/test/generators/serializer_generator_test.rb +0 -75
  182. data/test/grape_test.rb +0 -196
  183. data/test/lint_test.rb +0 -49
  184. data/test/logger_test.rb +0 -20
  185. data/test/poro_test.rb +0 -9
  186. data/test/serializable_resource_test.rb +0 -79
  187. data/test/serializers/association_macros_test.rb +0 -37
  188. data/test/serializers/associations_test.rb +0 -468
  189. data/test/serializers/attribute_test.rb +0 -153
  190. data/test/serializers/attributes_test.rb +0 -52
  191. data/test/serializers/caching_configuration_test_isolated.rb +0 -170
  192. data/test/serializers/configuration_test.rb +0 -32
  193. data/test/serializers/fieldset_test.rb +0 -14
  194. data/test/serializers/meta_test.rb +0 -202
  195. data/test/serializers/options_test.rb +0 -32
  196. data/test/serializers/read_attribute_for_serialization_test.rb +0 -79
  197. data/test/serializers/reflection_test.rb +0 -427
  198. data/test/serializers/root_test.rb +0 -21
  199. data/test/serializers/serialization_test.rb +0 -55
  200. data/test/serializers/serializer_for_test.rb +0 -136
  201. data/test/serializers/serializer_for_with_namespace_test.rb +0 -88
  202. data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  203. data/test/support/isolated_unit.rb +0 -84
  204. data/test/support/rails5_shims.rb +0 -53
  205. data/test/support/rails_app.rb +0 -38
  206. data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  207. data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
  208. data/test/support/schemas/custom/show.json +0 -7
  209. data/test/support/schemas/hyper_schema.json +0 -93
  210. data/test/support/schemas/render_using_json_api.json +0 -43
  211. data/test/support/schemas/simple_json_pointers.json +0 -10
  212. data/test/support/serialization_testing.rb +0 -79
  213. data/test/test_helper.rb +0 -70
@@ -1,153 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class AttributeTest < ActiveSupport::TestCase
6
- def setup
7
- @blog = Blog.new(id: 1, name: 'AMS Hints', type: 'stuff')
8
- @blog_serializer = AlternateBlogSerializer.new(@blog)
9
- end
10
-
11
- def test_attributes_definition
12
- assert_equal([:id, :title],
13
- @blog_serializer.class._attributes)
14
- end
15
-
16
- def test_json_serializable_hash
17
- adapter = ActiveModelSerializers::Adapter::Json.new(@blog_serializer)
18
- assert_equal({ blog: { id: 1, title: 'AMS Hints' } }, adapter.serializable_hash)
19
- end
20
-
21
- def test_attribute_inheritance_with_key
22
- inherited_klass = Class.new(AlternateBlogSerializer)
23
- blog_serializer = inherited_klass.new(@blog)
24
- adapter = ActiveModelSerializers::Adapter::Attributes.new(blog_serializer)
25
- assert_equal({ id: 1, title: 'AMS Hints' }, adapter.serializable_hash)
26
- end
27
-
28
- def test_multiple_calls_with_the_same_attribute
29
- serializer_class = Class.new(ActiveModel::Serializer) do
30
- attribute :title
31
- attribute :title
32
- end
33
-
34
- assert_equal([:title], serializer_class._attributes)
35
- end
36
-
37
- def test_id_attribute_override
38
- serializer = Class.new(ActiveModel::Serializer) do
39
- attribute :name, key: :id
40
- end
41
-
42
- adapter = ActiveModelSerializers::Adapter::Json.new(serializer.new(@blog))
43
- assert_equal({ blog: { id: 'AMS Hints' } }, adapter.serializable_hash)
44
- end
45
-
46
- def test_object_attribute_override
47
- serializer = Class.new(ActiveModel::Serializer) do
48
- attribute :name, key: :object
49
- end
50
-
51
- adapter = ActiveModelSerializers::Adapter::Json.new(serializer.new(@blog))
52
- assert_equal({ blog: { object: 'AMS Hints' } }, adapter.serializable_hash)
53
- end
54
-
55
- def test_type_attribute
56
- attribute_serializer = Class.new(ActiveModel::Serializer) do
57
- attribute :id, key: :type
58
- end
59
- attributes_serializer = Class.new(ActiveModel::Serializer) do
60
- attributes :type
61
- end
62
-
63
- adapter = ActiveModelSerializers::Adapter::Json.new(attribute_serializer.new(@blog))
64
- assert_equal({ blog: { type: 1 } }, adapter.serializable_hash)
65
-
66
- adapter = ActiveModelSerializers::Adapter::Json.new(attributes_serializer.new(@blog))
67
- assert_equal({ blog: { type: 'stuff' } }, adapter.serializable_hash)
68
- end
69
-
70
- def test_id_attribute_override_before
71
- serializer = Class.new(ActiveModel::Serializer) do
72
- def id
73
- 'custom'
74
- end
75
-
76
- attribute :id
77
- end
78
-
79
- hash = ActiveModelSerializers::SerializableResource.new(@blog, adapter: :json, serializer: serializer).serializable_hash
80
-
81
- assert_equal('custom', hash[:blog][:id])
82
- end
83
-
84
- class PostWithVirtualAttribute < ::Model; attributes :first_name, :last_name end
85
- class PostWithVirtualAttributeSerializer < ActiveModel::Serializer
86
- attribute :name do
87
- "#{object.first_name} #{object.last_name}"
88
- end
89
- end
90
-
91
- def test_virtual_attribute_block
92
- post = PostWithVirtualAttribute.new(first_name: 'Lucas', last_name: 'Hosseini')
93
- hash = serializable(post).serializable_hash
94
- expected = { name: 'Lucas Hosseini' }
95
-
96
- assert_equal(expected, hash)
97
- end
98
-
99
- # rubocop:disable Metrics/AbcSize
100
- def test_conditional_associations
101
- model = Class.new(::Model) do
102
- attributes :true, :false, :attribute
103
- end.new(true: true, false: false)
104
-
105
- scenarios = [
106
- { options: { if: :true }, included: true },
107
- { options: { if: :false }, included: false },
108
- { options: { unless: :false }, included: true },
109
- { options: { unless: :true }, included: false },
110
- { options: { if: 'object.true' }, included: true },
111
- { options: { if: 'object.false' }, included: false },
112
- { options: { unless: 'object.false' }, included: true },
113
- { options: { unless: 'object.true' }, included: false },
114
- { options: { if: -> { object.true } }, included: true },
115
- { options: { if: -> { object.false } }, included: false },
116
- { options: { unless: -> { object.false } }, included: true },
117
- { options: { unless: -> { object.true } }, included: false },
118
- { options: { if: -> (s) { s.object.true } }, included: true },
119
- { options: { if: -> (s) { s.object.false } }, included: false },
120
- { options: { unless: -> (s) { s.object.false } }, included: true },
121
- { options: { unless: -> (s) { s.object.true } }, included: false }
122
- ]
123
-
124
- scenarios.each do |s|
125
- serializer = Class.new(ActiveModel::Serializer) do
126
- attribute :attribute, s[:options]
127
-
128
- def true
129
- true
130
- end
131
-
132
- def false
133
- false
134
- end
135
- end
136
-
137
- hash = serializable(model, serializer: serializer).serializable_hash
138
- assert_equal(s[:included], hash.key?(:attribute), "Error with #{s[:options]}")
139
- end
140
- end
141
-
142
- def test_illegal_conditional_attributes
143
- exception = assert_raises(TypeError) do
144
- Class.new(ActiveModel::Serializer) do
145
- attribute :x, if: nil
146
- end
147
- end
148
-
149
- assert_match(/:if should be a Symbol, String or Proc/, exception.message)
150
- end
151
- end
152
- end
153
- end
@@ -1,52 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class AttributesTest < ActiveSupport::TestCase
6
- def setup
7
- @profile = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
8
- @profile_serializer = ProfileSerializer.new(@profile)
9
- @comment = Comment.new(id: 1, body: 'ZOMG!!', date: '2015')
10
- @serializer_klass = Class.new(CommentSerializer)
11
- @serializer_klass_with_new_attributes = Class.new(CommentSerializer) do
12
- attributes :date, :likes
13
- end
14
- end
15
-
16
- def test_attributes_definition
17
- assert_equal([:name, :description],
18
- @profile_serializer.class._attributes)
19
- end
20
-
21
- def test_attributes_inheritance_definition
22
- assert_equal([:id, :body], @serializer_klass._attributes)
23
- end
24
-
25
- def test_attributes_inheritance
26
- serializer = @serializer_klass.new(@comment)
27
- assert_equal({ id: 1, body: 'ZOMG!!' },
28
- serializer.attributes)
29
- end
30
-
31
- def test_attribute_inheritance_with_new_attribute_definition
32
- assert_equal([:id, :body, :date, :likes], @serializer_klass_with_new_attributes._attributes)
33
- assert_equal([:id, :body], CommentSerializer._attributes)
34
- end
35
-
36
- def test_attribute_inheritance_with_new_attribute
37
- serializer = @serializer_klass_with_new_attributes.new(@comment)
38
- assert_equal({ id: 1, body: 'ZOMG!!', date: '2015', likes: nil },
39
- serializer.attributes)
40
- end
41
-
42
- def test_multiple_calls_with_the_same_attribute
43
- serializer_class = Class.new(ActiveModel::Serializer) do
44
- attributes :id, :title
45
- attributes :id, :title, :title, :body
46
- end
47
-
48
- assert_equal([:id, :title, :body], serializer_class._attributes)
49
- end
50
- end
51
- end
52
- end
@@ -1,170 +0,0 @@
1
- # Execute this test in isolation
2
- require 'support/isolated_unit'
3
-
4
- class CachingConfigurationTest < ActiveSupport::TestCase
5
- include ActiveSupport::Testing::Isolation
6
-
7
- setup do
8
- require 'rails'
9
- # AMS needs to be required before Rails.application is initialized for
10
- # Railtie's to fire in Rails.application.initialize!
11
- # (and make_basic_app initializes the app)
12
- require 'active_model_serializers'
13
- # Create serializers before Rails.application.initialize!
14
- # To ensure we're testing that the cache settings depend on
15
- # the Railtie firing, not on the ActionController being loaded.
16
- create_serializers
17
- end
18
-
19
- def create_serializers
20
- @cached_serializer = Class.new(ActiveModel::Serializer) do
21
- cache skip_digest: true
22
- attributes :id, :name, :title
23
- end
24
- @fragment_cached_serializer = Class.new(ActiveModel::Serializer) do
25
- cache only: :id
26
- attributes :id, :name, :title
27
- end
28
- @non_cached_serializer = Class.new(ActiveModel::Serializer) do
29
- attributes :id, :name, :title
30
- end
31
- end
32
-
33
- class PerformCachingTrue < CachingConfigurationTest
34
- setup do
35
- # Let's make that Rails app and initialize it!
36
- make_basic_app do |app|
37
- app.config.action_controller.perform_caching = true
38
- app.config.action_controller.cache_store = ActiveSupport::Cache.lookup_store(:memory_store)
39
- end
40
- controller_cache_store # Force ActiveSupport.on_load(:action_controller) to run
41
- end
42
-
43
- test 'it sets perform_caching to true on AMS.config and serializers' do
44
- assert Rails.configuration.action_controller.perform_caching
45
- assert ActiveModelSerializers.config.perform_caching
46
- assert ActiveModel::Serializer.perform_caching?
47
- assert @cached_serializer.perform_caching?
48
- assert @non_cached_serializer.perform_caching?
49
- assert @fragment_cached_serializer.perform_caching?
50
- end
51
-
52
- test 'it sets the AMS.config.cache_store to the controller cache_store' do
53
- assert_equal controller_cache_store, ActiveSupport::Cache::MemoryStore
54
- assert_equal controller_cache_store, ActiveModelSerializers.config.cache_store.class
55
- end
56
-
57
- test 'it sets the cached serializer cache_store to the ActionController::Base.cache_store' do
58
- assert_equal ActiveSupport::Cache::NullStore, @cached_serializer._cache.class
59
- assert_equal controller_cache_store, @cached_serializer.cache_store.class
60
- assert_equal ActiveSupport::Cache::MemoryStore, @cached_serializer._cache.class
61
- end
62
-
63
- test 'the cached serializer has cache_enabled?' do
64
- assert @cached_serializer.cache_enabled?
65
- end
66
-
67
- test 'the cached serializer does not have fragment_cache_enabled?' do
68
- refute @cached_serializer.fragment_cache_enabled?
69
- end
70
-
71
- test 'the non-cached serializer cache_store is nil' do
72
- assert_nil @non_cached_serializer._cache
73
- assert_nil @non_cached_serializer.cache_store
74
- assert_nil @non_cached_serializer._cache
75
- end
76
-
77
- test 'the non-cached serializer does not have cache_enabled?' do
78
- refute @non_cached_serializer.cache_enabled?
79
- end
80
-
81
- test 'the non-cached serializer does not have fragment_cache_enabled?' do
82
- refute @non_cached_serializer.fragment_cache_enabled?
83
- end
84
-
85
- test 'it sets the fragment cached serializer cache_store to the ActionController::Base.cache_store' do
86
- assert_equal ActiveSupport::Cache::NullStore, @fragment_cached_serializer._cache.class
87
- assert_equal controller_cache_store, @fragment_cached_serializer.cache_store.class
88
- assert_equal ActiveSupport::Cache::MemoryStore, @fragment_cached_serializer._cache.class
89
- end
90
-
91
- test 'the fragment cached serializer does not have cache_enabled?' do
92
- refute @fragment_cached_serializer.cache_enabled?
93
- end
94
-
95
- test 'the fragment cached serializer has fragment_cache_enabled?' do
96
- assert @fragment_cached_serializer.fragment_cache_enabled?
97
- end
98
- end
99
-
100
- class PerformCachingFalse < CachingConfigurationTest
101
- setup do
102
- # Let's make that Rails app and initialize it!
103
- make_basic_app do |app|
104
- app.config.action_controller.perform_caching = false
105
- app.config.action_controller.cache_store = ActiveSupport::Cache.lookup_store(:memory_store)
106
- end
107
- controller_cache_store # Force ActiveSupport.on_load(:action_controller) to run
108
- end
109
-
110
- test 'it sets perform_caching to false on AMS.config and serializers' do
111
- refute Rails.configuration.action_controller.perform_caching
112
- refute ActiveModelSerializers.config.perform_caching
113
- refute ActiveModel::Serializer.perform_caching?
114
- refute @cached_serializer.perform_caching?
115
- refute @non_cached_serializer.perform_caching?
116
- refute @fragment_cached_serializer.perform_caching?
117
- end
118
-
119
- test 'it sets the AMS.config.cache_store to the controller cache_store' do
120
- assert_equal controller_cache_store, ActiveSupport::Cache::MemoryStore
121
- assert_equal controller_cache_store, ActiveModelSerializers.config.cache_store.class
122
- end
123
-
124
- test 'it sets the cached serializer cache_store to the ActionController::Base.cache_store' do
125
- assert_equal ActiveSupport::Cache::NullStore, @cached_serializer._cache.class
126
- assert_equal controller_cache_store, @cached_serializer.cache_store.class
127
- assert_equal ActiveSupport::Cache::MemoryStore, @cached_serializer._cache.class
128
- end
129
-
130
- test 'the cached serializer does not have cache_enabled?' do
131
- refute @cached_serializer.cache_enabled?
132
- end
133
-
134
- test 'the cached serializer does not have fragment_cache_enabled?' do
135
- refute @cached_serializer.fragment_cache_enabled?
136
- end
137
-
138
- test 'the non-cached serializer cache_store is nil' do
139
- assert_nil @non_cached_serializer._cache
140
- assert_nil @non_cached_serializer.cache_store
141
- assert_nil @non_cached_serializer._cache
142
- end
143
-
144
- test 'the non-cached serializer does not have cache_enabled?' do
145
- refute @non_cached_serializer.cache_enabled?
146
- end
147
-
148
- test 'the non-cached serializer does not have fragment_cache_enabled?' do
149
- refute @non_cached_serializer.fragment_cache_enabled?
150
- end
151
-
152
- test 'it sets the fragment cached serializer cache_store to the ActionController::Base.cache_store' do
153
- assert_equal ActiveSupport::Cache::NullStore, @fragment_cached_serializer._cache.class
154
- assert_equal controller_cache_store, @fragment_cached_serializer.cache_store.class
155
- assert_equal ActiveSupport::Cache::MemoryStore, @fragment_cached_serializer._cache.class
156
- end
157
-
158
- test 'the fragment cached serializer does not have cache_enabled?' do
159
- refute @fragment_cached_serializer.cache_enabled?
160
- end
161
-
162
- test 'the fragment cached serializer does not have fragment_cache_enabled?' do
163
- refute @fragment_cached_serializer.fragment_cache_enabled?
164
- end
165
- end
166
-
167
- def controller_cache_store
168
- ActionController::Base.cache_store.class
169
- end
170
- end
@@ -1,32 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class ConfigurationTest < ActiveSupport::TestCase
6
- def test_collection_serializer
7
- assert_equal ActiveModel::Serializer::CollectionSerializer, ActiveModelSerializers.config.collection_serializer
8
- end
9
-
10
- def test_array_serializer
11
- assert_equal ActiveModel::Serializer::CollectionSerializer, ActiveModelSerializers.config.array_serializer
12
- end
13
-
14
- def test_setting_array_serializer_sets_collection_serializer
15
- config = ActiveModelSerializers.config
16
- old_config = config.dup
17
- begin
18
- assert_equal ActiveModel::Serializer::CollectionSerializer, config.collection_serializer
19
- config.array_serializer = :foo
20
- assert_equal config.array_serializer, :foo
21
- assert_equal config.collection_serializer, :foo
22
- ensure
23
- ActiveModelSerializers.config.replace(old_config)
24
- end
25
- end
26
-
27
- def test_default_adapter
28
- assert_equal :attributes, ActiveModelSerializers.config.adapter
29
- end
30
- end
31
- end
32
- end
@@ -1,14 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class FieldsetTest < ActiveSupport::TestCase
6
- def test_fieldset_with_hash
7
- fieldset = ActiveModel::Serializer::Fieldset.new('post' => %w(id title), 'comment' => ['body'])
8
- expected = { post: [:id, :title], comment: [:body] }
9
-
10
- assert_equal(expected, fieldset.fields)
11
- end
12
- end
13
- end
14
- end
@@ -1,202 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class MetaTest < ActiveSupport::TestCase
6
- def setup
7
- @blog = Blog.new(id: 1,
8
- name: 'AMS Hints',
9
- writer: Author.new(id: 2, name: 'Steve'),
10
- articles: [Post.new(id: 3, title: 'AMS')])
11
- end
12
-
13
- def test_meta_is_present_with_root
14
- actual = ActiveModelSerializers::SerializableResource.new(
15
- @blog,
16
- adapter: :json,
17
- serializer: AlternateBlogSerializer,
18
- meta: { total: 10 }
19
- ).as_json
20
- expected = {
21
- blog: {
22
- id: 1,
23
- title: 'AMS Hints'
24
- },
25
- 'meta' => {
26
- total: 10
27
- }
28
- }
29
- assert_equal(expected, actual)
30
- end
31
-
32
- def test_meta_is_not_included_when_blank
33
- actual = ActiveModelSerializers::SerializableResource.new(
34
- @blog,
35
- adapter: :json,
36
- serializer: AlternateBlogSerializer,
37
- meta: {}
38
- ).as_json
39
- expected = {
40
- blog: {
41
- id: 1,
42
- title: 'AMS Hints'
43
- }
44
- }
45
- assert_equal(expected, actual)
46
- end
47
-
48
- def test_meta_is_not_included_when_empty_string
49
- actual = ActiveModelSerializers::SerializableResource.new(
50
- @blog,
51
- adapter: :json,
52
- serializer: AlternateBlogSerializer,
53
- meta: ''
54
- ).as_json
55
- expected = {
56
- blog: {
57
- id: 1,
58
- title: 'AMS Hints'
59
- }
60
- }
61
- assert_equal(expected, actual)
62
- end
63
-
64
- def test_meta_is_not_included_when_root_is_missing
65
- actual = ActiveModelSerializers::SerializableResource.new(
66
- @blog,
67
- adapter: :attributes,
68
- serializer: AlternateBlogSerializer,
69
- meta: { total: 10 }
70
- ).as_json
71
- expected = {
72
- id: 1,
73
- title: 'AMS Hints'
74
- }
75
- assert_equal(expected, actual)
76
- end
77
-
78
- def test_meta_key_is_used
79
- actual = ActiveModelSerializers::SerializableResource.new(
80
- @blog,
81
- adapter: :json,
82
- serializer: AlternateBlogSerializer,
83
- meta: { total: 10 },
84
- meta_key: 'haha_meta'
85
- ).as_json
86
- expected = {
87
- blog: {
88
- id: 1,
89
- title: 'AMS Hints'
90
- },
91
- 'haha_meta' => {
92
- total: 10
93
- }
94
- }
95
- assert_equal(expected, actual)
96
- end
97
-
98
- def test_meta_key_is_not_used_with_json_api
99
- actual = ActiveModelSerializers::SerializableResource.new(
100
- @blog,
101
- adapter: :json_api,
102
- serializer: AlternateBlogSerializer,
103
- meta: { total: 10 },
104
- meta_key: 'haha_meta'
105
- ).as_json
106
- expected = {
107
- data: {
108
- id: '1',
109
- type: 'blogs',
110
- attributes: { title: 'AMS Hints' }
111
- },
112
- meta: { total: 10 }
113
- }
114
- assert_equal(expected, actual)
115
- end
116
-
117
- def test_meta_key_is_not_present_when_empty_hash_with_json_api
118
- actual = ActiveModelSerializers::SerializableResource.new(
119
- @blog,
120
- adapter: :json_api,
121
- serializer: AlternateBlogSerializer,
122
- meta: {}
123
- ).as_json
124
- expected = {
125
- data: {
126
- id: '1',
127
- type: 'blogs',
128
- attributes: { title: 'AMS Hints' }
129
- }
130
- }
131
- assert_equal(expected, actual)
132
- end
133
-
134
- def test_meta_key_is_not_present_when_empty_string_with_json_api
135
- actual = ActiveModelSerializers::SerializableResource.new(
136
- @blog,
137
- adapter: :json_api,
138
- serializer: AlternateBlogSerializer,
139
- meta: ''
140
- ).as_json
141
- expected = {
142
- data: {
143
- id: '1',
144
- type: 'blogs',
145
- attributes: { title: 'AMS Hints' }
146
- }
147
- }
148
- assert_equal(expected, actual)
149
- end
150
-
151
- def test_meta_is_not_present_on_arrays_without_root
152
- actual = ActiveModelSerializers::SerializableResource.new(
153
- [@blog],
154
- adapter: :attributes,
155
- meta: { total: 10 }
156
- ).as_json
157
- expected = [{
158
- id: 1,
159
- name: 'AMS Hints',
160
- writer: {
161
- id: 2,
162
- name: 'Steve'
163
- },
164
- articles: [{
165
- id: 3,
166
- title: 'AMS',
167
- body: nil
168
- }]
169
- }]
170
- assert_equal(expected, actual)
171
- end
172
-
173
- def test_meta_is_present_on_arrays_with_root
174
- actual = ActiveModelSerializers::SerializableResource.new(
175
- [@blog],
176
- adapter: :json,
177
- meta: { total: 10 },
178
- meta_key: 'haha_meta'
179
- ).as_json
180
- expected = {
181
- blogs: [{
182
- id: 1,
183
- name: 'AMS Hints',
184
- writer: {
185
- id: 2,
186
- name: 'Steve'
187
- },
188
- articles: [{
189
- id: 3,
190
- title: 'AMS',
191
- body: nil
192
- }]
193
- }],
194
- 'haha_meta' => {
195
- total: 10
196
- }
197
- }
198
- assert_equal(expected, actual)
199
- end
200
- end
201
- end
202
- end