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,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,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
|
data/test/support/rails_app.rb
DELETED
|
@@ -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,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
|
-
}
|