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.
Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -2
  3. data/README.md +18 -19
  4. data/lib/action_controller/serialization.rb +9 -1
  5. data/lib/active_model/serializer/collection_serializer.rb +11 -2
  6. data/lib/active_model/serializer/concerns/caching.rb +2 -1
  7. data/lib/active_model/serializer/fieldset.rb +1 -1
  8. data/lib/active_model/serializer/reflection.rb +4 -4
  9. data/lib/active_model/serializer/version.rb +1 -1
  10. data/lib/active_model/serializer.rb +13 -4
  11. data/lib/active_model_serializers/adapter/attributes.rb +21 -0
  12. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +5 -1
  13. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +1 -1
  14. data/lib/active_model_serializers/model/caching.rb +26 -0
  15. metadata +20 -292
  16. data/.github/ISSUE_TEMPLATE.md +0 -29
  17. data/.github/PULL_REQUEST_TEMPLATE.md +0 -15
  18. data/.gitignore +0 -35
  19. data/.rubocop.yml +0 -109
  20. data/.simplecov +0 -110
  21. data/.travis.yml +0 -63
  22. data/CODE_OF_CONDUCT.md +0 -74
  23. data/CONTRIBUTING.md +0 -105
  24. data/Gemfile +0 -74
  25. data/Rakefile +0 -76
  26. data/active_model_serializers.gemspec +0 -64
  27. data/appveyor.yml +0 -28
  28. data/bin/bench +0 -171
  29. data/bin/bench_regression +0 -316
  30. data/bin/rubocop +0 -38
  31. data/bin/serve_benchmark +0 -39
  32. data/docs/README.md +0 -41
  33. data/docs/STYLE.md +0 -58
  34. data/docs/general/adapters.md +0 -269
  35. data/docs/general/caching.md +0 -58
  36. data/docs/general/configuration_options.md +0 -185
  37. data/docs/general/deserialization.md +0 -100
  38. data/docs/general/fields.md +0 -31
  39. data/docs/general/getting_started.md +0 -133
  40. data/docs/general/instrumentation.md +0 -40
  41. data/docs/general/key_transforms.md +0 -40
  42. data/docs/general/logging.md +0 -21
  43. data/docs/general/rendering.md +0 -293
  44. data/docs/general/serializers.md +0 -495
  45. data/docs/how-open-source-maintained.jpg +0 -0
  46. data/docs/howto/add_pagination_links.md +0 -138
  47. data/docs/howto/add_relationship_links.md +0 -140
  48. data/docs/howto/add_root_key.md +0 -62
  49. data/docs/howto/grape_integration.md +0 -42
  50. data/docs/howto/outside_controller_use.md +0 -66
  51. data/docs/howto/passing_arbitrary_options.md +0 -27
  52. data/docs/howto/serialize_poro.md +0 -73
  53. data/docs/howto/test.md +0 -154
  54. data/docs/howto/upgrade_from_0_8_to_0_10.md +0 -265
  55. data/docs/integrations/ember-and-json-api.md +0 -147
  56. data/docs/integrations/grape.md +0 -19
  57. data/docs/jsonapi/errors.md +0 -56
  58. data/docs/jsonapi/schema/schema.json +0 -366
  59. data/docs/jsonapi/schema.md +0 -151
  60. data/docs/rfcs/0000-namespace.md +0 -106
  61. data/docs/rfcs/template.md +0 -15
  62. data/test/action_controller/adapter_selector_test.rb +0 -64
  63. data/test/action_controller/explicit_serializer_test.rb +0 -137
  64. data/test/action_controller/json/include_test.rb +0 -248
  65. data/test/action_controller/json_api/deserialization_test.rb +0 -114
  66. data/test/action_controller/json_api/errors_test.rb +0 -42
  67. data/test/action_controller/json_api/fields_test.rb +0 -68
  68. data/test/action_controller/json_api/linked_test.rb +0 -204
  69. data/test/action_controller/json_api/pagination_test.rb +0 -126
  70. data/test/action_controller/json_api/transform_test.rb +0 -191
  71. data/test/action_controller/lookup_proc_test.rb +0 -51
  72. data/test/action_controller/namespace_lookup_test.rb +0 -234
  73. data/test/action_controller/serialization_scope_name_test.rb +0 -237
  74. data/test/action_controller/serialization_test.rb +0 -480
  75. data/test/active_model_serializers/adapter_for_test.rb +0 -210
  76. data/test/active_model_serializers/json_pointer_test.rb +0 -24
  77. data/test/active_model_serializers/logging_test.rb +0 -79
  78. data/test/active_model_serializers/model_test.rb +0 -144
  79. data/test/active_model_serializers/railtie_test_isolated.rb +0 -70
  80. data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +0 -163
  81. data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -73
  82. data/test/active_model_serializers/test/schema_test.rb +0 -133
  83. data/test/active_model_serializers/test/serializer_test.rb +0 -64
  84. data/test/active_record_test.rb +0 -11
  85. data/test/adapter/attributes_test.rb +0 -42
  86. data/test/adapter/deprecation_test.rb +0 -102
  87. data/test/adapter/json/belongs_to_test.rb +0 -47
  88. data/test/adapter/json/collection_test.rb +0 -106
  89. data/test/adapter/json/has_many_test.rb +0 -55
  90. data/test/adapter/json/transform_test.rb +0 -95
  91. data/test/adapter/json_api/belongs_to_test.rb +0 -157
  92. data/test/adapter/json_api/collection_test.rb +0 -98
  93. data/test/adapter/json_api/errors_test.rb +0 -78
  94. data/test/adapter/json_api/fields_test.rb +0 -98
  95. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -98
  96. data/test/adapter/json_api/has_many_test.rb +0 -175
  97. data/test/adapter/json_api/has_one_test.rb +0 -82
  98. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +0 -215
  99. data/test/adapter/json_api/json_api_test.rb +0 -35
  100. data/test/adapter/json_api/linked_test.rb +0 -415
  101. data/test/adapter/json_api/links_test.rb +0 -112
  102. data/test/adapter/json_api/pagination_links_test.rb +0 -208
  103. data/test/adapter/json_api/parse_test.rb +0 -139
  104. data/test/adapter/json_api/relationship_test.rb +0 -399
  105. data/test/adapter/json_api/resource_meta_test.rb +0 -102
  106. data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -84
  107. data/test/adapter/json_api/transform_test.rb +0 -514
  108. data/test/adapter/json_api/type_test.rb +0 -195
  109. data/test/adapter/json_test.rb +0 -48
  110. data/test/adapter/null_test.rb +0 -24
  111. data/test/adapter/polymorphic_test.rb +0 -220
  112. data/test/adapter_test.rb +0 -69
  113. data/test/array_serializer_test.rb +0 -24
  114. data/test/benchmark/app.rb +0 -67
  115. data/test/benchmark/benchmarking_support.rb +0 -69
  116. data/test/benchmark/bm_active_record.rb +0 -83
  117. data/test/benchmark/bm_adapter.rb +0 -40
  118. data/test/benchmark/bm_caching.rb +0 -121
  119. data/test/benchmark/bm_lookup_chain.rb +0 -85
  120. data/test/benchmark/bm_transform.rb +0 -47
  121. data/test/benchmark/config.ru +0 -3
  122. data/test/benchmark/controllers.rb +0 -85
  123. data/test/benchmark/fixtures.rb +0 -221
  124. data/test/cache_test.rb +0 -717
  125. data/test/collection_serializer_test.rb +0 -129
  126. data/test/fixtures/active_record.rb +0 -115
  127. data/test/fixtures/poro.rb +0 -227
  128. data/test/generators/scaffold_controller_generator_test.rb +0 -26
  129. data/test/generators/serializer_generator_test.rb +0 -77
  130. data/test/grape_test.rb +0 -198
  131. data/test/lint_test.rb +0 -51
  132. data/test/logger_test.rb +0 -22
  133. data/test/poro_test.rb +0 -11
  134. data/test/serializable_resource_test.rb +0 -81
  135. data/test/serializers/association_macros_test.rb +0 -39
  136. data/test/serializers/associations_test.rb +0 -520
  137. data/test/serializers/attribute_test.rb +0 -155
  138. data/test/serializers/attributes_test.rb +0 -54
  139. data/test/serializers/caching_configuration_test_isolated.rb +0 -172
  140. data/test/serializers/configuration_test.rb +0 -34
  141. data/test/serializers/fieldset_test.rb +0 -16
  142. data/test/serializers/meta_test.rb +0 -204
  143. data/test/serializers/options_test.rb +0 -34
  144. data/test/serializers/read_attribute_for_serialization_test.rb +0 -81
  145. data/test/serializers/reflection_test.rb +0 -481
  146. data/test/serializers/root_test.rb +0 -23
  147. data/test/serializers/serialization_test.rb +0 -57
  148. data/test/serializers/serializer_for_test.rb +0 -138
  149. data/test/serializers/serializer_for_with_namespace_test.rb +0 -90
  150. data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  151. data/test/support/isolated_unit.rb +0 -86
  152. data/test/support/rails5_shims.rb +0 -55
  153. data/test/support/rails_app.rb +0 -40
  154. data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  155. data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
  156. data/test/support/schemas/custom/show.json +0 -7
  157. data/test/support/schemas/hyper_schema.json +0 -93
  158. data/test/support/schemas/render_using_json_api.json +0 -43
  159. data/test/support/schemas/simple_json_pointers.json +0 -10
  160. data/test/support/serialization_testing.rb +0 -81
  161. 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,6 +0,0 @@
1
- {
2
- "properties": {
3
- "name" : { "type" : "string" },
4
- "description" : { "type" : "string" }
5
- }
6
- }
@@ -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
@@ -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,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,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