active_model_serializers 0.10.7 → 0.10.9

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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -0
  3. data/.travis.yml +14 -3
  4. data/CHANGELOG.md +29 -1
  5. data/Gemfile +5 -3
  6. data/README.md +2 -2
  7. data/Rakefile +2 -0
  8. data/active_model_serializers.gemspec +2 -1
  9. data/docs/general/serializers.md +16 -4
  10. data/lib/action_controller/serialization.rb +2 -0
  11. data/lib/active_model/serializable_resource.rb +2 -0
  12. data/lib/active_model/serializer/adapter/attributes.rb +2 -0
  13. data/lib/active_model/serializer/adapter/base.rb +2 -0
  14. data/lib/active_model/serializer/adapter/json.rb +2 -0
  15. data/lib/active_model/serializer/adapter/json_api.rb +2 -0
  16. data/lib/active_model/serializer/adapter/null.rb +2 -0
  17. data/lib/active_model/serializer/adapter.rb +2 -0
  18. data/lib/active_model/serializer/array_serializer.rb +2 -0
  19. data/lib/active_model/serializer/association.rb +2 -0
  20. data/lib/active_model/serializer/attribute.rb +2 -0
  21. data/lib/active_model/serializer/belongs_to_reflection.rb +2 -0
  22. data/lib/active_model/serializer/collection_serializer.rb +6 -6
  23. data/lib/active_model/serializer/concerns/caching.rb +5 -1
  24. data/lib/active_model/serializer/error_serializer.rb +2 -0
  25. data/lib/active_model/serializer/errors_serializer.rb +2 -0
  26. data/lib/active_model/serializer/field.rb +2 -0
  27. data/lib/active_model/serializer/fieldset.rb +2 -0
  28. data/lib/active_model/serializer/has_many_reflection.rb +2 -0
  29. data/lib/active_model/serializer/has_one_reflection.rb +2 -0
  30. data/lib/active_model/serializer/lazy_association.rb +6 -2
  31. data/lib/active_model/serializer/link.rb +23 -0
  32. data/lib/active_model/serializer/lint.rb +2 -0
  33. data/lib/active_model/serializer/null.rb +2 -0
  34. data/lib/active_model/serializer/reflection.rb +5 -0
  35. data/lib/active_model/serializer/version.rb +3 -1
  36. data/lib/active_model/serializer.rb +22 -14
  37. data/lib/active_model_serializers/adapter/attributes.rb +2 -0
  38. data/lib/active_model_serializers/adapter/base.rb +2 -0
  39. data/lib/active_model_serializers/adapter/json.rb +2 -0
  40. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +2 -0
  41. data/lib/active_model_serializers/adapter/json_api/error.rb +2 -0
  42. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +2 -0
  43. data/lib/active_model_serializers/adapter/json_api/link.rb +2 -0
  44. data/lib/active_model_serializers/adapter/json_api/meta.rb +2 -0
  45. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +2 -0
  46. data/lib/active_model_serializers/adapter/json_api/relationship.rb +2 -0
  47. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +2 -0
  48. data/lib/active_model_serializers/adapter/json_api.rb +14 -9
  49. data/lib/active_model_serializers/adapter/null.rb +2 -0
  50. data/lib/active_model_serializers/adapter.rb +3 -1
  51. data/lib/active_model_serializers/callbacks.rb +2 -0
  52. data/lib/active_model_serializers/deprecate.rb +2 -0
  53. data/lib/active_model_serializers/deserialization.rb +2 -0
  54. data/lib/active_model_serializers/json_pointer.rb +2 -0
  55. data/lib/active_model_serializers/logging.rb +2 -0
  56. data/lib/active_model_serializers/lookup_chain.rb +2 -0
  57. data/lib/active_model_serializers/model.rb +2 -0
  58. data/lib/active_model_serializers/railtie.rb +4 -0
  59. data/lib/active_model_serializers/register_jsonapi_renderer.rb +2 -0
  60. data/lib/active_model_serializers/serializable_resource.rb +4 -2
  61. data/lib/active_model_serializers/serialization_context.rb +2 -0
  62. data/lib/active_model_serializers/test/schema.rb +2 -0
  63. data/lib/active_model_serializers/test/serializer.rb +2 -0
  64. data/lib/active_model_serializers/test.rb +2 -0
  65. data/lib/active_model_serializers.rb +20 -10
  66. data/lib/generators/rails/resource_override.rb +2 -0
  67. data/lib/generators/rails/serializer_generator.rb +2 -0
  68. data/lib/grape/active_model_serializers.rb +2 -0
  69. data/lib/grape/formatters/active_model_serializers.rb +2 -0
  70. data/lib/grape/helpers/active_model_serializers.rb +2 -0
  71. data/lib/tasks/rubocop.rake +2 -0
  72. data/test/action_controller/adapter_selector_test.rb +2 -0
  73. data/test/action_controller/explicit_serializer_test.rb +2 -0
  74. data/test/action_controller/json/include_test.rb +2 -0
  75. data/test/action_controller/json_api/deserialization_test.rb +2 -0
  76. data/test/action_controller/json_api/errors_test.rb +2 -0
  77. data/test/action_controller/json_api/fields_test.rb +2 -0
  78. data/test/action_controller/json_api/linked_test.rb +2 -0
  79. data/test/action_controller/json_api/pagination_test.rb +2 -0
  80. data/test/action_controller/json_api/transform_test.rb +2 -0
  81. data/test/action_controller/lookup_proc_test.rb +2 -0
  82. data/test/action_controller/namespace_lookup_test.rb +2 -0
  83. data/test/action_controller/serialization_scope_name_test.rb +2 -0
  84. data/test/action_controller/serialization_test.rb +11 -3
  85. data/test/active_model_serializers/adapter_for_test.rb +2 -0
  86. data/test/active_model_serializers/json_pointer_test.rb +2 -0
  87. data/test/active_model_serializers/logging_test.rb +2 -0
  88. data/test/active_model_serializers/model_test.rb +2 -0
  89. data/test/active_model_serializers/railtie_test_isolated.rb +2 -0
  90. data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +2 -0
  91. data/test/active_model_serializers/serialization_context_test_isolated.rb +2 -0
  92. data/test/active_model_serializers/test/schema_test.rb +2 -0
  93. data/test/active_model_serializers/test/serializer_test.rb +2 -0
  94. data/test/active_record_test.rb +2 -0
  95. data/test/adapter/attributes_test.rb +2 -0
  96. data/test/adapter/deprecation_test.rb +2 -0
  97. data/test/adapter/json/belongs_to_test.rb +2 -0
  98. data/test/adapter/json/collection_test.rb +2 -0
  99. data/test/adapter/json/has_many_test.rb +2 -0
  100. data/test/adapter/json/transform_test.rb +2 -0
  101. data/test/adapter/json_api/belongs_to_test.rb +2 -0
  102. data/test/adapter/json_api/collection_test.rb +2 -0
  103. data/test/adapter/json_api/errors_test.rb +2 -0
  104. data/test/adapter/json_api/fields_test.rb +2 -0
  105. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +2 -0
  106. data/test/adapter/json_api/has_many_test.rb +2 -0
  107. data/test/adapter/json_api/has_one_test.rb +2 -0
  108. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +2 -0
  109. data/test/adapter/json_api/json_api_test.rb +2 -0
  110. data/test/adapter/json_api/linked_test.rb +2 -0
  111. data/test/adapter/json_api/links_test.rb +18 -1
  112. data/test/adapter/json_api/pagination_links_test.rb +2 -0
  113. data/test/adapter/json_api/parse_test.rb +2 -0
  114. data/test/adapter/json_api/relationship_test.rb +2 -0
  115. data/test/adapter/json_api/resource_meta_test.rb +2 -0
  116. data/test/adapter/json_api/toplevel_jsonapi_test.rb +2 -0
  117. data/test/adapter/json_api/transform_test.rb +2 -0
  118. data/test/adapter/json_api/type_test.rb +2 -0
  119. data/test/adapter/json_test.rb +2 -0
  120. data/test/adapter/null_test.rb +2 -0
  121. data/test/adapter/polymorphic_test.rb +2 -0
  122. data/test/adapter_test.rb +2 -0
  123. data/test/array_serializer_test.rb +2 -0
  124. data/test/benchmark/app.rb +2 -0
  125. data/test/benchmark/benchmarking_support.rb +2 -0
  126. data/test/benchmark/bm_active_record.rb +2 -0
  127. data/test/benchmark/bm_adapter.rb +2 -0
  128. data/test/benchmark/bm_caching.rb +2 -0
  129. data/test/benchmark/bm_lookup_chain.rb +2 -0
  130. data/test/benchmark/bm_transform.rb +2 -0
  131. data/test/benchmark/controllers.rb +2 -0
  132. data/test/benchmark/fixtures.rb +2 -0
  133. data/test/cache_test.rb +69 -3
  134. data/test/collection_serializer_test.rb +2 -0
  135. data/test/fixtures/active_record.rb +2 -0
  136. data/test/fixtures/poro.rb +2 -0
  137. data/test/generators/scaffold_controller_generator_test.rb +2 -0
  138. data/test/generators/serializer_generator_test.rb +2 -0
  139. data/test/grape_test.rb +2 -0
  140. data/test/lint_test.rb +2 -0
  141. data/test/logger_test.rb +2 -0
  142. data/test/poro_test.rb +2 -0
  143. data/test/serializable_resource_test.rb +2 -0
  144. data/test/serializers/association_macros_test.rb +2 -0
  145. data/test/serializers/associations_test.rb +52 -0
  146. data/test/serializers/attribute_test.rb +2 -0
  147. data/test/serializers/attributes_test.rb +2 -0
  148. data/test/serializers/caching_configuration_test_isolated.rb +2 -0
  149. data/test/serializers/configuration_test.rb +2 -0
  150. data/test/serializers/fieldset_test.rb +2 -0
  151. data/test/serializers/meta_test.rb +2 -0
  152. data/test/serializers/options_test.rb +2 -0
  153. data/test/serializers/read_attribute_for_serialization_test.rb +2 -0
  154. data/test/serializers/reflection_test.rb +54 -0
  155. data/test/serializers/root_test.rb +2 -0
  156. data/test/serializers/serialization_test.rb +2 -0
  157. data/test/serializers/serializer_for_test.rb +2 -0
  158. data/test/serializers/serializer_for_with_namespace_test.rb +2 -0
  159. data/test/support/isolated_unit.rb +2 -0
  160. data/test/support/rails5_shims.rb +2 -0
  161. data/test/support/rails_app.rb +2 -0
  162. data/test/support/serialization_testing.rb +2 -0
  163. data/test/test_helper.rb +2 -0
  164. metadata +56 -35
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module Adapter
3
5
  class JsonApi
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module Adapter
3
5
  class JsonApi
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # {http://jsonapi.org/format/ JSON API specification}
2
4
  # rubocop:disable Style/AsciiComments
3
5
  # TODO: implement!
@@ -22,14 +24,16 @@ module ActiveModelSerializers
22
24
  module Adapter
23
25
  class JsonApi < Base
24
26
  extend ActiveSupport::Autoload
25
- autoload :Jsonapi
26
- autoload :ResourceIdentifier
27
- autoload :Relationship
28
- autoload :Link
29
- autoload :PaginationLinks
30
- autoload :Meta
31
- autoload :Error
32
- autoload :Deserialization
27
+ eager_autoload do
28
+ autoload :Jsonapi
29
+ autoload :ResourceIdentifier
30
+ autoload :Link
31
+ autoload :PaginationLinks
32
+ autoload :Meta
33
+ autoload :Error
34
+ autoload :Deserialization
35
+ autoload :Relationship
36
+ end
33
37
 
34
38
  def self.default_key_transform
35
39
  :dash
@@ -480,7 +484,8 @@ module ActiveModelSerializers
480
484
  # }.reject! {|_,v| v.nil? }
481
485
  def links_for(serializer)
482
486
  serializer._links.each_with_object({}) do |(name, value), hash|
483
- result = Link.new(serializer, value).as_json
487
+ next if value.excluded?(serializer)
488
+ result = Link.new(serializer, value.block).as_json
484
489
  hash[name] = result if result
485
490
  end
486
491
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module Adapter
3
5
  class Null < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module Adapter
3
5
  UnknownAdapterError = Class.new(ArgumentError)
@@ -35,7 +37,7 @@ module ActiveModelSerializers
35
37
 
36
38
  # @return [Array<Symbol>] list of adapter names
37
39
  def adapters
38
- adapter_map.keys.sort
40
+ adapter_map.keys.sort!
39
41
  end
40
42
 
41
43
  # Adds an adapter 'klass' with 'name' to the 'adapter_map'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Adapted from
2
4
  # https://github.com/rails/rails/blob/7f18ea14c8/activejob/lib/active_job/callbacks.rb
3
5
  require 'active_support/callbacks'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  ##
2
4
  # Provides a single method +deprecate+ to be used to declare when
3
5
  # something is going away.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module Deserialization
3
5
  module_function
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module JsonPointer
3
5
  module_function
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  ##
2
4
  # ActiveModelSerializers::Logging
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module LookupChain
3
5
  # Standard appending of Serializer to the resource name.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # ActiveModelSerializers::Model is a convenient superclass for making your models
2
4
  # from Plain-Old Ruby Objects (PORO). It also serves as a reference implementation
3
5
  # that satisfies ActiveModel::Serializer::Lint::Tests.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/railtie'
2
4
  require 'action_controller'
3
5
  require 'action_controller/railtie'
@@ -5,6 +7,8 @@ require 'action_controller/serialization'
5
7
 
6
8
  module ActiveModelSerializers
7
9
  class Railtie < Rails::Railtie
10
+ config.eager_load_namespaces << ActiveModelSerializers
11
+
8
12
  config.to_prepare do
9
13
  ActiveModel::Serializer.serializers_cache.clear
10
14
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Based on discussion in https://github.com/rails/rails/pull/23712#issuecomment-184977238,
2
4
  # the JSON API media type will have its own format/renderer.
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'set'
2
4
 
3
5
  module ActiveModelSerializers
@@ -14,8 +16,8 @@ module ActiveModelSerializers
14
16
  # @return the serializable_resource, ready for #as_json/#to_json/#serializable_hash.
15
17
  def initialize(resource, options = {})
16
18
  @resource = resource
17
- @adapter_opts, @serializer_opts =
18
- options.partition { |k, _| ADAPTER_OPTION_KEYS.include? k }.map { |h| Hash[h] }
19
+ @adapter_opts = options.select { |k, _| ADAPTER_OPTION_KEYS.include? k }
20
+ @serializer_opts = options.reject { |k, _| ADAPTER_OPTION_KEYS.include? k }
19
21
  end
20
22
 
21
23
  def serialization_scope=(scope)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/core_ext/array/extract_options'
2
4
  module ActiveModelSerializers
3
5
  class SerializationContext
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module Test
3
5
  module Schema
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'set'
2
4
  module ActiveModelSerializers
3
5
  module Test
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveModelSerializers
2
4
  module Test
3
5
  extend ActiveSupport::Autoload
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_model'
2
4
  require 'active_support'
3
5
  require 'active_support/core_ext/object/with_options'
@@ -5,16 +7,19 @@ require 'active_support/core_ext/string/inflections'
5
7
  require 'active_support/json'
6
8
  module ActiveModelSerializers
7
9
  extend ActiveSupport::Autoload
8
- autoload :Model
9
- autoload :Callbacks
10
- autoload :Deserialization
11
- autoload :SerializableResource
12
- autoload :Logging
13
- autoload :Test
14
- autoload :Adapter
15
- autoload :JsonPointer
16
- autoload :Deprecate
17
- autoload :LookupChain
10
+ eager_autoload do
11
+ autoload :Model
12
+ autoload :Callbacks
13
+ autoload :SerializableResource
14
+ autoload :SerializationContext
15
+ autoload :Logging
16
+ autoload :Test
17
+ autoload :Adapter
18
+ autoload :JsonPointer
19
+ autoload :Deprecate
20
+ autoload :LookupChain
21
+ autoload :Deserialization
22
+ end
18
23
 
19
24
  class << self; attr_accessor :logger; end
20
25
  self.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))
@@ -46,6 +51,11 @@ module ActiveModelSerializers
46
51
  $VERBOSE = original_verbose
47
52
  end
48
53
 
54
+ def self.eager_load!
55
+ super
56
+ ActiveModel::Serializer.eager_load!
57
+ end
58
+
49
59
  require 'active_model/serializer/version'
50
60
  require 'active_model/serializer'
51
61
  require 'active_model/serializable_resource'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators'
2
4
  require 'rails/generators/rails/resource/resource_generator'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rails
2
4
  module Generators
3
5
  class SerializerGenerator < NamedBase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # To add Grape support, require 'grape/active_model_serializers' in the base of your Grape endpoints
2
4
  # Then add 'include Grape::ActiveModelSerializers' to enable the formatter and helpers
3
5
  require 'active_model_serializers'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # A Grape response formatter that can be used as 'formatter :json, Grape::Formatters::ActiveModelSerializers'
2
4
  #
3
5
  # Serializer options can be passed as a hash from your Grape endpoint using env[:active_model_serializer_options],
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Helpers can be included in your Grape endpoint as: helpers Grape::Helpers::ActiveModelSerializers
2
4
 
3
5
  module Grape
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
4
  require 'rubocop'
3
5
  require 'rubocop/rake_task'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'will_paginate/array'
3
5
  require 'kaminari'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module SerializationScopeTesting
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActionController
@@ -457,13 +459,19 @@ module ActionController
457
459
  end
458
460
 
459
461
  def test_render_event_is_emitted
460
- subscriber = ::ActiveSupport::Notifications.subscribe('render.active_model_serializers') do |name|
461
- @name = name
462
+ subscriber = ::ActiveSupport::Notifications.subscribe('render.active_model_serializers') do |subscribed_event|
463
+ @subscribed_event = subscribed_event
462
464
  end
463
465
 
464
466
  get :render_using_implicit_serializer
465
467
 
466
- assert_equal 'render.active_model_serializers', @name
468
+ subscribed_event_name =
469
+ if @subscribed_event.is_a?(String)
470
+ @subscribed_event
471
+ else
472
+ @subscribed_event.name # is a ActiveSupport::Notifications::Event
473
+ end
474
+ assert_equal 'render.active_model_serializers', subscribed_event_name
467
475
  ensure
468
476
  ActiveSupport::Notifications.unsubscribe(subscriber) if subscriber
469
477
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Execute this test in isolation
2
4
  require 'support/isolated_unit'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'support/isolated_unit'
2
4
  require 'minitest/mock'
3
5
  require 'action_dispatch'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Execute this test in isolation
2
4
  require 'support/isolated_unit'
3
5
  require 'minitest/mock'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class ActiveRecordTest < ActiveSupport::TestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  module ActiveModel
3
5
  class Serializer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class NestedPost < ::Model; associations :nested_posts end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveModelSerializers
@@ -17,7 +19,21 @@ module ActiveModelSerializers
17
19
  link :yet_another do
18
20
  "http://example.com/resource/#{object.id}"
19
21
  end
22
+ link :conditional1, if: -> { instance_truth } do
23
+ "http://example.com/conditional1/#{object.id}"
24
+ end
25
+ link :conditional2, if: :instance_falsey do
26
+ "http://example.com/conditional2/#{object.id}"
27
+ end
20
28
  link(:nil) { nil }
29
+
30
+ def instance_truth
31
+ true
32
+ end
33
+
34
+ def instance_falsey
35
+ false
36
+ end
21
37
  end
22
38
 
23
39
  def setup
@@ -85,7 +101,8 @@ module ActiveModelSerializers
85
101
  :"link-authors" => 'http://example.com/link_authors',
86
102
  resource: 'http://example.com/resource',
87
103
  posts: 'http://example.com/link_authors/1337/posts',
88
- :"yet-another" => 'http://example.com/resource/1337'
104
+ :"yet-another" => 'http://example.com/resource/1337',
105
+ conditional1: 'http://example.com/conditional1/1337'
89
106
  }
90
107
  assert_equal(expected, hash[:data][:links])
91
108
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'will_paginate/array'
3
5
  require 'kaminari'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  module ActiveModelSerializers
3
5
  module Adapter