active_model_serializers 0.9.8 → 0.10.15

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 (143) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +646 -59
  3. data/MIT-LICENSE +3 -2
  4. data/README.md +194 -846
  5. data/lib/action_controller/serialization.rb +35 -66
  6. data/lib/active_model/serializable_resource.rb +13 -0
  7. data/lib/active_model/serializer/adapter/attributes.rb +17 -0
  8. data/lib/active_model/serializer/adapter/base.rb +20 -0
  9. data/lib/active_model/serializer/adapter/json.rb +17 -0
  10. data/lib/active_model/serializer/adapter/json_api.rb +17 -0
  11. data/lib/active_model/serializer/adapter/null.rb +17 -0
  12. data/lib/active_model/serializer/adapter.rb +26 -0
  13. data/lib/active_model/serializer/array_serializer.rb +14 -0
  14. data/lib/active_model/serializer/association.rb +55 -40
  15. data/lib/active_model/serializer/attribute.rb +27 -0
  16. data/lib/active_model/serializer/belongs_to_reflection.rb +13 -0
  17. data/lib/active_model/serializer/collection_serializer.rb +99 -0
  18. data/lib/active_model/serializer/concerns/caching.rb +305 -0
  19. data/lib/active_model/serializer/error_serializer.rb +16 -0
  20. data/lib/active_model/serializer/errors_serializer.rb +34 -0
  21. data/lib/active_model/serializer/field.rb +92 -0
  22. data/lib/active_model/serializer/fieldset.rb +33 -0
  23. data/lib/active_model/serializer/has_many_reflection.rb +12 -0
  24. data/lib/active_model/serializer/has_one_reflection.rb +9 -0
  25. data/lib/active_model/serializer/lazy_association.rb +99 -0
  26. data/lib/active_model/serializer/link.rb +23 -0
  27. data/lib/active_model/serializer/lint.rb +152 -0
  28. data/lib/active_model/serializer/null.rb +19 -0
  29. data/lib/active_model/serializer/reflection.rb +212 -0
  30. data/lib/active_model/serializer/version.rb +3 -1
  31. data/lib/active_model/serializer.rb +363 -254
  32. data/lib/active_model_serializers/adapter/attributes.rb +36 -0
  33. data/lib/active_model_serializers/adapter/base.rb +85 -0
  34. data/lib/active_model_serializers/adapter/json.rb +23 -0
  35. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +215 -0
  36. data/lib/active_model_serializers/adapter/json_api/error.rb +98 -0
  37. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +51 -0
  38. data/lib/active_model_serializers/adapter/json_api/link.rb +85 -0
  39. data/lib/active_model_serializers/adapter/json_api/meta.rb +39 -0
  40. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +94 -0
  41. data/lib/active_model_serializers/adapter/json_api/relationship.rb +106 -0
  42. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +68 -0
  43. data/lib/active_model_serializers/adapter/json_api.rb +535 -0
  44. data/lib/active_model_serializers/adapter/null.rb +11 -0
  45. data/lib/active_model_serializers/adapter.rb +100 -0
  46. data/lib/active_model_serializers/callbacks.rb +57 -0
  47. data/lib/active_model_serializers/deprecate.rb +56 -0
  48. data/lib/active_model_serializers/deserialization.rb +17 -0
  49. data/lib/active_model_serializers/json_pointer.rb +16 -0
  50. data/lib/active_model_serializers/logging.rb +124 -0
  51. data/lib/active_model_serializers/lookup_chain.rb +82 -0
  52. data/lib/active_model_serializers/model.rb +132 -0
  53. data/lib/active_model_serializers/railtie.rb +62 -0
  54. data/lib/active_model_serializers/register_jsonapi_renderer.rb +80 -0
  55. data/lib/active_model_serializers/serializable_resource.rb +84 -0
  56. data/lib/active_model_serializers/serialization_context.rb +41 -0
  57. data/lib/active_model_serializers/test/schema.rb +140 -0
  58. data/lib/active_model_serializers/test/serializer.rb +127 -0
  59. data/lib/active_model_serializers/test.rb +9 -0
  60. data/lib/active_model_serializers.rb +60 -17
  61. data/lib/generators/rails/USAGE +6 -0
  62. data/lib/{active_model/serializer/generators → generators/rails}/resource_override.rb +3 -4
  63. data/lib/{active_model/serializer/generators/serializer → generators/rails}/serializer_generator.rb +6 -5
  64. data/lib/grape/active_model_serializers.rb +18 -0
  65. data/lib/grape/formatters/active_model_serializers.rb +34 -0
  66. data/lib/grape/helpers/active_model_serializers.rb +19 -0
  67. data/lib/tasks/rubocop.rake +60 -0
  68. metadata +249 -157
  69. data/CONTRIBUTING.md +0 -20
  70. data/DESIGN.textile +0 -586
  71. data/lib/action_controller/serialization_test_case.rb +0 -79
  72. data/lib/active_model/array_serializer.rb +0 -68
  73. data/lib/active_model/default_serializer.rb +0 -28
  74. data/lib/active_model/serializable/utils.rb +0 -16
  75. data/lib/active_model/serializable.rb +0 -59
  76. data/lib/active_model/serializer/association/has_many.rb +0 -39
  77. data/lib/active_model/serializer/association/has_one.rb +0 -25
  78. data/lib/active_model/serializer/config.rb +0 -31
  79. data/lib/active_model/serializer/generators/serializer/USAGE +0 -9
  80. data/lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb +0 -14
  81. data/lib/active_model/serializer/generators/serializer/templates/controller.rb +0 -93
  82. data/lib/active_model/serializer/railtie.rb +0 -22
  83. data/lib/active_model/serializer_support.rb +0 -5
  84. data/lib/active_model_serializers/model/caching.rb +0 -25
  85. data/test/benchmark/app.rb +0 -60
  86. data/test/benchmark/benchmarking_support.rb +0 -67
  87. data/test/benchmark/bm_active_record.rb +0 -41
  88. data/test/benchmark/setup.rb +0 -75
  89. data/test/benchmark/tmp/miniprofiler/mp_timers_6eqewtfgrhitvq5gqm25 +0 -0
  90. data/test/benchmark/tmp/miniprofiler/mp_timers_8083sx03hu72pxz1a4d0 +0 -0
  91. data/test/benchmark/tmp/miniprofiler/mp_timers_fyz2gsml4z0ph9kpoy1c +0 -0
  92. data/test/benchmark/tmp/miniprofiler/mp_timers_hjry5rc32imd42oxoi48 +0 -0
  93. data/test/benchmark/tmp/miniprofiler/mp_timers_m8fpoz2cvt3g9agz0bs3 +0 -0
  94. data/test/benchmark/tmp/miniprofiler/mp_timers_p92m2drnj1i568u3sta0 +0 -0
  95. data/test/benchmark/tmp/miniprofiler/mp_timers_qg52tpca3uesdfguee9i +0 -0
  96. data/test/benchmark/tmp/miniprofiler/mp_timers_s15t1a6mvxe0z7vjv790 +0 -0
  97. data/test/benchmark/tmp/miniprofiler/mp_timers_x8kal3d17nfds6vp4kcj +0 -0
  98. data/test/benchmark/tmp/miniprofiler/mp_views_127.0.0.1 +0 -0
  99. data/test/fixtures/active_record.rb +0 -96
  100. data/test/fixtures/poro.rb +0 -223
  101. data/test/fixtures/template.html.erb +0 -1
  102. data/test/integration/action_controller/namespaced_serialization_test.rb +0 -105
  103. data/test/integration/action_controller/serialization_test.rb +0 -287
  104. data/test/integration/action_controller/serialization_test_case_test.rb +0 -71
  105. data/test/integration/active_record/active_record_test.rb +0 -94
  106. data/test/integration/generators/resource_generator_test.rb +0 -26
  107. data/test/integration/generators/scaffold_controller_generator_test.rb +0 -64
  108. data/test/integration/generators/serializer_generator_test.rb +0 -41
  109. data/test/test_app.rb +0 -14
  110. data/test/test_helper.rb +0 -24
  111. data/test/tmp/app/assets/javascripts/accounts.js +0 -2
  112. data/test/tmp/app/assets/stylesheets/accounts.css +0 -4
  113. data/test/tmp/app/controllers/accounts_controller.rb +0 -2
  114. data/test/tmp/app/helpers/accounts_helper.rb +0 -2
  115. data/test/tmp/app/serializers/account_serializer.rb +0 -3
  116. data/test/tmp/config/routes.rb +0 -1
  117. data/test/unit/active_model/array_serializer/except_test.rb +0 -18
  118. data/test/unit/active_model/array_serializer/key_format_test.rb +0 -18
  119. data/test/unit/active_model/array_serializer/meta_test.rb +0 -53
  120. data/test/unit/active_model/array_serializer/only_test.rb +0 -18
  121. data/test/unit/active_model/array_serializer/options_test.rb +0 -16
  122. data/test/unit/active_model/array_serializer/root_test.rb +0 -102
  123. data/test/unit/active_model/array_serializer/scope_test.rb +0 -24
  124. data/test/unit/active_model/array_serializer/serialization_test.rb +0 -216
  125. data/test/unit/active_model/default_serializer_test.rb +0 -13
  126. data/test/unit/active_model/serializer/associations/build_serializer_test.rb +0 -36
  127. data/test/unit/active_model/serializer/associations_test.rb +0 -49
  128. data/test/unit/active_model/serializer/attributes_test.rb +0 -57
  129. data/test/unit/active_model/serializer/config_test.rb +0 -91
  130. data/test/unit/active_model/serializer/filter_test.rb +0 -69
  131. data/test/unit/active_model/serializer/has_many_polymorphic_test.rb +0 -189
  132. data/test/unit/active_model/serializer/has_many_test.rb +0 -265
  133. data/test/unit/active_model/serializer/has_one_and_has_many_test.rb +0 -27
  134. data/test/unit/active_model/serializer/has_one_polymorphic_test.rb +0 -196
  135. data/test/unit/active_model/serializer/has_one_test.rb +0 -253
  136. data/test/unit/active_model/serializer/key_format_test.rb +0 -25
  137. data/test/unit/active_model/serializer/meta_test.rb +0 -39
  138. data/test/unit/active_model/serializer/options_test.rb +0 -42
  139. data/test/unit/active_model/serializer/root_test.rb +0 -117
  140. data/test/unit/active_model/serializer/scope_test.rb +0 -49
  141. data/test/unit/active_model/serializer/url_helpers_test.rb +0 -35
  142. data/test/unit/active_model/serilizable_test.rb +0 -50
  143. /data/lib/{active_model/serializer/generators/serializer/templates/serializer.rb → generators/rails/templates/serializer.rb.erb} +0 -0
@@ -1,49 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class ScopeTest < Minitest::Test
6
- def setup
7
- @serializer = ProfileSerializer.new(nil, scope: current_user)
8
- end
9
-
10
- def test_scope
11
- assert_equal('user', @serializer.scope)
12
- end
13
-
14
- private
15
-
16
- def current_user
17
- 'user'
18
- end
19
- end
20
-
21
- class NestedScopeTest < Minitest::Test
22
- def setup
23
- @association = UserSerializer._associations[:profile]
24
- @old_association = @association.dup
25
- @user = User.new({ name: 'Name 1', email: 'mail@server.com', gender: 'M' })
26
- @user_serializer = UserSerializer.new(@user, scope: 'user')
27
- end
28
-
29
- def teardown
30
- UserSerializer._associations[:profile] = @old_association
31
- end
32
-
33
- def test_scope_passed_through
34
- @association.serializer_from_options = Class.new(Serializer) do
35
- def name
36
- scope
37
- end
38
-
39
- attributes :name
40
- end
41
-
42
- assert_equal({
43
- name: 'Name 1', email: 'mail@server.com', profile: { name: 'user' }
44
- }, @user_serializer.serializable_hash)
45
- end
46
- end
47
-
48
- end
49
- end
@@ -1,35 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class UrlHelpersTest < Minitest::Test
6
- include Rails.application.routes.url_helpers
7
-
8
- def setup
9
- Object.const_set 'UserController', Class.new(ActionController::Base) do
10
- def show
11
- render text: 'profile'
12
- end
13
- end
14
-
15
- Rails.application.routes.draw do
16
- get '/profile/:id', as: :profile, controller: :user, action: :show
17
- end
18
- end
19
-
20
- def test_url_helpers_are_available
21
- serializer = Class.new(ActiveModel::Serializer) do
22
- attributes :url
23
-
24
- def url
25
- profile_url(id: object.object_id)
26
- end
27
- end
28
- profile = Profile.new
29
-
30
- assert_equal({ url: profile_url(id: profile.object_id) },
31
- serializer.new(profile).as_json)
32
- end
33
- end
34
- end
35
- end
@@ -1,50 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class SerializableTest
5
- class InstrumentationTest < Minitest::Test
6
- def setup
7
- @events = []
8
-
9
- @subscriber = ActiveSupport::Notifications.subscribe('!serialize.active_model_serializers') do |name, start, finish, id, payload|
10
- @events << { name: name, serializer: payload[:serializer] }
11
- end
12
- end
13
-
14
- def teardown
15
- ActiveSupport::Notifications.unsubscribe(@subscriber) if defined?(@subscriber)
16
- end
17
-
18
- def test_instruments_default_serializer
19
- DefaultSerializer.new(1).as_json
20
-
21
- assert_equal [{ name: '!serialize.active_model_serializers', serializer: 'ActiveModel::DefaultSerializer' }], @events
22
- end
23
-
24
- def test_instruments_serializer
25
- profile = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
26
- serializer = ProfileSerializer.new(profile)
27
-
28
- serializer.as_json
29
-
30
- assert_equal [{ name: '!serialize.active_model_serializers', serializer: 'ProfileSerializer' }], @events
31
- end
32
-
33
- def test_instruments_array_serializer
34
- profiles = [
35
- Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1'),
36
- Profile.new(name: 'Name 2', description: 'Description 2', comments: 'Comments 2')
37
- ]
38
- serializer = ArraySerializer.new(profiles)
39
-
40
- serializer.as_json
41
-
42
- assert_equal [
43
- { name: '!serialize.active_model_serializers', serializer: 'ProfileSerializer' },
44
- { name: '!serialize.active_model_serializers', serializer: 'ProfileSerializer' },
45
- { name: '!serialize.active_model_serializers', serializer: 'ActiveModel::ArraySerializer' }
46
- ], @events
47
- end
48
- end
49
- end
50
- end