diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 6e89b8b1..f55d9335 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,23 +1,12 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2015-08-31 04:23:33 -0500 using RuboCop version 0.33.0. +# on 2015-09-20 17:56:22 -0500 using RuboCop version 0.34.0. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 1 -# Configuration parameters: AllowSafeAssignment. -Lint/AssignmentInCondition: - Exclude: - - 'lib/active_model/serializer/adapter/json_api.rb' - -# Offense count: 1 -Lint/EmptyEnsure: - Exclude: - - 'test/serializers/adapter_for_test.rb' - -# Offense count: 1 +# Offense count: 2 Lint/HandleExceptions: Exclude: - 'Rakefile' @@ -28,11 +17,10 @@ Lint/UnusedBlockArgument: Exclude: - 'lib/active_model/serializer/adapter/json_api/fragment_cache.rb' -# Offense count: 9 +# Offense count: 7 # Cop supports --auto-correct. Lint/UnusedMethodArgument: Exclude: - - 'lib/active_model/serializer/adapter.rb' - 'lib/active_model/serializer/adapter/null.rb' - 'lib/active_model/serializer/pass_through_serializer.rb' - 'test/fixtures/poro.rb' @@ -43,12 +31,11 @@ Lint/UselessAccessModifier: Exclude: - 'lib/active_model/serializable_resource.rb' -# Offense count: 3 +# Offense count: 2 Lint/UselessAssignment: Exclude: - 'bench/perf.rb' - 'lib/active_model/serializer/adapter/json_api/fragment_cache.rb' - - 'test/test_helper.rb' # Offense count: 1 # Configuration parameters: EnforcedStyle, SupportedStyles. @@ -56,7 +43,7 @@ Rails/Date: Exclude: - 'test/fixtures/poro.rb' -# Offense count: 8 +# Offense count: 4 # Configuration parameters: EnforcedStyle, SupportedStyles. Rails/TimeZone: Exclude: @@ -78,14 +65,13 @@ Style/AndOr: Exclude: - 'lib/active_model/serializer/lint.rb' -# Offense count: 46 +# Offense count: 25 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. Style/BracesAroundHashParameters: Exclude: - 'test/action_controller/adapter_selector_test.rb' - 'test/action_controller/json_api/pagination_test.rb' - - 'test/action_controller/serialization_test.rb' - 'test/adapter/json_api/linked_test.rb' - 'test/adapter/json_api/pagination_links_test.rb' - 'test/adapter/null_test.rb' @@ -97,9 +83,8 @@ Style/BracesAroundHashParameters: - 'test/serializers/attributes_test.rb' - 'test/serializers/fieldset_test.rb' - 'test/serializers/root_test.rb' - - 'test/serializers/urls_test.rb' -# Offense count: 167 +# Offense count: 174 # Configuration parameters: EnforcedStyle, SupportedStyles. Style/ClassAndModuleChildren: Enabled: false @@ -120,12 +105,11 @@ Style/EachWithObject: Exclude: - 'lib/active_model/serializer/fieldset.rb' -# Offense count: 3 +# Offense count: 2 # Configuration parameters: MinBodyLength. Style/GuardClause: Exclude: - 'lib/active_model/serializer.rb' - - 'lib/active_model/serializer/adapter/json_api.rb' - 'test/capture_warnings.rb' # Offense count: 12 @@ -149,34 +133,12 @@ Style/IndentArray: Style/IndentHash: Enabled: false -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -Style/IndentationConsistency: - Exclude: - - 'test/action_controller/serialization_scope_name_test.rb' - -# Offense count: 2 -# Cop supports --auto-correct. -# Configuration parameters: Width. -Style/IndentationWidth: - Exclude: - - 'lib/active_model/serializable_resource.rb' - - 'lib/active_model/serializer/fieldset.rb' - # Offense count: 1 # Cop supports --auto-correct. Style/Lambda: Exclude: - 'lib/active_model/serializer.rb' -# Offense count: 2 -# Cop supports --auto-correct. -Style/MethodCallParentheses: - Exclude: - - 'lib/active_model/serializer/adapter/json.rb' - - 'lib/active_model/serializer/adapter/json_api.rb' - # Offense count: 1 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. @@ -195,24 +157,11 @@ Style/NegatedIf: Exclude: - 'lib/action_controller/serialization.rb' -# Offense count: 1 -# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles. -Style/Next: - Exclude: - - 'lib/active_model/serializer/adapter/json_api.rb' - # Offense count: 1 # Cop supports --auto-correct. Style/NumericLiterals: MinDigits: 7 -# Offense count: 2 -# Cop supports --auto-correct. -# Configuration parameters: PreferredDelimiters. -Style/PercentLiteralDelimiters: - Exclude: - - 'active_model_serializers.gemspec' - # Offense count: 2 # Cop supports --auto-correct. Style/PerlBackrefs: @@ -220,20 +169,17 @@ Style/PerlBackrefs: - 'test/fixtures/poro.rb' - 'test/serializers/associations_test.rb' -# Offense count: 6 +# Offense count: 3 # Configuration parameters: NamePrefix, NamePrefixBlacklist. Style/PredicateName: Exclude: - - 'lib/active_model/serializer/adapter.rb' - - 'lib/active_model/serializer/adapter/json_api.rb' - 'lib/active_model/serializer/associations.rb' - 'test/action_controller/json_api/linked_test.rb' -# Offense count: 7 +# Offense count: 5 # Cop supports --auto-correct. Style/RedundantSelf: Exclude: - - 'lib/active_model/serializer.rb' - 'lib/active_model/serializer/associations.rb' - 'test/fixtures/poro.rb' @@ -244,13 +190,11 @@ Style/Semicolon: Exclude: - 'lib/active_model/serializer/fieldset.rb' -# Offense count: 6 +# Offense count: 3 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. Style/SignalException: Exclude: - - 'lib/active_model/serializer.rb' - - 'lib/active_model/serializer/adapter.rb' - 'lib/active_model/serializer/fieldset.rb' - 'lib/active_model/serializer/pass_through_serializer.rb' @@ -293,7 +237,7 @@ Style/TrailingBlankLines: - 'test/serializers/fieldset_test.rb' - 'test/support/stream_capture.rb' -# Offense count: 6 +# Offense count: 5 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyleForMultiline, SupportedStyles. Style/TrailingComma: diff --git a/lib/active_model/serializer/adapter/json_api.rb b/lib/active_model/serializer/adapter/json_api.rb index 94571eaa..3637ccb7 100644 --- a/lib/active_model/serializer/adapter/json_api.rb +++ b/lib/active_model/serializer/adapter/json_api.rb @@ -130,11 +130,14 @@ module ActiveModel end end - def included_for(serializer) - included.flat_map do |inc| - association = serializer.associations.find { |assoc| assoc.key == inc.first } - _included_for(association.serializer, inc.second) if association - end.uniq + def included_resources(include_tree) + included = [] + + serializer.associations(include_tree).each do |association| + add_included_resources_for(association.serializer, include_tree[association.key], included) + end + + included end def add_included_resources_for(serializer, include_tree, included) diff --git a/lib/active_model/serializer/include_tree.rb b/lib/active_model/serializer/include_tree.rb index 6d675e11..8a8f1c12 100644 --- a/lib/active_model/serializer/include_tree.rb +++ b/lib/active_model/serializer/include_tree.rb @@ -16,9 +16,9 @@ module ActiveModel when Symbol { included => {} } when Hash - included.each_with_object({}) { |(key, value), hash| + included.each_with_object({}) do |(key, value), hash| hash[key] = include_args_to_hash(value) - } + end when Array included.reduce({}) { |a, e| a.merge!(include_args_to_hash(e)) } when String