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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +239 -2
- data/README.md +171 -34
- data/lib/action_controller/serialization.rb +23 -3
- data/lib/active_model/serializable_resource.rb +2 -0
- data/lib/active_model/serializer/adapter/attributes.rb +2 -0
- data/lib/active_model/serializer/adapter/base.rb +4 -0
- data/lib/active_model/serializer/adapter/json.rb +2 -0
- data/lib/active_model/serializer/adapter/json_api.rb +2 -0
- data/lib/active_model/serializer/adapter/null.rb +2 -0
- data/lib/active_model/serializer/adapter.rb +2 -0
- data/lib/active_model/serializer/array_serializer.rb +10 -5
- data/lib/active_model/serializer/association.rb +64 -10
- data/lib/active_model/serializer/attribute.rb +2 -0
- data/lib/active_model/serializer/belongs_to_reflection.rb +6 -3
- data/lib/active_model/serializer/collection_serializer.rb +48 -13
- data/lib/active_model/serializer/{caching.rb → concerns/caching.rb} +89 -117
- data/lib/active_model/serializer/error_serializer.rb +13 -7
- data/lib/active_model/serializer/errors_serializer.rb +27 -20
- data/lib/active_model/serializer/field.rb +2 -0
- data/lib/active_model/serializer/fieldset.rb +3 -1
- data/lib/active_model/serializer/has_many_reflection.rb +5 -3
- data/lib/active_model/serializer/has_one_reflection.rb +3 -4
- data/lib/active_model/serializer/lazy_association.rb +99 -0
- data/lib/active_model/serializer/link.rb +23 -0
- data/lib/active_model/serializer/lint.rb +136 -130
- data/lib/active_model/serializer/null.rb +2 -0
- data/lib/active_model/serializer/reflection.rb +130 -65
- data/lib/active_model/serializer/version.rb +3 -1
- data/lib/active_model/serializer.rb +321 -86
- data/lib/active_model_serializers/adapter/attributes.rb +17 -57
- data/lib/active_model_serializers/adapter/base.rb +41 -39
- data/lib/active_model_serializers/adapter/json.rb +2 -0
- data/lib/active_model_serializers/adapter/json_api/deserialization.rb +4 -2
- data/lib/active_model_serializers/adapter/json_api/error.rb +2 -0
- data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +2 -0
- data/lib/active_model_serializers/adapter/json_api/link.rb +3 -1
- data/lib/active_model_serializers/adapter/json_api/meta.rb +2 -0
- data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +52 -20
- data/lib/active_model_serializers/adapter/json_api/relationship.rb +77 -23
- data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +41 -10
- data/lib/active_model_serializers/adapter/json_api.rb +84 -65
- data/lib/active_model_serializers/adapter/null.rb +2 -0
- data/lib/active_model_serializers/adapter.rb +9 -1
- data/lib/active_model_serializers/callbacks.rb +2 -0
- data/lib/active_model_serializers/deprecate.rb +3 -2
- data/lib/active_model_serializers/deserialization.rb +4 -0
- data/lib/active_model_serializers/json_pointer.rb +2 -0
- data/lib/active_model_serializers/logging.rb +2 -0
- data/lib/active_model_serializers/lookup_chain.rb +82 -0
- data/lib/active_model_serializers/model/caching.rb +26 -0
- data/lib/active_model_serializers/model.rb +111 -28
- data/lib/active_model_serializers/railtie.rb +7 -1
- data/lib/active_model_serializers/register_jsonapi_renderer.rb +46 -31
- data/lib/active_model_serializers/serializable_resource.rb +10 -7
- data/lib/active_model_serializers/serialization_context.rb +12 -3
- data/lib/active_model_serializers/test/schema.rb +4 -2
- data/lib/active_model_serializers/test/serializer.rb +2 -0
- data/lib/active_model_serializers/test.rb +2 -0
- data/lib/active_model_serializers.rb +35 -10
- data/lib/generators/rails/resource_override.rb +3 -1
- data/lib/generators/rails/serializer_generator.rb +6 -4
- data/lib/grape/active_model_serializers.rb +9 -5
- data/lib/grape/formatters/active_model_serializers.rb +21 -2
- data/lib/grape/helpers/active_model_serializers.rb +3 -0
- data/lib/tasks/rubocop.rake +55 -0
- metadata +104 -296
- data/.github/ISSUE_TEMPLATE.md +0 -29
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -15
- data/.gitignore +0 -35
- data/.rubocop.yml +0 -104
- data/.rubocop_todo.yml +0 -167
- data/.simplecov +0 -110
- data/.travis.yml +0 -43
- data/CONTRIBUTING.md +0 -105
- data/Gemfile +0 -53
- data/Rakefile +0 -103
- data/active_model_serializers.gemspec +0 -66
- data/appveyor.yml +0 -24
- data/bin/bench +0 -171
- data/bin/bench_regression +0 -316
- data/bin/serve_benchmark +0 -39
- data/docs/ARCHITECTURE.md +0 -126
- data/docs/README.md +0 -40
- data/docs/STYLE.md +0 -58
- data/docs/general/adapters.md +0 -245
- data/docs/general/caching.md +0 -52
- data/docs/general/configuration_options.md +0 -100
- data/docs/general/deserialization.md +0 -100
- data/docs/general/getting_started.md +0 -133
- data/docs/general/instrumentation.md +0 -40
- data/docs/general/key_transforms.md +0 -40
- data/docs/general/logging.md +0 -14
- data/docs/general/rendering.md +0 -255
- data/docs/general/serializers.md +0 -372
- data/docs/how-open-source-maintained.jpg +0 -0
- data/docs/howto/add_pagination_links.md +0 -139
- data/docs/howto/add_root_key.md +0 -51
- data/docs/howto/outside_controller_use.md +0 -58
- data/docs/howto/passing_arbitrary_options.md +0 -27
- data/docs/howto/serialize_poro.md +0 -32
- data/docs/howto/test.md +0 -152
- data/docs/integrations/ember-and-json-api.md +0 -112
- data/docs/integrations/grape.md +0 -19
- data/docs/jsonapi/errors.md +0 -56
- data/docs/jsonapi/schema/schema.json +0 -366
- data/docs/jsonapi/schema.md +0 -151
- data/docs/rfcs/0000-namespace.md +0 -106
- data/docs/rfcs/template.md +0 -15
- data/lib/active_model/serializer/associations.rb +0 -100
- data/lib/active_model/serializer/attributes.rb +0 -82
- data/lib/active_model/serializer/collection_reflection.rb +0 -7
- data/lib/active_model/serializer/configuration.rb +0 -35
- data/lib/active_model/serializer/include_tree.rb +0 -111
- data/lib/active_model/serializer/links.rb +0 -35
- data/lib/active_model/serializer/meta.rb +0 -29
- data/lib/active_model/serializer/singular_reflection.rb +0 -7
- data/lib/active_model/serializer/type.rb +0 -25
- data/lib/active_model_serializers/key_transform.rb +0 -70
- data/test/action_controller/adapter_selector_test.rb +0 -53
- data/test/action_controller/explicit_serializer_test.rb +0 -134
- data/test/action_controller/json/include_test.rb +0 -167
- data/test/action_controller/json_api/deserialization_test.rb +0 -112
- data/test/action_controller/json_api/errors_test.rb +0 -41
- data/test/action_controller/json_api/linked_test.rb +0 -197
- data/test/action_controller/json_api/pagination_test.rb +0 -116
- data/test/action_controller/json_api/transform_test.rb +0 -181
- data/test/action_controller/serialization_scope_name_test.rb +0 -229
- data/test/action_controller/serialization_test.rb +0 -469
- data/test/active_model_serializers/adapter_for_test.rb +0 -208
- data/test/active_model_serializers/json_pointer_test.rb +0 -20
- data/test/active_model_serializers/key_transform_test.rb +0 -263
- data/test/active_model_serializers/logging_test.rb +0 -77
- data/test/active_model_serializers/model_test.rb +0 -9
- data/test/active_model_serializers/railtie_test_isolated.rb +0 -63
- data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -58
- data/test/active_model_serializers/test/schema_test.rb +0 -130
- data/test/active_model_serializers/test/serializer_test.rb +0 -62
- data/test/active_record_test.rb +0 -9
- data/test/adapter/deprecation_test.rb +0 -100
- data/test/adapter/json/belongs_to_test.rb +0 -45
- data/test/adapter/json/collection_test.rb +0 -90
- data/test/adapter/json/has_many_test.rb +0 -45
- data/test/adapter/json/transform_test.rb +0 -93
- data/test/adapter/json_api/belongs_to_test.rb +0 -155
- data/test/adapter/json_api/collection_test.rb +0 -95
- data/test/adapter/json_api/errors_test.rb +0 -78
- data/test/adapter/json_api/fields_test.rb +0 -87
- data/test/adapter/json_api/has_many_embed_ids_test.rb +0 -43
- data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -96
- data/test/adapter/json_api/has_many_test.rb +0 -144
- data/test/adapter/json_api/has_one_test.rb +0 -80
- data/test/adapter/json_api/json_api_test.rb +0 -35
- data/test/adapter/json_api/linked_test.rb +0 -392
- data/test/adapter/json_api/links_test.rb +0 -93
- data/test/adapter/json_api/pagination_links_test.rb +0 -166
- data/test/adapter/json_api/parse_test.rb +0 -137
- data/test/adapter/json_api/relationship_test.rb +0 -161
- data/test/adapter/json_api/relationships_test.rb +0 -199
- data/test/adapter/json_api/resource_identifier_test.rb +0 -85
- data/test/adapter/json_api/resource_meta_test.rb +0 -100
- data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -82
- data/test/adapter/json_api/transform_test.rb +0 -502
- data/test/adapter/json_api/type_test.rb +0 -61
- data/test/adapter/json_test.rb +0 -45
- data/test/adapter/null_test.rb +0 -23
- data/test/adapter/polymorphic_test.rb +0 -171
- data/test/adapter_test.rb +0 -67
- data/test/array_serializer_test.rb +0 -22
- data/test/benchmark/app.rb +0 -65
- data/test/benchmark/benchmarking_support.rb +0 -67
- data/test/benchmark/bm_caching.rb +0 -119
- data/test/benchmark/bm_transform.rb +0 -34
- data/test/benchmark/config.ru +0 -3
- data/test/benchmark/controllers.rb +0 -84
- data/test/benchmark/fixtures.rb +0 -219
- data/test/cache_test.rb +0 -485
- data/test/collection_serializer_test.rb +0 -110
- data/test/fixtures/active_record.rb +0 -78
- data/test/fixtures/poro.rb +0 -282
- data/test/generators/scaffold_controller_generator_test.rb +0 -24
- data/test/generators/serializer_generator_test.rb +0 -57
- data/test/grape_test.rb +0 -82
- data/test/include_tree/from_include_args_test.rb +0 -26
- data/test/include_tree/from_string_test.rb +0 -94
- data/test/include_tree/include_args_to_hash_test.rb +0 -64
- data/test/lint_test.rb +0 -49
- data/test/logger_test.rb +0 -18
- data/test/poro_test.rb +0 -9
- data/test/serializable_resource_test.rb +0 -83
- data/test/serializers/association_macros_test.rb +0 -36
- data/test/serializers/associations_test.rb +0 -295
- data/test/serializers/attribute_test.rb +0 -151
- data/test/serializers/attributes_test.rb +0 -52
- data/test/serializers/caching_configuration_test_isolated.rb +0 -170
- data/test/serializers/configuration_test.rb +0 -32
- data/test/serializers/fieldset_test.rb +0 -14
- data/test/serializers/meta_test.rb +0 -196
- data/test/serializers/options_test.rb +0 -21
- data/test/serializers/read_attribute_for_serialization_test.rb +0 -79
- data/test/serializers/root_test.rb +0 -21
- data/test/serializers/serialization_test.rb +0 -55
- data/test/serializers/serializer_for_test.rb +0 -134
- data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
- data/test/support/isolated_unit.rb +0 -79
- data/test/support/rails5_shims.rb +0 -47
- data/test/support/rails_app.rb +0 -45
- data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
- data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
- data/test/support/schemas/custom/show.json +0 -7
- data/test/support/schemas/hyper_schema.json +0 -93
- data/test/support/schemas/render_using_json_api.json +0 -43
- data/test/support/schemas/simple_json_pointers.json +0 -10
- data/test/support/serialization_testing.rb +0 -53
- data/test/test_helper.rb +0 -57
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
module ActiveModelSerializers
|
|
4
|
-
class AdapterForTest < ::ActiveSupport::TestCase
|
|
5
|
-
UnknownAdapterError = ::ActiveModelSerializers::Adapter::UnknownAdapterError
|
|
6
|
-
|
|
7
|
-
def test_serializer_adapter_returns_configured_adapter
|
|
8
|
-
assert_output(nil, /ActiveModelSerializers::Adapter.configured_adapter/) do
|
|
9
|
-
assert_equal ActiveModelSerializers::Adapter.configured_adapter, ActiveModel::Serializer.adapter
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def test_returns_default_adapter
|
|
14
|
-
with_adapter_config_setup do
|
|
15
|
-
adapter = ActiveModelSerializers::Adapter.configured_adapter
|
|
16
|
-
assert_equal ActiveModelSerializers::Adapter::Attributes, adapter
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def test_overwrite_adapter_with_symbol
|
|
21
|
-
with_adapter_config_setup do
|
|
22
|
-
ActiveModelSerializers.config.adapter = :null
|
|
23
|
-
|
|
24
|
-
adapter = ActiveModelSerializers::Adapter.configured_adapter
|
|
25
|
-
assert_equal ActiveModelSerializers::Adapter::Null, adapter
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_overwrite_adapter_with_camelcased_symbol
|
|
30
|
-
with_adapter_config_setup do
|
|
31
|
-
ActiveModelSerializers.config.adapter = :JsonApi
|
|
32
|
-
|
|
33
|
-
adapter = ActiveModelSerializers::Adapter.configured_adapter
|
|
34
|
-
assert_equal ActiveModelSerializers::Adapter::JsonApi, adapter
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def test_overwrite_adapter_with_string
|
|
39
|
-
with_adapter_config_setup do
|
|
40
|
-
ActiveModelSerializers.config.adapter = 'json_api'
|
|
41
|
-
|
|
42
|
-
adapter = ActiveModelSerializers::Adapter.configured_adapter
|
|
43
|
-
assert_equal ActiveModelSerializers::Adapter::JsonApi, adapter
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def test_overwrite_adapter_with_a_camelcased_string
|
|
48
|
-
with_adapter_config_setup do
|
|
49
|
-
ActiveModelSerializers.config.adapter = 'JsonApi'
|
|
50
|
-
|
|
51
|
-
adapter = ActiveModelSerializers::Adapter.configured_adapter
|
|
52
|
-
assert_equal ActiveModelSerializers::Adapter::JsonApi, adapter
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def test_overwrite_adapter_with_class
|
|
57
|
-
with_adapter_config_setup do
|
|
58
|
-
ActiveModelSerializers.config.adapter = ActiveModelSerializers::Adapter::Null
|
|
59
|
-
|
|
60
|
-
adapter = ActiveModelSerializers::Adapter.configured_adapter
|
|
61
|
-
assert_equal ActiveModelSerializers::Adapter::Null, adapter
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_raises_exception_if_invalid_symbol_given
|
|
66
|
-
with_adapter_config_setup do
|
|
67
|
-
ActiveModelSerializers.config.adapter = :unknown
|
|
68
|
-
|
|
69
|
-
assert_raises UnknownAdapterError do
|
|
70
|
-
ActiveModelSerializers::Adapter.configured_adapter
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def test_raises_exception_if_it_does_not_know_hot_to_infer_adapter
|
|
76
|
-
with_adapter_config_setup do
|
|
77
|
-
ActiveModelSerializers.config.adapter = 42
|
|
78
|
-
|
|
79
|
-
assert_raises UnknownAdapterError do
|
|
80
|
-
ActiveModelSerializers::Adapter.configured_adapter
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def test_adapter_class_for_known_adapter
|
|
86
|
-
klass = ActiveModelSerializers::Adapter.adapter_class(:json_api)
|
|
87
|
-
assert_equal ActiveModelSerializers::Adapter::JsonApi, klass
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def test_adapter_class_for_unknown_adapter
|
|
91
|
-
assert_raises UnknownAdapterError do
|
|
92
|
-
ActiveModelSerializers::Adapter.adapter_class(:json_simple)
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def test_adapter_map
|
|
97
|
-
expected_adapter_map = {
|
|
98
|
-
'null'.freeze => ActiveModelSerializers::Adapter::Null,
|
|
99
|
-
'json'.freeze => ActiveModelSerializers::Adapter::Json,
|
|
100
|
-
'attributes'.freeze => ActiveModelSerializers::Adapter::Attributes,
|
|
101
|
-
'json_api'.freeze => ActiveModelSerializers::Adapter::JsonApi
|
|
102
|
-
}
|
|
103
|
-
actual = ActiveModelSerializers::Adapter.adapter_map
|
|
104
|
-
assert_equal actual, expected_adapter_map
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def test_adapters
|
|
108
|
-
assert_equal ActiveModelSerializers::Adapter.adapters.sort, [
|
|
109
|
-
'attributes'.freeze,
|
|
110
|
-
'json'.freeze,
|
|
111
|
-
'json_api'.freeze,
|
|
112
|
-
'null'.freeze
|
|
113
|
-
]
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def test_lookup_adapter_by_string_name
|
|
117
|
-
assert_equal ActiveModelSerializers::Adapter.lookup('json'.freeze), ActiveModelSerializers::Adapter::Json
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def test_lookup_adapter_by_symbol_name
|
|
121
|
-
assert_equal ActiveModelSerializers::Adapter.lookup(:json), ActiveModelSerializers::Adapter::Json
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def test_lookup_adapter_by_class
|
|
125
|
-
klass = ActiveModelSerializers::Adapter::Json
|
|
126
|
-
assert_equal ActiveModelSerializers::Adapter.lookup(klass), klass
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def test_lookup_adapter_from_environment_registers_adapter
|
|
130
|
-
ActiveModelSerializers::Adapter.const_set(:AdapterFromEnvironment, Class.new)
|
|
131
|
-
klass = ::ActiveModelSerializers::Adapter::AdapterFromEnvironment
|
|
132
|
-
name = 'adapter_from_environment'.freeze
|
|
133
|
-
assert_equal ActiveModelSerializers::Adapter.lookup(name), klass
|
|
134
|
-
assert ActiveModelSerializers::Adapter.adapters.include?(name)
|
|
135
|
-
ensure
|
|
136
|
-
ActiveModelSerializers::Adapter.adapter_map.delete(name)
|
|
137
|
-
ActiveModelSerializers::Adapter.send(:remove_const, :AdapterFromEnvironment)
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def test_lookup_adapter_for_unknown_name
|
|
141
|
-
assert_raises UnknownAdapterError do
|
|
142
|
-
ActiveModelSerializers::Adapter.lookup(:json_simple)
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
def test_adapter
|
|
147
|
-
assert_equal ActiveModelSerializers.config.adapter, :attributes
|
|
148
|
-
assert_equal ActiveModelSerializers::Adapter.configured_adapter, ActiveModelSerializers::Adapter::Attributes
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def test_register_adapter
|
|
152
|
-
new_adapter_name = :foo
|
|
153
|
-
new_adapter_klass = Class.new
|
|
154
|
-
ActiveModelSerializers::Adapter.register(new_adapter_name, new_adapter_klass)
|
|
155
|
-
assert ActiveModelSerializers::Adapter.adapters.include?('foo'.freeze)
|
|
156
|
-
assert ActiveModelSerializers::Adapter.lookup(:foo), new_adapter_klass
|
|
157
|
-
ensure
|
|
158
|
-
ActiveModelSerializers::Adapter.adapter_map.delete(new_adapter_name.to_s)
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
def test_inherited_adapter_hooks_register_adapter
|
|
162
|
-
Object.const_set(:MyAdapter, Class.new)
|
|
163
|
-
my_adapter = MyAdapter
|
|
164
|
-
ActiveModelSerializers::Adapter::Base.inherited(my_adapter)
|
|
165
|
-
assert_equal ActiveModelSerializers::Adapter.lookup(:my_adapter), my_adapter
|
|
166
|
-
ensure
|
|
167
|
-
ActiveModelSerializers::Adapter.adapter_map.delete('my_adapter'.freeze)
|
|
168
|
-
Object.send(:remove_const, :MyAdapter)
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
def test_inherited_adapter_hooks_register_namespaced_adapter
|
|
172
|
-
Object.const_set(:MyNamespace, Module.new)
|
|
173
|
-
MyNamespace.const_set(:MyAdapter, Class.new)
|
|
174
|
-
my_adapter = MyNamespace::MyAdapter
|
|
175
|
-
ActiveModelSerializers::Adapter::Base.inherited(my_adapter)
|
|
176
|
-
assert_equal ActiveModelSerializers::Adapter.lookup(:'my_namespace/my_adapter'), my_adapter
|
|
177
|
-
ensure
|
|
178
|
-
ActiveModelSerializers::Adapter.adapter_map.delete('my_namespace/my_adapter'.freeze)
|
|
179
|
-
MyNamespace.send(:remove_const, :MyAdapter)
|
|
180
|
-
Object.send(:remove_const, :MyNamespace)
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
def test_inherited_adapter_hooks_register_subclass_of_registered_adapter
|
|
184
|
-
Object.const_set(:MyAdapter, Class.new)
|
|
185
|
-
my_adapter = MyAdapter
|
|
186
|
-
Object.const_set(:MySubclassedAdapter, Class.new(MyAdapter))
|
|
187
|
-
my_subclassed_adapter = MySubclassedAdapter
|
|
188
|
-
ActiveModelSerializers::Adapter::Base.inherited(my_adapter)
|
|
189
|
-
ActiveModelSerializers::Adapter::Base.inherited(my_subclassed_adapter)
|
|
190
|
-
assert_equal ActiveModelSerializers::Adapter.lookup(:my_adapter), my_adapter
|
|
191
|
-
assert_equal ActiveModelSerializers::Adapter.lookup(:my_subclassed_adapter), my_subclassed_adapter
|
|
192
|
-
ensure
|
|
193
|
-
ActiveModelSerializers::Adapter.adapter_map.delete('my_adapter'.freeze)
|
|
194
|
-
ActiveModelSerializers::Adapter.adapter_map.delete('my_subclassed_adapter'.freeze)
|
|
195
|
-
Object.send(:remove_const, :MyAdapter)
|
|
196
|
-
Object.send(:remove_const, :MySubclassedAdapter)
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
private
|
|
200
|
-
|
|
201
|
-
def with_adapter_config_setup
|
|
202
|
-
previous_adapter = ActiveModelSerializers.config.adapter
|
|
203
|
-
yield
|
|
204
|
-
ensure
|
|
205
|
-
ActiveModelSerializers.config.adapter = previous_adapter
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
class ActiveModelSerializers::JsonPointerTest < ActiveSupport::TestCase
|
|
4
|
-
def test_attribute_pointer
|
|
5
|
-
attribute_name = 'title'
|
|
6
|
-
pointer = ActiveModelSerializers::JsonPointer.new(:attribute, attribute_name)
|
|
7
|
-
assert_equal '/data/attributes/title', pointer
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_primary_data_pointer
|
|
11
|
-
pointer = ActiveModelSerializers::JsonPointer.new(:primary_data)
|
|
12
|
-
assert_equal '/data', pointer
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_unkown_data_pointer
|
|
16
|
-
assert_raises(TypeError) do
|
|
17
|
-
ActiveModelSerializers::JsonPointer.new(:unknown)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
class ActiveModelSerializers::KeyTransformTest < ActiveSupport::TestCase
|
|
4
|
-
def test_camel
|
|
5
|
-
obj = Object.new
|
|
6
|
-
scenarios = [
|
|
7
|
-
{
|
|
8
|
-
value: { :"some-key" => 'value' },
|
|
9
|
-
expected: { :SomeKey => 'value' }
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
value: { :someKey => 'value' },
|
|
13
|
-
expected: { :SomeKey => 'value' }
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
value: { :some_key => 'value' },
|
|
17
|
-
expected: { :SomeKey => 'value' }
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
value: { 'some-key' => 'value' },
|
|
21
|
-
expected: { 'SomeKey' => 'value' }
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
value: { 'someKey' => 'value' },
|
|
25
|
-
expected: { 'SomeKey' => 'value' }
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
value: { 'some_key' => 'value' },
|
|
29
|
-
expected: { 'SomeKey' => 'value' }
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
value: :"some-value",
|
|
33
|
-
expected: :SomeValue
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
value: :some_value,
|
|
37
|
-
expected: :SomeValue
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
value: :someValue,
|
|
41
|
-
expected: :SomeValue
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
value: 'some-value',
|
|
45
|
-
expected: 'SomeValue'
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
value: 'someValue',
|
|
49
|
-
expected: 'SomeValue'
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
value: 'some_value',
|
|
53
|
-
expected: 'SomeValue'
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
value: obj,
|
|
57
|
-
expected: obj
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
value: nil,
|
|
61
|
-
expected: nil
|
|
62
|
-
}
|
|
63
|
-
]
|
|
64
|
-
scenarios.each do |s|
|
|
65
|
-
result = ActiveModelSerializers::KeyTransform.camel(s[:value])
|
|
66
|
-
assert_equal s[:expected], result
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_camel_lower
|
|
71
|
-
obj = Object.new
|
|
72
|
-
scenarios = [
|
|
73
|
-
{
|
|
74
|
-
value: { :"some-key" => 'value' },
|
|
75
|
-
expected: { :someKey => 'value' }
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
value: { :SomeKey => 'value' },
|
|
79
|
-
expected: { :someKey => 'value' }
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
value: { :some_key => 'value' },
|
|
83
|
-
expected: { :someKey => 'value' }
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
value: { 'some-key' => 'value' },
|
|
87
|
-
expected: { 'someKey' => 'value' }
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
value: { 'SomeKey' => 'value' },
|
|
91
|
-
expected: { 'someKey' => 'value' }
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
value: { 'some_key' => 'value' },
|
|
95
|
-
expected: { 'someKey' => 'value' }
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
value: :"some-value",
|
|
99
|
-
expected: :someValue
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
value: :SomeValue,
|
|
103
|
-
expected: :someValue
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
value: :some_value,
|
|
107
|
-
expected: :someValue
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
value: 'some-value',
|
|
111
|
-
expected: 'someValue'
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
value: 'SomeValue',
|
|
115
|
-
expected: 'someValue'
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
value: 'some_value',
|
|
119
|
-
expected: 'someValue'
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
value: obj,
|
|
123
|
-
expected: obj
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
value: nil,
|
|
127
|
-
expected: nil
|
|
128
|
-
}
|
|
129
|
-
]
|
|
130
|
-
scenarios.each do |s|
|
|
131
|
-
result = ActiveModelSerializers::KeyTransform.camel_lower(s[:value])
|
|
132
|
-
assert_equal s[:expected], result
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def test_dash
|
|
137
|
-
obj = Object.new
|
|
138
|
-
scenarios = [
|
|
139
|
-
{
|
|
140
|
-
value: { :some_key => 'value' },
|
|
141
|
-
expected: { :"some-key" => 'value' }
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
value: { 'some_key' => 'value' },
|
|
145
|
-
expected: { 'some-key' => 'value' }
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
value: { :SomeKey => 'value' },
|
|
149
|
-
expected: { :"some-key" => 'value' }
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
value: { 'SomeKey' => 'value' },
|
|
153
|
-
expected: { 'some-key' => 'value' }
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
value: { :someKey => 'value' },
|
|
157
|
-
expected: { :"some-key" => 'value' }
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
value: { 'someKey' => 'value' },
|
|
161
|
-
expected: { 'some-key' => 'value' }
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
value: :some_value,
|
|
165
|
-
expected: :"some-value"
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
value: :SomeValue,
|
|
169
|
-
expected: :"some-value"
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
value: 'SomeValue',
|
|
173
|
-
expected: 'some-value'
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
value: :someValue,
|
|
177
|
-
expected: :"some-value"
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
value: 'someValue',
|
|
181
|
-
expected: 'some-value'
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
value: obj,
|
|
185
|
-
expected: obj
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
value: nil,
|
|
189
|
-
expected: nil
|
|
190
|
-
}
|
|
191
|
-
]
|
|
192
|
-
scenarios.each do |s|
|
|
193
|
-
result = ActiveModelSerializers::KeyTransform.dash(s[:value])
|
|
194
|
-
assert_equal s[:expected], result
|
|
195
|
-
end
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
def test_underscore
|
|
199
|
-
obj = Object.new
|
|
200
|
-
scenarios = [
|
|
201
|
-
{
|
|
202
|
-
value: { :"some-key" => 'value' },
|
|
203
|
-
expected: { :some_key => 'value' }
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
value: { 'some-key' => 'value' },
|
|
207
|
-
expected: { 'some_key' => 'value' }
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
value: { :SomeKey => 'value' },
|
|
211
|
-
expected: { :some_key => 'value' }
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
value: { 'SomeKey' => 'value' },
|
|
215
|
-
expected: { 'some_key' => 'value' }
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
value: { :someKey => 'value' },
|
|
219
|
-
expected: { :some_key => 'value' }
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
value: { 'someKey' => 'value' },
|
|
223
|
-
expected: { 'some_key' => 'value' }
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
value: :"some-value",
|
|
227
|
-
expected: :some_value
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
value: :SomeValue,
|
|
231
|
-
expected: :some_value
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
value: :someValue,
|
|
235
|
-
expected: :some_value
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
value: 'some-value',
|
|
239
|
-
expected: 'some_value'
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
value: 'SomeValue',
|
|
243
|
-
expected: 'some_value'
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
value: 'someValue',
|
|
247
|
-
expected: 'some_value'
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
value: obj,
|
|
251
|
-
expected: obj
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
value: nil,
|
|
255
|
-
expected: nil
|
|
256
|
-
}
|
|
257
|
-
]
|
|
258
|
-
scenarios.each do |s|
|
|
259
|
-
result = ActiveModelSerializers::KeyTransform.underscore(s[:value])
|
|
260
|
-
assert_equal s[:expected], result
|
|
261
|
-
end
|
|
262
|
-
end
|
|
263
|
-
end
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
module ActiveModel
|
|
4
|
-
class Serializer
|
|
5
|
-
class LoggingTest < ActiveSupport::TestCase
|
|
6
|
-
class TestLogger < ActiveSupport::Logger
|
|
7
|
-
def initialize
|
|
8
|
-
@file = StringIO.new
|
|
9
|
-
super(@file)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def messages
|
|
13
|
-
@file.rewind
|
|
14
|
-
@file.read
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def setup
|
|
19
|
-
@author = Author.new(name: 'Steve K.')
|
|
20
|
-
@post = Post.new(title: 'New Post', body: 'Body')
|
|
21
|
-
@comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
|
|
22
|
-
@post.comments = [@comment]
|
|
23
|
-
@comment.post = @post
|
|
24
|
-
@post.author = @author
|
|
25
|
-
@author.posts = [@post]
|
|
26
|
-
@post_serializer = PostSerializer.new(@post, custom_options: true)
|
|
27
|
-
|
|
28
|
-
@old_logger = ActiveModelSerializers.logger
|
|
29
|
-
@logger = ActiveSupport::TaggedLogging.new(TestLogger.new)
|
|
30
|
-
logger @logger
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def teardown
|
|
34
|
-
logger @old_logger
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def logger(logger)
|
|
38
|
-
ActiveModelSerializers.logger = logger
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def test_uses_ams_as_tag
|
|
42
|
-
ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
|
|
43
|
-
assert_match(/\[active_model_serializers\]/, @logger.messages)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def test_logs_when_call_serializable_hash
|
|
47
|
-
ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
|
|
48
|
-
assert_match(/Rendered/, @logger.messages)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def test_logs_when_call_as_json
|
|
52
|
-
ActiveModelSerializers::SerializableResource.new(@post).as_json
|
|
53
|
-
assert_match(/Rendered/, @logger.messages)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def test_logs_when_call_to_json
|
|
57
|
-
ActiveModelSerializers::SerializableResource.new(@post).to_json
|
|
58
|
-
assert_match(/Rendered/, @logger.messages)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def test_logs_correct_serializer
|
|
62
|
-
ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
|
|
63
|
-
assert_match(/PostSerializer/, @logger.messages)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def test_logs_correct_adapter
|
|
67
|
-
ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
|
|
68
|
-
assert_match(/ActiveModelSerializers::Adapter::Attributes/, @logger.messages)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def test_logs_the_duration
|
|
72
|
-
ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
|
|
73
|
-
assert_match(/\(\d+\.\d+ms\)/, @logger.messages)
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# Execute this test in isolation
|
|
2
|
-
require 'support/isolated_unit'
|
|
3
|
-
|
|
4
|
-
class RailtieTest < ActiveSupport::TestCase
|
|
5
|
-
include ActiveSupport::Testing::Isolation
|
|
6
|
-
|
|
7
|
-
class WithRails < RailtieTest
|
|
8
|
-
setup do
|
|
9
|
-
require 'rails'
|
|
10
|
-
require 'active_model_serializers'
|
|
11
|
-
make_basic_app
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
test 'mixes ActionController::Serialization into ActionController::Base' do
|
|
15
|
-
assert ActionController.const_defined?(:Serialization),
|
|
16
|
-
"ActionController::Serialization should be defined, but isn't"
|
|
17
|
-
assert ::ActionController::Base.included_modules.include?(::ActionController::Serialization),
|
|
18
|
-
"ActionController::Serialization should be included in ActionController::Base, but isn't"
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
test 'prepares url_helpers for SerializationContext' do
|
|
22
|
-
assert ActiveModelSerializers::SerializationContext.url_helpers.respond_to? :url_for
|
|
23
|
-
assert_equal Rails.application.routes.default_url_options,
|
|
24
|
-
ActiveModelSerializers::SerializationContext.default_url_options
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
test 'sets the ActiveModelSerializers.logger to Rails.logger' do
|
|
28
|
-
refute_nil Rails.logger
|
|
29
|
-
refute_nil ActiveModelSerializers.logger
|
|
30
|
-
assert_equal Rails.logger, ActiveModelSerializers.logger
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
test 'it is configured for caching' do
|
|
34
|
-
assert_equal ActionController::Base.cache_store, ActiveModelSerializers.config.cache_store
|
|
35
|
-
assert_equal Rails.configuration.action_controller.perform_caching, ActiveModelSerializers.config.perform_caching
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
class WithoutRails < RailtieTest
|
|
40
|
-
setup do
|
|
41
|
-
require 'active_model_serializers'
|
|
42
|
-
make_basic_app
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
test 'does not mix ActionController::Serialization into ActionController::Base' do
|
|
46
|
-
refute ActionController.const_defined?(:Serialization),
|
|
47
|
-
'ActionController::Serialization should not be defined, but is'
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
test 'has its own logger at ActiveModelSerializers.logger' do
|
|
51
|
-
refute_nil Rails.logger
|
|
52
|
-
refute_nil ActiveModelSerializers.logger
|
|
53
|
-
refute_equal Rails.logger, ActiveModelSerializers.logger
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
test 'it is not configured for caching' do
|
|
57
|
-
refute_nil ActionController::Base.cache_store
|
|
58
|
-
assert_nil ActiveModelSerializers.config.cache_store
|
|
59
|
-
refute Rails.configuration.action_controller.perform_caching
|
|
60
|
-
refute ActiveModelSerializers.config.perform_caching
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# Execute this test in isolation
|
|
2
|
-
require 'support/isolated_unit'
|
|
3
|
-
require 'minitest/mock'
|
|
4
|
-
|
|
5
|
-
class SerializationContextTest < ActiveSupport::TestCase
|
|
6
|
-
include ActiveSupport::Testing::Isolation
|
|
7
|
-
|
|
8
|
-
def create_request
|
|
9
|
-
request = Minitest::Mock.new
|
|
10
|
-
request.expect(:original_url, 'original_url')
|
|
11
|
-
request.expect(:query_parameters, 'query_parameters')
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
class WithRails < SerializationContextTest
|
|
15
|
-
setup do
|
|
16
|
-
require 'rails'
|
|
17
|
-
require 'active_model_serializers'
|
|
18
|
-
make_basic_app
|
|
19
|
-
@context = ActiveModelSerializers::SerializationContext.new(create_request)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
test 'create context with request url and query parameters' do
|
|
23
|
-
assert_equal @context.request_url, 'original_url'
|
|
24
|
-
assert_equal @context.query_parameters, 'query_parameters'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
test 'url_helpers is set up for Rails url_helpers' do
|
|
28
|
-
assert_equal Module, ActiveModelSerializers::SerializationContext.url_helpers.class
|
|
29
|
-
assert ActiveModelSerializers::SerializationContext.url_helpers.respond_to? :url_for
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
test 'default_url_options returns Rails.application.routes.default_url_options' do
|
|
33
|
-
assert_equal Rails.application.routes.default_url_options,
|
|
34
|
-
ActiveModelSerializers::SerializationContext.default_url_options
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
class WithoutRails < SerializationContextTest
|
|
39
|
-
setup do
|
|
40
|
-
require 'active_model_serializers/serialization_context'
|
|
41
|
-
@context = ActiveModelSerializers::SerializationContext.new(create_request)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
test 'create context with request url and query parameters' do
|
|
45
|
-
assert_equal @context.request_url, 'original_url'
|
|
46
|
-
assert_equal @context.query_parameters, 'query_parameters'
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
test 'url_helpers is a module when Rails is not present' do
|
|
50
|
-
assert_equal Module, ActiveModelSerializers::SerializationContext.url_helpers.class
|
|
51
|
-
refute ActiveModelSerializers::SerializationContext.url_helpers.respond_to? :url_for
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
test 'default_url_options return a Hash' do
|
|
55
|
-
assert Hash, ActiveModelSerializers::SerializationContext.default_url_options.class
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|