active_model_serializers 0.10.6 → 0.10.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +114 -1
  3. data/README.md +21 -24
  4. data/lib/action_controller/serialization.rb +11 -1
  5. data/lib/active_model/serializable_resource.rb +2 -0
  6. data/lib/active_model/serializer/adapter/attributes.rb +2 -0
  7. data/lib/active_model/serializer/adapter/base.rb +2 -0
  8. data/lib/active_model/serializer/adapter/json.rb +2 -0
  9. data/lib/active_model/serializer/adapter/json_api.rb +2 -0
  10. data/lib/active_model/serializer/adapter/null.rb +2 -0
  11. data/lib/active_model/serializer/adapter.rb +2 -0
  12. data/lib/active_model/serializer/array_serializer.rb +2 -0
  13. data/lib/active_model/serializer/association.rb +2 -0
  14. data/lib/active_model/serializer/attribute.rb +2 -0
  15. data/lib/active_model/serializer/belongs_to_reflection.rb +2 -0
  16. data/lib/active_model/serializer/collection_serializer.rb +17 -5
  17. data/lib/active_model/serializer/concerns/caching.rb +7 -2
  18. data/lib/active_model/serializer/error_serializer.rb +2 -0
  19. data/lib/active_model/serializer/errors_serializer.rb +2 -0
  20. data/lib/active_model/serializer/field.rb +2 -0
  21. data/lib/active_model/serializer/fieldset.rb +3 -1
  22. data/lib/active_model/serializer/has_many_reflection.rb +2 -0
  23. data/lib/active_model/serializer/has_one_reflection.rb +2 -0
  24. data/lib/active_model/serializer/lazy_association.rb +6 -2
  25. data/lib/active_model/serializer/link.rb +23 -0
  26. data/lib/active_model/serializer/lint.rb +2 -0
  27. data/lib/active_model/serializer/null.rb +2 -0
  28. data/lib/active_model/serializer/reflection.rb +10 -5
  29. data/lib/active_model/serializer/version.rb +3 -1
  30. data/lib/active_model/serializer.rb +37 -19
  31. data/lib/active_model_serializers/adapter/attributes.rb +23 -0
  32. data/lib/active_model_serializers/adapter/base.rb +2 -0
  33. data/lib/active_model_serializers/adapter/json.rb +2 -0
  34. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +3 -1
  35. data/lib/active_model_serializers/adapter/json_api/error.rb +2 -0
  36. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +2 -0
  37. data/lib/active_model_serializers/adapter/json_api/link.rb +2 -0
  38. data/lib/active_model_serializers/adapter/json_api/meta.rb +2 -0
  39. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +45 -20
  40. data/lib/active_model_serializers/adapter/json_api/relationship.rb +18 -4
  41. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +33 -25
  42. data/lib/active_model_serializers/adapter/json_api.rb +14 -9
  43. data/lib/active_model_serializers/adapter/null.rb +2 -0
  44. data/lib/active_model_serializers/adapter.rb +3 -1
  45. data/lib/active_model_serializers/callbacks.rb +2 -0
  46. data/lib/active_model_serializers/deprecate.rb +2 -0
  47. data/lib/active_model_serializers/deserialization.rb +2 -0
  48. data/lib/active_model_serializers/json_pointer.rb +2 -0
  49. data/lib/active_model_serializers/logging.rb +2 -0
  50. data/lib/active_model_serializers/lookup_chain.rb +2 -0
  51. data/lib/active_model_serializers/model/caching.rb +26 -0
  52. data/lib/active_model_serializers/model.rb +2 -0
  53. data/lib/active_model_serializers/railtie.rb +4 -0
  54. data/lib/active_model_serializers/register_jsonapi_renderer.rb +2 -0
  55. data/lib/active_model_serializers/serializable_resource.rb +4 -2
  56. data/lib/active_model_serializers/serialization_context.rb +2 -0
  57. data/lib/active_model_serializers/test/schema.rb +2 -0
  58. data/lib/active_model_serializers/test/serializer.rb +2 -0
  59. data/lib/active_model_serializers/test.rb +2 -0
  60. data/lib/active_model_serializers.rb +21 -11
  61. data/lib/generators/rails/resource_override.rb +2 -0
  62. data/lib/generators/rails/serializer_generator.rb +2 -0
  63. data/lib/grape/active_model_serializers.rb +2 -0
  64. data/lib/grape/formatters/active_model_serializers.rb +2 -0
  65. data/lib/grape/helpers/active_model_serializers.rb +2 -0
  66. data/lib/tasks/rubocop.rake +2 -0
  67. metadata +43 -298
  68. data/.github/ISSUE_TEMPLATE.md +0 -29
  69. data/.github/PULL_REQUEST_TEMPLATE.md +0 -15
  70. data/.gitignore +0 -35
  71. data/.rubocop.yml +0 -105
  72. data/.simplecov +0 -110
  73. data/.travis.yml +0 -55
  74. data/CODE_OF_CONDUCT.md +0 -74
  75. data/CONTRIBUTING.md +0 -105
  76. data/Gemfile +0 -56
  77. data/Rakefile +0 -74
  78. data/active_model_serializers.gemspec +0 -63
  79. data/appveyor.yml +0 -30
  80. data/bin/bench +0 -171
  81. data/bin/bench_regression +0 -316
  82. data/bin/rubocop +0 -38
  83. data/bin/serve_benchmark +0 -39
  84. data/docs/README.md +0 -41
  85. data/docs/STYLE.md +0 -58
  86. data/docs/general/adapters.md +0 -263
  87. data/docs/general/caching.md +0 -58
  88. data/docs/general/configuration_options.md +0 -169
  89. data/docs/general/deserialization.md +0 -100
  90. data/docs/general/fields.md +0 -31
  91. data/docs/general/getting_started.md +0 -133
  92. data/docs/general/instrumentation.md +0 -40
  93. data/docs/general/key_transforms.md +0 -40
  94. data/docs/general/logging.md +0 -21
  95. data/docs/general/rendering.md +0 -293
  96. data/docs/general/serializers.md +0 -480
  97. data/docs/how-open-source-maintained.jpg +0 -0
  98. data/docs/howto/add_pagination_links.md +0 -138
  99. data/docs/howto/add_relationship_links.md +0 -140
  100. data/docs/howto/add_root_key.md +0 -55
  101. data/docs/howto/grape_integration.md +0 -42
  102. data/docs/howto/outside_controller_use.md +0 -66
  103. data/docs/howto/passing_arbitrary_options.md +0 -27
  104. data/docs/howto/serialize_poro.md +0 -73
  105. data/docs/howto/test.md +0 -154
  106. data/docs/howto/upgrade_from_0_8_to_0_10.md +0 -265
  107. data/docs/integrations/ember-and-json-api.md +0 -147
  108. data/docs/integrations/grape.md +0 -19
  109. data/docs/jsonapi/errors.md +0 -56
  110. data/docs/jsonapi/schema/schema.json +0 -366
  111. data/docs/jsonapi/schema.md +0 -151
  112. data/docs/rfcs/0000-namespace.md +0 -106
  113. data/docs/rfcs/template.md +0 -15
  114. data/test/action_controller/adapter_selector_test.rb +0 -62
  115. data/test/action_controller/explicit_serializer_test.rb +0 -135
  116. data/test/action_controller/json/include_test.rb +0 -246
  117. data/test/action_controller/json_api/deserialization_test.rb +0 -112
  118. data/test/action_controller/json_api/errors_test.rb +0 -40
  119. data/test/action_controller/json_api/fields_test.rb +0 -66
  120. data/test/action_controller/json_api/linked_test.rb +0 -202
  121. data/test/action_controller/json_api/pagination_test.rb +0 -116
  122. data/test/action_controller/json_api/transform_test.rb +0 -189
  123. data/test/action_controller/lookup_proc_test.rb +0 -49
  124. data/test/action_controller/namespace_lookup_test.rb +0 -232
  125. data/test/action_controller/serialization_scope_name_test.rb +0 -235
  126. data/test/action_controller/serialization_test.rb +0 -472
  127. data/test/active_model_serializers/adapter_for_test.rb +0 -208
  128. data/test/active_model_serializers/json_pointer_test.rb +0 -22
  129. data/test/active_model_serializers/logging_test.rb +0 -77
  130. data/test/active_model_serializers/model_test.rb +0 -142
  131. data/test/active_model_serializers/railtie_test_isolated.rb +0 -68
  132. data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +0 -161
  133. data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -71
  134. data/test/active_model_serializers/test/schema_test.rb +0 -131
  135. data/test/active_model_serializers/test/serializer_test.rb +0 -62
  136. data/test/active_record_test.rb +0 -9
  137. data/test/adapter/attributes_test.rb +0 -40
  138. data/test/adapter/deprecation_test.rb +0 -100
  139. data/test/adapter/json/belongs_to_test.rb +0 -45
  140. data/test/adapter/json/collection_test.rb +0 -104
  141. data/test/adapter/json/has_many_test.rb +0 -53
  142. data/test/adapter/json/transform_test.rb +0 -93
  143. data/test/adapter/json_api/belongs_to_test.rb +0 -155
  144. data/test/adapter/json_api/collection_test.rb +0 -96
  145. data/test/adapter/json_api/errors_test.rb +0 -76
  146. data/test/adapter/json_api/fields_test.rb +0 -96
  147. data/test/adapter/json_api/has_many_embed_ids_test.rb +0 -43
  148. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -96
  149. data/test/adapter/json_api/has_many_test.rb +0 -173
  150. data/test/adapter/json_api/has_one_test.rb +0 -80
  151. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +0 -183
  152. data/test/adapter/json_api/json_api_test.rb +0 -33
  153. data/test/adapter/json_api/linked_test.rb +0 -413
  154. data/test/adapter/json_api/links_test.rb +0 -95
  155. data/test/adapter/json_api/pagination_links_test.rb +0 -193
  156. data/test/adapter/json_api/parse_test.rb +0 -137
  157. data/test/adapter/json_api/relationship_test.rb +0 -397
  158. data/test/adapter/json_api/resource_identifier_test.rb +0 -110
  159. data/test/adapter/json_api/resource_meta_test.rb +0 -100
  160. data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -82
  161. data/test/adapter/json_api/transform_test.rb +0 -512
  162. data/test/adapter/json_api/type_test.rb +0 -61
  163. data/test/adapter/json_test.rb +0 -46
  164. data/test/adapter/null_test.rb +0 -22
  165. data/test/adapter/polymorphic_test.rb +0 -171
  166. data/test/adapter_test.rb +0 -67
  167. data/test/array_serializer_test.rb +0 -22
  168. data/test/benchmark/app.rb +0 -65
  169. data/test/benchmark/benchmarking_support.rb +0 -67
  170. data/test/benchmark/bm_active_record.rb +0 -81
  171. data/test/benchmark/bm_adapter.rb +0 -38
  172. data/test/benchmark/bm_caching.rb +0 -119
  173. data/test/benchmark/bm_lookup_chain.rb +0 -83
  174. data/test/benchmark/bm_transform.rb +0 -45
  175. data/test/benchmark/config.ru +0 -3
  176. data/test/benchmark/controllers.rb +0 -83
  177. data/test/benchmark/fixtures.rb +0 -219
  178. data/test/cache_test.rb +0 -651
  179. data/test/collection_serializer_test.rb +0 -123
  180. data/test/fixtures/active_record.rb +0 -113
  181. data/test/fixtures/poro.rb +0 -225
  182. data/test/generators/scaffold_controller_generator_test.rb +0 -24
  183. data/test/generators/serializer_generator_test.rb +0 -75
  184. data/test/grape_test.rb +0 -196
  185. data/test/lint_test.rb +0 -49
  186. data/test/logger_test.rb +0 -20
  187. data/test/poro_test.rb +0 -9
  188. data/test/serializable_resource_test.rb +0 -79
  189. data/test/serializers/association_macros_test.rb +0 -37
  190. data/test/serializers/associations_test.rb +0 -424
  191. data/test/serializers/attribute_test.rb +0 -153
  192. data/test/serializers/attributes_test.rb +0 -52
  193. data/test/serializers/caching_configuration_test_isolated.rb +0 -170
  194. data/test/serializers/configuration_test.rb +0 -32
  195. data/test/serializers/fieldset_test.rb +0 -14
  196. data/test/serializers/meta_test.rb +0 -202
  197. data/test/serializers/options_test.rb +0 -32
  198. data/test/serializers/read_attribute_for_serialization_test.rb +0 -79
  199. data/test/serializers/reflection_test.rb +0 -427
  200. data/test/serializers/root_test.rb +0 -21
  201. data/test/serializers/serialization_test.rb +0 -55
  202. data/test/serializers/serializer_for_test.rb +0 -136
  203. data/test/serializers/serializer_for_with_namespace_test.rb +0 -88
  204. data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  205. data/test/support/isolated_unit.rb +0 -82
  206. data/test/support/rails5_shims.rb +0 -53
  207. data/test/support/rails_app.rb +0 -38
  208. data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  209. data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
  210. data/test/support/schemas/custom/show.json +0 -7
  211. data/test/support/schemas/hyper_schema.json +0 -93
  212. data/test/support/schemas/render_using_json_api.json +0 -43
  213. data/test/support/schemas/simple_json_pointers.json +0 -10
  214. data/test/support/serialization_testing.rb +0 -71
  215. data/test/test_helper.rb +0 -70
@@ -1,88 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class SerializerForWithNamespaceTest < ActiveSupport::TestCase
6
- class Book < ::Model
7
- attributes :title, :author_name
8
- associations :publisher, :pages
9
- end
10
- class Page < ::Model; attributes :number, :text end
11
- class Publisher < ::Model; attributes :name end
12
-
13
- module Api
14
- module V3
15
- class BookSerializer < ActiveModel::Serializer
16
- attributes :title, :author_name
17
-
18
- has_many :pages
19
- belongs_to :publisher
20
- end
21
-
22
- class PageSerializer < ActiveModel::Serializer
23
- attributes :number, :text
24
- end
25
-
26
- class PublisherSerializer < ActiveModel::Serializer
27
- attributes :name
28
- end
29
- end
30
- end
31
-
32
- class BookSerializer < ActiveModel::Serializer
33
- attributes :title, :author_name
34
- end
35
- test 'resource without a namespace' do
36
- book = Book.new(title: 'A Post', author_name: 'hello')
37
-
38
- # TODO: this should be able to pull up this serializer without explicitly specifying the serializer
39
- # currently, with no options, it still uses the Api::V3 serializer
40
- result = ActiveModelSerializers::SerializableResource.new(book, serializer: BookSerializer).serializable_hash
41
-
42
- expected = { title: 'A Post', author_name: 'hello' }
43
- assert_equal expected, result
44
- end
45
-
46
- test 'resource with namespace' do
47
- book = Book.new(title: 'A Post', author_name: 'hi')
48
-
49
- result = ActiveModelSerializers::SerializableResource.new(book, namespace: Api::V3).serializable_hash
50
-
51
- expected = { title: 'A Post', author_name: 'hi', pages: nil, publisher: nil }
52
- assert_equal expected, result
53
- end
54
-
55
- test 'has_many with nested serializer under the namespace' do
56
- page = Page.new(number: 1, text: 'hello')
57
- book = Book.new(title: 'A Post', author_name: 'hi', pages: [page])
58
-
59
- result = ActiveModelSerializers::SerializableResource.new(book, namespace: Api::V3).serializable_hash
60
-
61
- expected = {
62
- title: 'A Post', author_name: 'hi',
63
- publisher: nil,
64
- pages: [{
65
- number: 1, text: 'hello'
66
- }]
67
- }
68
- assert_equal expected, result
69
- end
70
-
71
- test 'belongs_to with nested serializer under the namespace' do
72
- publisher = Publisher.new(name: 'Disney')
73
- book = Book.new(title: 'A Post', author_name: 'hi', publisher: publisher)
74
-
75
- result = ActiveModelSerializers::SerializableResource.new(book, namespace: Api::V3).serializable_hash
76
-
77
- expected = {
78
- title: 'A Post', author_name: 'hi',
79
- pages: nil,
80
- publisher: {
81
- name: 'Disney'
82
- }
83
- }
84
- assert_equal expected, result
85
- end
86
- end
87
- end
88
- end
@@ -1,6 +0,0 @@
1
- {
2
- "properties": {
3
- "name" : { "type" : "string" },
4
- "description" : { "type" : "string" }
5
- }
6
- }
@@ -1,82 +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/autorun'
45
- require 'active_support/testing/isolation'
46
-
47
- module TestHelpers
48
- module Generation
49
- module_function
50
-
51
- # Make a very basic app, without creating the whole directory structure.
52
- # Is faster and simpler than generating a Rails app in a temp directory
53
- def make_basic_app
54
- require 'rails'
55
- require 'action_controller/railtie'
56
-
57
- @app = Class.new(Rails::Application) do
58
- config.eager_load = false
59
- config.session_store :cookie_store, key: '_myapp_session'
60
- config.active_support.deprecation = :log
61
- config.active_support.test_order = :parallel
62
- ActiveSupport::TestCase.respond_to?(:test_order=) && ActiveSupport::TestCase.test_order = :parallel
63
- config.root = File.dirname(__FILE__)
64
- config.log_level = :info
65
- # Set a fake logger to avoid creating the log directory automatically
66
- fake_logger = Logger.new(nil)
67
- config.logger = fake_logger
68
- Rails.application.routes.default_url_options = { host: 'example.com' }
69
- end
70
- @app.respond_to?(:secrets) && @app.secrets.secret_key_base = '3b7cd727ee24e8444053437c36cc66c4'
71
-
72
- yield @app if block_given?
73
- @app.initialize!
74
- end
75
- end
76
- end
77
-
78
- module ActiveSupport
79
- class TestCase
80
- include TestHelpers::Generation
81
- end
82
- end
@@ -1,53 +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, :headers, :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
- value = hash.delete(kwarg)
34
- if value.is_a? String
35
- args.insert(0, value)
36
- else
37
- hash.merge! value
38
- end
39
- end
40
- end
41
-
42
- # Uncomment for debugging where the kwargs warnings come from
43
- # def non_kwarg_request_warning
44
- # super.tap do
45
- # STDOUT.puts caller[2..3]
46
- # end
47
- # end
48
- end
49
- end
50
- if Rails::VERSION::MAJOR < 5
51
- ActionController::TestCase.send :include, Rails5Shims::ControllerTests
52
- ActionDispatch::IntegrationTest.send :include, Rails5Shims::ControllerTests
53
- end
@@ -1,38 +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
-
10
- config.filter_parameters += [:password]
11
- end
12
-
13
- app.routes.default_url_options = { host: 'example.com' }
14
- end
15
- end
16
-
17
- Routes = ActionDispatch::Routing::RouteSet.new
18
- Routes.draw do
19
- get ':controller(/:action(/:id))'
20
- get ':controller(/:action)'
21
- end
22
- ActionController::Base.send :include, Routes.url_helpers
23
- ActionController::TestCase.class_eval do
24
- def setup
25
- @routes = Routes
26
- end
27
- end
28
-
29
- # ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
30
- # ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
31
- #
32
- # Load fixtures from the engine
33
- # if ActiveSupport::TestCase.respond_to?(:fixture_path=)
34
- # ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
35
- # ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
36
- # ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + "/files"
37
- # ActiveSupport::TestCase.fixtures :all
38
- # end
@@ -1,6 +0,0 @@
1
- {
2
- "properties": {
3
- "name" : { "type" : "string" },
4
- "description" : { "type" : "string" }
5
- }
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "properties": {
3
- "name" : { "type" : "integer" },
4
- "description" : { "type" : "boolean" }
5
- }
6
- }
@@ -1,7 +0,0 @@
1
- {
2
- "id": "file://custom/show.json#",
3
- "properties": {
4
- "name" : { "type" : "string" },
5
- "description" : { "type" : "string" }
6
- }
7
- }
@@ -1,93 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-04/hyper-schema",
3
- "title": "Profile",
4
- "description": "Profile schema",
5
- "stability": "prototype",
6
- "strictProperties": true,
7
- "type": [
8
- "object"
9
- ],
10
- "definitions": {
11
- "name": {
12
- "description": "unique name of profile",
13
- "readOnly": true,
14
- "type": [
15
- "string"
16
- ]
17
- },
18
- "description": {
19
- "description": "description of profile",
20
- "readOnly": true,
21
- "type": [
22
- "string"
23
- ]
24
- },
25
- "identity": {
26
- "anyOf": [
27
- {
28
- "$ref": "/schemata/profile#/definitions/name"
29
- }
30
- ]
31
- }
32
- },
33
- "links": [
34
- {
35
- "description": "Create a new profile.",
36
- "href": "/profiles",
37
- "method": "POST",
38
- "rel": "create",
39
- "schema": {
40
- "properties": {
41
- },
42
- "type": [
43
- "object"
44
- ]
45
- },
46
- "title": "Create"
47
- },
48
- {
49
- "description": "Delete an existing profile.",
50
- "href": "/profiles/{(%2Fschemata%2Fprofile%23%2Fdefinitions%2Fidentity)}",
51
- "method": "DELETE",
52
- "rel": "destroy",
53
- "title": "Delete"
54
- },
55
- {
56
- "description": "Info for existing profile.",
57
- "href": "/profiles/{(%2Fschemata%2Fprofile%23%2Fdefinitions%2Fidentity)}",
58
- "method": "GET",
59
- "rel": "self",
60
- "title": "Info"
61
- },
62
- {
63
- "description": "List existing profiles.",
64
- "href": "/profiles",
65
- "method": "GET",
66
- "rel": "instances",
67
- "title": "List"
68
- },
69
- {
70
- "description": "Update an existing profile.",
71
- "href": "/profiles/{(%2Fschemata%2Fprofile%23%2Fdefinitions%2Fidentity)}",
72
- "method": "PATCH",
73
- "rel": "update",
74
- "schema": {
75
- "properties": {
76
- },
77
- "type": [
78
- "object"
79
- ]
80
- },
81
- "title": "Update"
82
- }
83
- ],
84
- "properties": {
85
- "name": {
86
- "$ref": "/schemata/profile#/definitions/name"
87
- },
88
- "description": {
89
- "$ref": "/schemata/profile#/definitions/description"
90
- }
91
- },
92
- "id": "/schemata/profile"
93
- }
@@ -1,43 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-04/schema#",
3
- "id": "",
4
- "type": "object",
5
- "properties": {
6
- "data": {
7
- "id": "/data",
8
- "type": "object",
9
- "properties": {
10
- "id": {
11
- "id": "/data/id",
12
- "type": "string"
13
- },
14
- "type": {
15
- "id": "/data/type",
16
- "type": "string"
17
- },
18
- "attributes": {
19
- "id": "/data/attributes",
20
- "type": "object",
21
- "properties": {
22
- "name": {
23
- "id": "/data/attributes/name",
24
- "type": "string"
25
- },
26
- "description": {
27
- "id": "/data/attributes/description",
28
- "type": "string"
29
- }
30
- }
31
- }
32
- },
33
- "required": [
34
- "id",
35
- "type",
36
- "attributes"
37
- ]
38
- }
39
- },
40
- "required": [
41
- "data"
42
- ]
43
- }
@@ -1,10 +0,0 @@
1
- {
2
- "properties": {
3
- "name": {
4
- "$ref": "file://custom/show.json#/properties/name"
5
- },
6
- "description": {
7
- "$ref": "file://custom/show.json#/properties/description"
8
- }
9
- }
10
- }
@@ -1,71 +0,0 @@
1
- module SerializationTesting
2
- def config
3
- ActiveModelSerializers.config
4
- end
5
-
6
- private
7
-
8
- def generate_cached_serializer(obj)
9
- ActiveModelSerializers::SerializableResource.new(obj).to_json
10
- end
11
-
12
- def with_namespace_separator(separator)
13
- original_separator = ActiveModelSerializers.config.jsonapi_namespace_separator
14
- ActiveModelSerializers.config.jsonapi_namespace_separator = separator
15
- yield
16
- ensure
17
- ActiveModelSerializers.config.jsonapi_namespace_separator = original_separator
18
- end
19
-
20
- def with_prepended_lookup(lookup_proc)
21
- original_lookup = ActiveModelSerializers.config.serializer_lookup_cahin
22
- ActiveModelSerializers.config.serializer_lookup_chain.unshift lookup_proc
23
- yield
24
- ensure
25
- ActiveModelSerializers.config.serializer_lookup_cahin = original_lookup
26
- end
27
-
28
- # Aliased as :with_configured_adapter to clarify that
29
- # this method tests the configured adapter.
30
- # When not testing configuration, it may be preferable
31
- # to pass in the +adapter+ option to <tt>ActiveModelSerializers::SerializableResource</tt>.
32
- # e.g ActiveModelSerializers::SerializableResource.new(resource, adapter: :json_api)
33
- def with_adapter(adapter)
34
- old_adapter = ActiveModelSerializers.config.adapter
35
- ActiveModelSerializers.config.adapter = adapter
36
- yield
37
- ensure
38
- ActiveModelSerializers.config.adapter = old_adapter
39
- end
40
- alias with_configured_adapter with_adapter
41
-
42
- def with_config(hash)
43
- old_config = config.dup
44
- ActiveModelSerializers.config.update(hash)
45
- yield
46
- ensure
47
- ActiveModelSerializers.config.replace(old_config)
48
- end
49
-
50
- def with_serializer_lookup_disabled
51
- original_serializer_lookup = ActiveModelSerializers.config.serializer_lookup_enabled
52
- ActiveModelSerializers.config.serializer_lookup_enabled = false
53
- yield
54
- ensure
55
- ActiveModelSerializers.config.serializer_lookup_enabled = original_serializer_lookup
56
- end
57
-
58
- def serializable(resource, options = {})
59
- ActiveModelSerializers::SerializableResource.new(resource, options)
60
- end
61
- end
62
-
63
- module Minitest
64
- class Test
65
- def before_setup
66
- ActionController::Base.cache_store.clear
67
- end
68
-
69
- include SerializationTesting
70
- end
71
- end
data/test/test_helper.rb DELETED
@@ -1,70 +0,0 @@
1
- # Configure Rails Environment
2
- ENV['RAILS_ENV'] = 'test'
3
- require 'bundler/setup'
4
-
5
- begin
6
- require 'simplecov'
7
- AppCoverage.start
8
- rescue LoadError
9
- STDERR.puts 'Running without SimpleCov'
10
- end
11
-
12
- require 'pry'
13
- require 'timecop'
14
- require 'rails'
15
- require 'action_controller'
16
- require 'action_controller/test_case'
17
- require 'action_controller/railtie'
18
- require 'active_model_serializers'
19
- # For now, we only restrict the options to serializable_hash/as_json/to_json
20
- # in tests, to ensure developers don't add any unsupported options.
21
- # There's no known benefit, at this time, to having the filtering run in
22
- # production when the excluded options would simply not be used.
23
- #
24
- # However, for documentation purposes, the constant
25
- # ActiveModel::Serializer::SERIALIZABLE_HASH_VALID_KEYS is defined
26
- # in the Serializer.
27
- ActiveModelSerializers::Adapter::Base.class_eval do
28
- alias_method :original_serialization_options, :serialization_options
29
-
30
- def serialization_options(options)
31
- original_serialization_options(options)
32
- .slice(*ActiveModel::Serializer::SERIALIZABLE_HASH_VALID_KEYS)
33
- end
34
- end
35
- require 'fileutils'
36
- FileUtils.mkdir_p(File.expand_path('../../tmp/cache', __FILE__))
37
-
38
- gem 'minitest'
39
- require 'minitest'
40
- require 'minitest/autorun'
41
- Minitest.backtrace_filter = Minitest::BacktraceFilter.new
42
-
43
- module TestHelper
44
- module_function
45
-
46
- def silence_warnings
47
- original_verbose = $VERBOSE
48
- $VERBOSE = nil
49
- yield
50
- ensure
51
- $VERBOSE = original_verbose
52
- end
53
- end
54
-
55
- require 'support/rails_app'
56
-
57
- # require "rails/test_help"
58
-
59
- require 'support/serialization_testing'
60
-
61
- require 'support/rails5_shims'
62
-
63
- require 'fixtures/active_record'
64
-
65
- require 'fixtures/poro'
66
-
67
- ActiveSupport.on_load(:action_controller) do
68
- $action_controller_logger = ActiveModelSerializers.logger
69
- ActiveModelSerializers.logger = Logger.new(IO::NULL)
70
- end