active_model_serializers 0.10.9 → 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 +4 -4
- data/CHANGELOG.md +41 -2
- data/README.md +18 -19
- data/lib/action_controller/serialization.rb +9 -1
- data/lib/active_model/serializer/collection_serializer.rb +11 -2
- data/lib/active_model/serializer/concerns/caching.rb +2 -1
- data/lib/active_model/serializer/fieldset.rb +1 -1
- data/lib/active_model/serializer/reflection.rb +4 -4
- data/lib/active_model/serializer/version.rb +1 -1
- data/lib/active_model/serializer.rb +13 -4
- data/lib/active_model_serializers/adapter/attributes.rb +21 -0
- data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +5 -1
- data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +1 -1
- data/lib/active_model_serializers/model/caching.rb +26 -0
- metadata +20 -292
- data/.github/ISSUE_TEMPLATE.md +0 -29
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -15
- data/.gitignore +0 -35
- data/.rubocop.yml +0 -109
- data/.simplecov +0 -110
- data/.travis.yml +0 -63
- data/CODE_OF_CONDUCT.md +0 -74
- data/CONTRIBUTING.md +0 -105
- data/Gemfile +0 -74
- data/Rakefile +0 -76
- data/active_model_serializers.gemspec +0 -64
- data/appveyor.yml +0 -28
- data/bin/bench +0 -171
- data/bin/bench_regression +0 -316
- data/bin/rubocop +0 -38
- data/bin/serve_benchmark +0 -39
- data/docs/README.md +0 -41
- data/docs/STYLE.md +0 -58
- data/docs/general/adapters.md +0 -269
- data/docs/general/caching.md +0 -58
- data/docs/general/configuration_options.md +0 -185
- data/docs/general/deserialization.md +0 -100
- data/docs/general/fields.md +0 -31
- 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 -21
- data/docs/general/rendering.md +0 -293
- data/docs/general/serializers.md +0 -495
- data/docs/how-open-source-maintained.jpg +0 -0
- data/docs/howto/add_pagination_links.md +0 -138
- data/docs/howto/add_relationship_links.md +0 -140
- data/docs/howto/add_root_key.md +0 -62
- data/docs/howto/grape_integration.md +0 -42
- data/docs/howto/outside_controller_use.md +0 -66
- data/docs/howto/passing_arbitrary_options.md +0 -27
- data/docs/howto/serialize_poro.md +0 -73
- data/docs/howto/test.md +0 -154
- data/docs/howto/upgrade_from_0_8_to_0_10.md +0 -265
- data/docs/integrations/ember-and-json-api.md +0 -147
- 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/test/action_controller/adapter_selector_test.rb +0 -64
- data/test/action_controller/explicit_serializer_test.rb +0 -137
- data/test/action_controller/json/include_test.rb +0 -248
- data/test/action_controller/json_api/deserialization_test.rb +0 -114
- data/test/action_controller/json_api/errors_test.rb +0 -42
- data/test/action_controller/json_api/fields_test.rb +0 -68
- data/test/action_controller/json_api/linked_test.rb +0 -204
- data/test/action_controller/json_api/pagination_test.rb +0 -126
- data/test/action_controller/json_api/transform_test.rb +0 -191
- data/test/action_controller/lookup_proc_test.rb +0 -51
- data/test/action_controller/namespace_lookup_test.rb +0 -234
- data/test/action_controller/serialization_scope_name_test.rb +0 -237
- data/test/action_controller/serialization_test.rb +0 -480
- data/test/active_model_serializers/adapter_for_test.rb +0 -210
- data/test/active_model_serializers/json_pointer_test.rb +0 -24
- data/test/active_model_serializers/logging_test.rb +0 -79
- data/test/active_model_serializers/model_test.rb +0 -144
- data/test/active_model_serializers/railtie_test_isolated.rb +0 -70
- data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +0 -163
- data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -73
- data/test/active_model_serializers/test/schema_test.rb +0 -133
- data/test/active_model_serializers/test/serializer_test.rb +0 -64
- data/test/active_record_test.rb +0 -11
- data/test/adapter/attributes_test.rb +0 -42
- data/test/adapter/deprecation_test.rb +0 -102
- data/test/adapter/json/belongs_to_test.rb +0 -47
- data/test/adapter/json/collection_test.rb +0 -106
- data/test/adapter/json/has_many_test.rb +0 -55
- data/test/adapter/json/transform_test.rb +0 -95
- data/test/adapter/json_api/belongs_to_test.rb +0 -157
- data/test/adapter/json_api/collection_test.rb +0 -98
- data/test/adapter/json_api/errors_test.rb +0 -78
- data/test/adapter/json_api/fields_test.rb +0 -98
- data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -98
- data/test/adapter/json_api/has_many_test.rb +0 -175
- data/test/adapter/json_api/has_one_test.rb +0 -82
- data/test/adapter/json_api/include_data_if_sideloaded_test.rb +0 -215
- data/test/adapter/json_api/json_api_test.rb +0 -35
- data/test/adapter/json_api/linked_test.rb +0 -415
- data/test/adapter/json_api/links_test.rb +0 -112
- data/test/adapter/json_api/pagination_links_test.rb +0 -208
- data/test/adapter/json_api/parse_test.rb +0 -139
- data/test/adapter/json_api/relationship_test.rb +0 -399
- data/test/adapter/json_api/resource_meta_test.rb +0 -102
- data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -84
- data/test/adapter/json_api/transform_test.rb +0 -514
- data/test/adapter/json_api/type_test.rb +0 -195
- data/test/adapter/json_test.rb +0 -48
- data/test/adapter/null_test.rb +0 -24
- data/test/adapter/polymorphic_test.rb +0 -220
- data/test/adapter_test.rb +0 -69
- data/test/array_serializer_test.rb +0 -24
- data/test/benchmark/app.rb +0 -67
- data/test/benchmark/benchmarking_support.rb +0 -69
- data/test/benchmark/bm_active_record.rb +0 -83
- data/test/benchmark/bm_adapter.rb +0 -40
- data/test/benchmark/bm_caching.rb +0 -121
- data/test/benchmark/bm_lookup_chain.rb +0 -85
- data/test/benchmark/bm_transform.rb +0 -47
- data/test/benchmark/config.ru +0 -3
- data/test/benchmark/controllers.rb +0 -85
- data/test/benchmark/fixtures.rb +0 -221
- data/test/cache_test.rb +0 -717
- data/test/collection_serializer_test.rb +0 -129
- data/test/fixtures/active_record.rb +0 -115
- data/test/fixtures/poro.rb +0 -227
- data/test/generators/scaffold_controller_generator_test.rb +0 -26
- data/test/generators/serializer_generator_test.rb +0 -77
- data/test/grape_test.rb +0 -198
- data/test/lint_test.rb +0 -51
- data/test/logger_test.rb +0 -22
- data/test/poro_test.rb +0 -11
- data/test/serializable_resource_test.rb +0 -81
- data/test/serializers/association_macros_test.rb +0 -39
- data/test/serializers/associations_test.rb +0 -520
- data/test/serializers/attribute_test.rb +0 -155
- data/test/serializers/attributes_test.rb +0 -54
- data/test/serializers/caching_configuration_test_isolated.rb +0 -172
- data/test/serializers/configuration_test.rb +0 -34
- data/test/serializers/fieldset_test.rb +0 -16
- data/test/serializers/meta_test.rb +0 -204
- data/test/serializers/options_test.rb +0 -34
- data/test/serializers/read_attribute_for_serialization_test.rb +0 -81
- data/test/serializers/reflection_test.rb +0 -481
- data/test/serializers/root_test.rb +0 -23
- data/test/serializers/serialization_test.rb +0 -57
- data/test/serializers/serializer_for_test.rb +0 -138
- data/test/serializers/serializer_for_with_namespace_test.rb +0 -90
- data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
- data/test/support/isolated_unit.rb +0 -86
- data/test/support/rails5_shims.rb +0 -55
- data/test/support/rails_app.rb +0 -40
- 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 -81
- data/test/test_helper.rb +0 -72
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
module ActiveModel
|
|
6
|
-
class Serializer
|
|
7
|
-
class SerializerForWithNamespaceTest < ActiveSupport::TestCase
|
|
8
|
-
class Book < ::Model
|
|
9
|
-
attributes :title, :author_name
|
|
10
|
-
associations :publisher, :pages
|
|
11
|
-
end
|
|
12
|
-
class Page < ::Model; attributes :number, :text end
|
|
13
|
-
class Publisher < ::Model; attributes :name end
|
|
14
|
-
|
|
15
|
-
module Api
|
|
16
|
-
module V3
|
|
17
|
-
class BookSerializer < ActiveModel::Serializer
|
|
18
|
-
attributes :title, :author_name
|
|
19
|
-
|
|
20
|
-
has_many :pages
|
|
21
|
-
belongs_to :publisher
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
class PageSerializer < ActiveModel::Serializer
|
|
25
|
-
attributes :number, :text
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
class PublisherSerializer < ActiveModel::Serializer
|
|
29
|
-
attributes :name
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
class BookSerializer < ActiveModel::Serializer
|
|
35
|
-
attributes :title, :author_name
|
|
36
|
-
end
|
|
37
|
-
test 'resource without a namespace' do
|
|
38
|
-
book = Book.new(title: 'A Post', author_name: 'hello')
|
|
39
|
-
|
|
40
|
-
# TODO: this should be able to pull up this serializer without explicitly specifying the serializer
|
|
41
|
-
# currently, with no options, it still uses the Api::V3 serializer
|
|
42
|
-
result = ActiveModelSerializers::SerializableResource.new(book, serializer: BookSerializer).serializable_hash
|
|
43
|
-
|
|
44
|
-
expected = { title: 'A Post', author_name: 'hello' }
|
|
45
|
-
assert_equal expected, result
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
test 'resource with namespace' do
|
|
49
|
-
book = Book.new(title: 'A Post', author_name: 'hi')
|
|
50
|
-
|
|
51
|
-
result = ActiveModelSerializers::SerializableResource.new(book, namespace: Api::V3).serializable_hash
|
|
52
|
-
|
|
53
|
-
expected = { title: 'A Post', author_name: 'hi', pages: nil, publisher: nil }
|
|
54
|
-
assert_equal expected, result
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
test 'has_many with nested serializer under the namespace' do
|
|
58
|
-
page = Page.new(number: 1, text: 'hello')
|
|
59
|
-
book = Book.new(title: 'A Post', author_name: 'hi', pages: [page])
|
|
60
|
-
|
|
61
|
-
result = ActiveModelSerializers::SerializableResource.new(book, namespace: Api::V3).serializable_hash
|
|
62
|
-
|
|
63
|
-
expected = {
|
|
64
|
-
title: 'A Post', author_name: 'hi',
|
|
65
|
-
publisher: nil,
|
|
66
|
-
pages: [{
|
|
67
|
-
number: 1, text: 'hello'
|
|
68
|
-
}]
|
|
69
|
-
}
|
|
70
|
-
assert_equal expected, result
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
test 'belongs_to with nested serializer under the namespace' do
|
|
74
|
-
publisher = Publisher.new(name: 'Disney')
|
|
75
|
-
book = Book.new(title: 'A Post', author_name: 'hi', publisher: publisher)
|
|
76
|
-
|
|
77
|
-
result = ActiveModelSerializers::SerializableResource.new(book, namespace: Api::V3).serializable_hash
|
|
78
|
-
|
|
79
|
-
expected = {
|
|
80
|
-
title: 'A Post', author_name: 'hi',
|
|
81
|
-
pages: nil,
|
|
82
|
-
publisher: {
|
|
83
|
-
name: 'Disney'
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
assert_equal expected, result
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# https://github.com/rails/rails/blob/v5.0.0.beta1/railties/test/isolation/abstract_unit.rb
|
|
4
|
-
|
|
5
|
-
# Usage Example:
|
|
6
|
-
#
|
|
7
|
-
# require 'support/isolated_unit'
|
|
8
|
-
#
|
|
9
|
-
# class RailtieTest < ActiveSupport::TestCase
|
|
10
|
-
# include ActiveSupport::Testing::Isolation
|
|
11
|
-
#
|
|
12
|
-
# class WithRailsDefinedOnLoad < RailtieTest
|
|
13
|
-
# setup do
|
|
14
|
-
# require 'rails'
|
|
15
|
-
# require 'active_model_serializers'
|
|
16
|
-
# make_basic_app
|
|
17
|
-
# end
|
|
18
|
-
#
|
|
19
|
-
# # some tests
|
|
20
|
-
# end
|
|
21
|
-
#
|
|
22
|
-
# class WithoutRailsDefinedOnLoad < RailtieTest
|
|
23
|
-
# setup do
|
|
24
|
-
# require 'active_model_serializers'
|
|
25
|
-
# make_basic_app
|
|
26
|
-
# end
|
|
27
|
-
#
|
|
28
|
-
# # some tests
|
|
29
|
-
# end
|
|
30
|
-
# end
|
|
31
|
-
#
|
|
32
|
-
# Note:
|
|
33
|
-
# It is important to keep this file as light as possible
|
|
34
|
-
# the goal for tests that require this is to test booting up
|
|
35
|
-
# rails from an empty state, so anything added here could
|
|
36
|
-
# hide potential failures
|
|
37
|
-
#
|
|
38
|
-
# It is also good to know what is the bare minimum to get
|
|
39
|
-
# Rails booted up.
|
|
40
|
-
require 'bundler/setup' unless defined?(Bundler)
|
|
41
|
-
require 'active_support'
|
|
42
|
-
require 'active_support/core_ext/string/access'
|
|
43
|
-
|
|
44
|
-
# These files do not require any others and are needed
|
|
45
|
-
# to run the tests
|
|
46
|
-
require 'active_support/testing/autorun'
|
|
47
|
-
require 'active_support/testing/isolation'
|
|
48
|
-
|
|
49
|
-
module TestHelpers
|
|
50
|
-
module Generation
|
|
51
|
-
module_function
|
|
52
|
-
|
|
53
|
-
# Make a very basic app, without creating the whole directory structure.
|
|
54
|
-
# Is faster and simpler than generating a Rails app in a temp directory
|
|
55
|
-
def make_basic_app
|
|
56
|
-
require 'rails'
|
|
57
|
-
require 'action_controller/railtie'
|
|
58
|
-
|
|
59
|
-
app = Class.new(Rails::Application) do
|
|
60
|
-
config.eager_load = false
|
|
61
|
-
config.session_store :cookie_store, key: '_myapp_session'
|
|
62
|
-
config.active_support.deprecation = :log
|
|
63
|
-
config.active_support.test_order = :parallel
|
|
64
|
-
ActiveSupport::TestCase.respond_to?(:test_order=) && ActiveSupport::TestCase.test_order = :parallel
|
|
65
|
-
config.root = File.dirname(__FILE__)
|
|
66
|
-
config.log_level = :info
|
|
67
|
-
# Set a fake logger to avoid creating the log directory automatically
|
|
68
|
-
fake_logger = Logger.new(nil)
|
|
69
|
-
config.logger = fake_logger
|
|
70
|
-
Rails.application.routes.default_url_options = { host: 'example.com' }
|
|
71
|
-
end
|
|
72
|
-
def app.name; 'IsolatedRailsApp'; end # rubocop:disable Style/SingleLineMethods
|
|
73
|
-
app.respond_to?(:secrets) && app.secrets.secret_key_base = '3b7cd727ee24e8444053437c36cc66c4'
|
|
74
|
-
|
|
75
|
-
@app = app
|
|
76
|
-
yield @app if block_given?
|
|
77
|
-
@app.initialize!
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
module ActiveSupport
|
|
83
|
-
class TestCase
|
|
84
|
-
include TestHelpers::Generation
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Rails5Shims
|
|
4
|
-
module ControllerTests
|
|
5
|
-
# https://github.com/rails/rails/blob/b217354/actionpack/lib/action_controller/test_case.rb
|
|
6
|
-
REQUEST_KWARGS = [:params, :headers, :session, :flash, :method, :body, :xhr].freeze
|
|
7
|
-
|
|
8
|
-
def get(path, *args)
|
|
9
|
-
fold_kwargs!(args)
|
|
10
|
-
super
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def post(path, *args)
|
|
14
|
-
fold_kwargs!(args)
|
|
15
|
-
super
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def patch(path, *args)
|
|
19
|
-
fold_kwargs!(args)
|
|
20
|
-
super
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def put(path, *args)
|
|
24
|
-
fold_kwargs!(args)
|
|
25
|
-
super
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Fold kwargs from test request into args
|
|
29
|
-
# Band-aid for DEPRECATION WARNING
|
|
30
|
-
def fold_kwargs!(args)
|
|
31
|
-
hash = args && args[0]
|
|
32
|
-
return unless hash.respond_to?(:key)
|
|
33
|
-
Rails5Shims::ControllerTests::REQUEST_KWARGS.each do |kwarg|
|
|
34
|
-
next unless hash.key?(kwarg)
|
|
35
|
-
value = hash.delete(kwarg)
|
|
36
|
-
if value.is_a? String
|
|
37
|
-
args.insert(0, value)
|
|
38
|
-
else
|
|
39
|
-
hash.merge! value
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Uncomment for debugging where the kwargs warnings come from
|
|
45
|
-
# def non_kwarg_request_warning
|
|
46
|
-
# super.tap do
|
|
47
|
-
# STDOUT.puts caller[2..3]
|
|
48
|
-
# end
|
|
49
|
-
# end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
if Rails::VERSION::MAJOR < 5
|
|
53
|
-
ActionController::TestCase.send :include, Rails5Shims::ControllerTests
|
|
54
|
-
ActionDispatch::IntegrationTest.send :include, Rails5Shims::ControllerTests
|
|
55
|
-
end
|
data/test/support/rails_app.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'support/isolated_unit'
|
|
4
|
-
module ActiveModelSerializers
|
|
5
|
-
RailsApplication = TestHelpers::Generation.make_basic_app do |app|
|
|
6
|
-
app.configure do
|
|
7
|
-
config.secret_key_base = 'abc123'
|
|
8
|
-
config.active_support.test_order = :random
|
|
9
|
-
config.action_controller.perform_caching = true
|
|
10
|
-
config.action_controller.cache_store = :memory_store
|
|
11
|
-
|
|
12
|
-
config.filter_parameters += [:password]
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
app.routes.default_url_options = { host: 'example.com' }
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
Routes = ActionDispatch::Routing::RouteSet.new
|
|
20
|
-
Routes.draw do
|
|
21
|
-
get ':controller(/:action(/:id))'
|
|
22
|
-
get ':controller(/:action)'
|
|
23
|
-
end
|
|
24
|
-
ActionController::Base.send :include, Routes.url_helpers
|
|
25
|
-
ActionController::TestCase.class_eval do
|
|
26
|
-
def setup
|
|
27
|
-
@routes = Routes
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
|
|
32
|
-
# ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
|
|
33
|
-
#
|
|
34
|
-
# Load fixtures from the engine
|
|
35
|
-
# if ActiveSupport::TestCase.respond_to?(:fixture_path=)
|
|
36
|
-
# ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
|
|
37
|
-
# ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
|
|
38
|
-
# ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + "/files"
|
|
39
|
-
# ActiveSupport::TestCase.fixtures :all
|
|
40
|
-
# 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
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module SerializationTesting
|
|
4
|
-
def config
|
|
5
|
-
ActiveModelSerializers.config
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
private
|
|
9
|
-
|
|
10
|
-
def generate_cached_serializer(obj)
|
|
11
|
-
ActiveModelSerializers::SerializableResource.new(obj).to_json
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def with_namespace_separator(separator)
|
|
15
|
-
original_separator = ActiveModelSerializers.config.jsonapi_namespace_separator
|
|
16
|
-
ActiveModelSerializers.config.jsonapi_namespace_separator = separator
|
|
17
|
-
yield
|
|
18
|
-
ensure
|
|
19
|
-
ActiveModelSerializers.config.jsonapi_namespace_separator = original_separator
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def with_prepended_lookup(lookup_proc)
|
|
23
|
-
original_lookup = ActiveModelSerializers.config.serializer_lookup_cahin
|
|
24
|
-
ActiveModelSerializers.config.serializer_lookup_chain.unshift lookup_proc
|
|
25
|
-
yield
|
|
26
|
-
ensure
|
|
27
|
-
ActiveModelSerializers.config.serializer_lookup_cahin = original_lookup
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# Aliased as :with_configured_adapter to clarify that
|
|
31
|
-
# this method tests the configured adapter.
|
|
32
|
-
# When not testing configuration, it may be preferable
|
|
33
|
-
# to pass in the +adapter+ option to <tt>ActiveModelSerializers::SerializableResource</tt>.
|
|
34
|
-
# e.g ActiveModelSerializers::SerializableResource.new(resource, adapter: :json_api)
|
|
35
|
-
def with_adapter(adapter)
|
|
36
|
-
old_adapter = ActiveModelSerializers.config.adapter
|
|
37
|
-
ActiveModelSerializers.config.adapter = adapter
|
|
38
|
-
yield
|
|
39
|
-
ensure
|
|
40
|
-
ActiveModelSerializers.config.adapter = old_adapter
|
|
41
|
-
end
|
|
42
|
-
alias with_configured_adapter with_adapter
|
|
43
|
-
|
|
44
|
-
def with_config(hash)
|
|
45
|
-
old_config = config.dup
|
|
46
|
-
ActiveModelSerializers.config.update(hash)
|
|
47
|
-
yield
|
|
48
|
-
ensure
|
|
49
|
-
ActiveModelSerializers.config.replace(old_config)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def with_jsonapi_inflection(inflection)
|
|
53
|
-
original_inflection = ActiveModelSerializers.config.jsonapi_resource_type
|
|
54
|
-
ActiveModelSerializers.config.jsonapi_resource_type = inflection
|
|
55
|
-
yield
|
|
56
|
-
ensure
|
|
57
|
-
ActiveModelSerializers.config.jsonapi_resource_type = original_inflection
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def with_serializer_lookup_disabled
|
|
61
|
-
original_serializer_lookup = ActiveModelSerializers.config.serializer_lookup_enabled
|
|
62
|
-
ActiveModelSerializers.config.serializer_lookup_enabled = false
|
|
63
|
-
yield
|
|
64
|
-
ensure
|
|
65
|
-
ActiveModelSerializers.config.serializer_lookup_enabled = original_serializer_lookup
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def serializable(resource, options = {})
|
|
69
|
-
ActiveModelSerializers::SerializableResource.new(resource, options)
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
module Minitest
|
|
74
|
-
class Test
|
|
75
|
-
def before_setup
|
|
76
|
-
ActionController::Base.cache_store.clear
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
include SerializationTesting
|
|
80
|
-
end
|
|
81
|
-
end
|
data/test/test_helper.rb
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# Configure Rails Environment
|
|
4
|
-
ENV['RAILS_ENV'] = 'test'
|
|
5
|
-
require 'bundler/setup'
|
|
6
|
-
|
|
7
|
-
begin
|
|
8
|
-
require 'simplecov'
|
|
9
|
-
AppCoverage.start
|
|
10
|
-
rescue LoadError
|
|
11
|
-
STDERR.puts 'Running without SimpleCov'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
require 'pry'
|
|
15
|
-
require 'timecop'
|
|
16
|
-
require 'rails'
|
|
17
|
-
require 'action_controller'
|
|
18
|
-
require 'action_controller/test_case'
|
|
19
|
-
require 'action_controller/railtie'
|
|
20
|
-
require 'active_model_serializers'
|
|
21
|
-
# For now, we only restrict the options to serializable_hash/as_json/to_json
|
|
22
|
-
# in tests, to ensure developers don't add any unsupported options.
|
|
23
|
-
# There's no known benefit, at this time, to having the filtering run in
|
|
24
|
-
# production when the excluded options would simply not be used.
|
|
25
|
-
#
|
|
26
|
-
# However, for documentation purposes, the constant
|
|
27
|
-
# ActiveModel::Serializer::SERIALIZABLE_HASH_VALID_KEYS is defined
|
|
28
|
-
# in the Serializer.
|
|
29
|
-
ActiveModelSerializers::Adapter::Base.class_eval do
|
|
30
|
-
alias_method :original_serialization_options, :serialization_options
|
|
31
|
-
|
|
32
|
-
def serialization_options(options)
|
|
33
|
-
original_serialization_options(options)
|
|
34
|
-
.slice(*ActiveModel::Serializer::SERIALIZABLE_HASH_VALID_KEYS)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
require 'fileutils'
|
|
38
|
-
FileUtils.mkdir_p(File.expand_path('../../tmp/cache', __FILE__))
|
|
39
|
-
|
|
40
|
-
gem 'minitest'
|
|
41
|
-
require 'minitest'
|
|
42
|
-
require 'minitest/autorun'
|
|
43
|
-
Minitest.backtrace_filter = Minitest::BacktraceFilter.new
|
|
44
|
-
|
|
45
|
-
module TestHelper
|
|
46
|
-
module_function
|
|
47
|
-
|
|
48
|
-
def silence_warnings
|
|
49
|
-
original_verbose = $VERBOSE
|
|
50
|
-
$VERBOSE = nil
|
|
51
|
-
yield
|
|
52
|
-
ensure
|
|
53
|
-
$VERBOSE = original_verbose
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
require 'support/rails_app'
|
|
58
|
-
|
|
59
|
-
# require "rails/test_help"
|
|
60
|
-
|
|
61
|
-
require 'support/serialization_testing'
|
|
62
|
-
|
|
63
|
-
require 'support/rails5_shims'
|
|
64
|
-
|
|
65
|
-
require 'fixtures/active_record'
|
|
66
|
-
|
|
67
|
-
require 'fixtures/poro'
|
|
68
|
-
|
|
69
|
-
ActiveSupport.on_load(:action_controller) do
|
|
70
|
-
$action_controller_logger = ActiveModelSerializers.logger
|
|
71
|
-
ActiveModelSerializers.logger = Logger.new(IO::NULL)
|
|
72
|
-
end
|