diff --git a/.rubocop.yml b/.rubocop.yml
new file mode 100644
index 00000000..e7d729cc
--- /dev/null
+++ b/.rubocop.yml
@@ -0,0 +1,49 @@
+inherit_from: .rubocop_todo.yml
+
+AllCops:
+ Exclude:
+ - config/initializers/forbidden_yaml.rb
+ - !ruby/regexp /(vendor|bundle|bin|db|tmp)\/.*/
+ RunRailsCops: true
+ DisplayCopNames: true
+ DisplayStyleGuide: true
+
+Lint/NestedMethodDefinition:
+ Enabled: false
+ Exclude:
+ - test/action_controller/serialization_test.rb
+
+Style/StringLiterals:
+ EnforcedStyle: single_quotes
+
+Metrics/AbcSize:
+ Max: 35 # TODO: Lower to 15
+
+Metrics/ClassLength:
+ Max: 261 # TODO: Lower to 100
+ Exclude:
+ - test/**/*.rb
+
+Metrics/CyclomaticComplexity:
+ Max: 7 # TODO: Lower to 6
+
+Metrics/LineLength:
+ Max: 251 # TODO: Lower to 80
+
+Metrics/MethodLength:
+ Max: 106 # TODO: Lower to 10
+
+Metrics/PerceivedComplexity:
+ Max: 9 # TODO: Lower to 7
+
+Style/AlignParameters:
+ EnforcedStyle: with_fixed_indentation
+
+Style/ClassAndModuleChildren:
+ EnforcedStyle: compact
+
+Style/Documentation:
+ Enabled: false
+
+Style/MultilineOperationIndentation:
+ EnforcedStyle: indented
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
new file mode 100644
index 00000000..36ce4dfc
--- /dev/null
+++ b/.rubocop_todo.yml
@@ -0,0 +1,315 @@
+# This configuration was generated by
+# `rubocop --auto-gen-config`
+# on 2015-08-31 04:23:33 -0500 using RuboCop version 0.33.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
+Lint/HandleExceptions:
+ Exclude:
+ - 'Rakefile'
+
+# Offense count: 2
+# Cop supports --auto-correct.
+Lint/UnusedBlockArgument:
+ Exclude:
+ - 'lib/active_model/serializer/adapter/json_api/fragment_cache.rb'
+
+# Offense count: 9
+# 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'
+ - 'test/lint_test.rb'
+
+# Offense count: 1
+Lint/UselessAccessModifier:
+ Exclude:
+ - 'lib/active_model/serializable_resource.rb'
+
+# Offense count: 3
+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.
+Rails/Date:
+ Exclude:
+ - 'test/fixtures/poro.rb'
+
+# Offense count: 8
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+Rails/TimeZone:
+ Exclude:
+ - 'test/action_controller/serialization_test.rb'
+ - 'test/fixtures/poro.rb'
+ - 'test/serializers/cache_test.rb'
+
+# Offense count: 16
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle, SupportedLastArgumentHashStyles.
+Style/AlignHash:
+ Exclude:
+ - 'test/action_controller/json_api/pagination_test.rb'
+
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+Style/AndOr:
+ Exclude:
+ - 'lib/active_model/serializer/lint.rb'
+
+# Offense count: 6
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods.
+Style/BlockDelimiters:
+ Enabled: false
+
+# Offense count: 46
+# 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'
+ - 'test/adapter_test.rb'
+ - 'test/array_serializer_test.rb'
+ - 'test/serializable_resource_test.rb'
+ - 'test/serializers/associations_test.rb'
+ - 'test/serializers/attribute_test.rb'
+ - 'test/serializers/attributes_test.rb'
+ - 'test/serializers/fieldset_test.rb'
+ - 'test/serializers/root_test.rb'
+ - 'test/serializers/urls_test.rb'
+
+# Offense count: 167
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+Style/ClassAndModuleChildren:
+ Enabled: false
+
+# Offense count: 5
+# Cop supports --auto-correct.
+Style/CommentIndentation:
+ Exclude:
+ - 'active_model_serializers.gemspec'
+
+# Offense count: 1
+Style/DoubleNegation:
+ Exclude:
+ - 'lib/active_model/serializable_resource.rb'
+
+# Offense count: 1
+Style/EachWithObject:
+ Exclude:
+ - 'lib/active_model/serializer/fieldset.rb'
+
+# Offense count: 3
+# 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
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues.
+Style/HashSyntax:
+ Enabled: false
+
+# Offense count: 9
+# Cop supports --auto-correct.
+Style/IndentArray:
+ Exclude:
+ - 'test/adapter/json/has_many_test.rb'
+ - 'test/adapter/json_api/json_api_test.rb'
+ - 'test/adapter/json_api/pagination_links_test.rb'
+ - 'test/adapter/json_test.rb'
+
+# Offense count: 8
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+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.
+Style/MethodDefParentheses:
+ Enabled: false
+
+# Offense count: 3
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+Style/MultilineOperationIndentation:
+ Enabled: false
+
+# Offense count: 1
+# Cop supports --auto-correct.
+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:
+ Exclude:
+ - 'test/fixtures/poro.rb'
+ - 'test/serializers/associations_test.rb'
+
+# Offense count: 6
+# 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
+# Cop supports --auto-correct.
+Style/RedundantSelf:
+ Exclude:
+ - 'lib/active_model/serializer.rb'
+ - 'lib/active_model/serializer/associations.rb'
+ - 'test/fixtures/poro.rb'
+
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: AllowAsExpressionSeparator.
+Style/Semicolon:
+ Exclude:
+ - 'lib/active_model/serializer/fieldset.rb'
+
+# Offense count: 6
+# 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'
+
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: AllowIfMethodIsEmpty.
+Style/SingleLineMethods:
+ Exclude:
+ - 'test/serializers/serializer_for_test.rb'
+
+# Offense count: 2
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+Style/StringLiteralsInInterpolation:
+ Enabled: false
+
+# Offense count: 1
+Style/StructInheritance:
+ Exclude:
+ - 'bench/perf.rb'
+
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: IgnoredMethods.
+Style/SymbolProc:
+ Exclude:
+ - 'lib/generators/serializer/serializer_generator.rb'
+
+# Offense count: 8
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+Style/TrailingBlankLines:
+ Exclude:
+ - 'lib/active_model/serializer/pass_through_serializer.rb'
+ - 'lib/generators/serializer/serializer_generator.rb'
+ - 'test/adapter/fragment_cache_test.rb'
+ - 'test/adapter/json_api/json_api_test.rb'
+ - 'test/adapter/null_test.rb'
+ - 'test/serializers/cache_test.rb'
+ - 'test/serializers/fieldset_test.rb'
+ - 'test/support/stream_capture.rb'
+
+# Offense count: 6
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
+Style/TrailingComma:
+ Exclude:
+ - 'test/action_controller/adapter_selector_test.rb'
+ - 'test/action_controller/serialization_test.rb'
+ - 'test/adapter/json_api/belongs_to_test.rb'
+ - 'test/adapter/json_api/linked_test.rb'
+
+# Offense count: 1
+Style/UnlessElse:
+ Exclude:
+ - 'lib/active_model/serializer.rb'
diff --git a/.simplecov b/.simplecov
new file mode 100644
index 00000000..31db7d88
--- /dev/null
+++ b/.simplecov
@@ -0,0 +1,99 @@
+# https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config
+# see https://github.com/colszowka/simplecov/blob/master/lib/simplecov/defaults.rb
+# vim: set ft=ruby
+
+## DEFINE VARIABLES
+@minimum_coverage = ENV.fetch('COVERAGE_MINIMUM') {
+ case (defined?(RUBY_ENGINE) && RUBY_ENGINE) || "ruby"
+ when 'jruby', 'rbx'
+ 96.0
+ else
+ 98.3
+ end
+}.to_f.round(2)
+# rubocop:disable Style/DoubleNegation
+ENV['FULL_BUILD'] ||= ENV['CI']
+@running_ci = !!(ENV['FULL_BUILD'] =~ /\Atrue\z/i)
+@generate_report = @running_ci || !!(ENV['COVERAGE'] =~ /\Atrue\z/i)
+@output = STDOUT
+# rubocop:enable Style/DoubleNegation
+
+## CONFIGURE SIMPLECOV
+SimpleCov.pid = $$ # In case there's any forking
+
+SimpleCov.profiles.define 'app' do
+ coverage_dir 'coverage'
+ load_profile 'test_frameworks'
+
+ add_group 'Libraries', 'lib'
+
+ add_group 'Long files' do |src_file|
+ src_file.lines.count > 100
+ end
+ class MaxLinesFilter < SimpleCov::Filter
+ def matches?(source_file)
+ source_file.lines.count < filter_argument
+ end
+ end
+ add_group 'Short files', MaxLinesFilter.new(5)
+
+ # Exclude these paths from analysis
+ add_filter '/config/'
+ add_filter '/db/'
+ add_filter 'tasks'
+end
+
+## START TRACKING COVERAGE (before activating SimpleCov)
+require 'coverage'
+Coverage.start
+
+## ADD SOME CUSTOM REPORTING AT EXIT
+SimpleCov.at_exit do
+ header = "#{'*' * 20} SimpleCov Results #{'*' * 20}"
+ @output.puts
+ @output.puts header
+ @output.puts SimpleCov.result.format!
+ percent = Float(SimpleCov.result.covered_percent)
+ if percent < @minimum_coverage
+ @output.puts "Spec coverage was not high enough: "\
+ "#{percent.round(2)} is < #{@minimum_coverage}%\n"
+ exit 1 if @generate_report
+ else
+ @output.puts "Nice job! Spec coverage (#{percent.round(2)}) "\
+ "is still at or above #{@minimum_coverage}%\n"
+ end
+ @output.puts
+ @output.puts '*' * header.size
+end
+
+## CAPTURE CONFIG IN CLOSURE 'AppCoverage.start'
+## to defer running until test/test_helper.rb is loaded.
+# rubocop:disable Style/MultilineBlockChain
+AppCoverage = Class.new do
+ def initialize(&block)
+ @block = block
+ end
+
+ def start
+ @block.call
+ end
+end.new do
+ SimpleCov.start 'app'
+ if @generate_report
+ if @running_ci
+ require 'codeclimate-test-reporter'
+ @output.puts '[COVERAGE] Running with SimpleCov Simple Formatter and CodeClimate Test Reporter'
+ formatters = [
+ SimpleCov::Formatter::SimpleFormatter,
+ CodeClimate::TestReporter::Formatter
+ ]
+ else
+ @output.puts '[COVERAGE] Running with SimpleCov HTML Formatter'
+ formatters = [SimpleCov::Formatter::HTMLFormatter]
+ end
+ else
+ formatters = []
+ end
+ SimpleCov.formatters = formatters
+end
+# rubocop:enable Style/MultilineBlockChain
diff --git a/.travis.yml b/.travis.yml
index 6ebfd703..9aaaafdd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,9 @@ language: ruby
sudo: false
+cache:
+ bundler: true
+
rvm:
- 1.9.3
- 2.0.0
@@ -14,6 +17,10 @@ rvm:
install:
- bundle install --retry=3
+script:
+ - bundle exec rake
+ - bundle exec rake rubocop
+
env:
- "RAILS_VERSION=4.0"
- "RAILS_VERSION=4.1"
@@ -24,3 +31,4 @@ matrix:
allow_failures:
- rvm: ruby-head
- env: "RAILS_VERSION=master"
+ fast_finish: true
diff --git a/Gemfile b/Gemfile
index e0a4364c..e8030a77 100644
--- a/Gemfile
+++ b/Gemfile
@@ -29,7 +29,16 @@ group :test do
gem 'activerecord'
gem 'sqlite3', platform: :ruby
gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
+ gem 'codeclimate-test-reporter', require: false
+end
+
+group :test, :development do
+ gem 'simplecov', '~> 0.10', require: false
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
+
+group :development, :test do
+ gem 'rubocop', '~> 0.33.0', require: false
+end
diff --git a/README.md b/README.md
index a5c5528f..80cfd3e9 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,10 @@
# ActiveModel::Serializer
-[](https://travis-ci.org/rails-api/active_model_serializers)
+[](https://travis-ci.org/rails-api/active_model_serializers)
+
+
-_Windows Build Status -_ 
+_Windows Build Status -_ [](https://ci.appveyor.com/project/joaomdmoura/active-model-serializers/branch/master)
ActiveModel::Serializer brings convention over configuration to your JSON generation.
diff --git a/Rakefile b/Rakefile
index 8a1f1e9e..cefdc423 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,9 +1,36 @@
-require "bundler/gem_tasks"
+begin
+ require 'simplecov'
+rescue LoadError
+end
+
+require 'bundler/gem_tasks'
+
+begin
+ require 'rubocop'
+ require 'rubocop/rake_task'
+rescue LoadError
+else
+ Rake::Task[:rubocop].clear if Rake::Task.task_defined?(:rubocop)
+ if !defined?(::Rubinius)
+ Rake::Task[:rubocop].clear if Rake::Task.task_defined?(:rubocop)
+ desc 'Execute rubocop'
+ RuboCop::RakeTask.new(:rubocop) do |task|
+ task.options = ['--rails', '--display-cop-names', '--display-style-guide']
+ task.fail_on_error = true
+ end
+ else
+ desc 'No-op rubocop to avoid rbx segfault'
+ task :rubocop do
+ puts 'Skipping rubocop on rbx due to segfault'
+ puts 'https://github.com/rubinius/rubinius/issues/3499'
+ end
+ end
+end
require 'rake/testtask'
Rake::TestTask.new do |t|
- t.libs << "test"
+ t.libs << 'test'
t.test_files = FileList['test/**/*_test.rb']
t.ruby_opts = ['-r./test/test_helper.rb']
t.verbose = true
diff --git a/active_model_serializers.gemspec b/active_model_serializers.gemspec
index de385a97..43b1c7ac 100644
--- a/active_model_serializers.gemspec
+++ b/active_model_serializers.gemspec
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
spec.platform = Gem::Platform::RUBY
spec.authors = ['Steve Klabnik']
spec.email = ['steve@steveklabnik.com']
- spec.summary = %q{Conventions-based JSON generation for Rails.}
- spec.description = %q{ActiveModel::Serializers allows you to generate your JSON in an object-oriented and convention-driven manner.}
+ spec.summary = 'Conventions-based JSON generation for Rails.'
+ spec.description = 'ActiveModel::Serializers allows you to generate your JSON in an object-oriented and convention-driven manner.'
spec.homepage = 'https://github.com/rails-api/active_model_serializers'
spec.license = 'MIT'
diff --git a/docs/README.md b/docs/README.md
index 5bd9c2e1..4f9172ab 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -8,6 +8,7 @@ This is the documentation of AMS, it's focused on the **0.10.x version.**
- [Getting Started](general/getting_started.md)
- [Adapters](general/adapters.md)
+- [Configuration Options](general/configuration_options.md)
## How to
diff --git a/docs/general/configuration_options.md b/docs/general/configuration_options.md
new file mode 100644
index 00000000..2512bf46
--- /dev/null
+++ b/docs/general/configuration_options.md
@@ -0,0 +1,11 @@
+# Configuration Options
+
+The following configuration options can be set on `ActiveModel::Serializer.config` inside an initializer.
+
+## General
+
+- `adapter`: The [adapter](adapters.md) to use. Possible values: `:flatten_json, :json, :json_api`. Default: `:flatten_json`.
+
+## JSON API
+
+- `jsonapi_resource_type`: Whether the `type` attributes of resources should be singular or plural. Possible values: `:singular, :plural`. Default: `:plural`.
diff --git a/lib/action_controller/serialization.rb b/lib/action_controller/serialization.rb
index 0850f741..e05c340b 100644
--- a/lib/action_controller/serialization.rb
+++ b/lib/action_controller/serialization.rb
@@ -20,8 +20,8 @@ module ActionController
end
def get_serializer(resource, options = {})
- if ! use_adapter?
- warn "ActionController::Serialization#use_adapter? has been removed. "\
+ if !use_adapter?
+ warn 'ActionController::Serialization#use_adapter? has been removed. '\
"Please pass 'adapter: false' or see ActiveSupport::SerializableResource#serialize"
options[:adapter] = false
end
diff --git a/lib/active_model/serializable_resource.rb b/lib/active_model/serializable_resource.rb
index aa8f139a..feae1e8e 100644
--- a/lib/active_model/serializable_resource.rb
+++ b/lib/active_model/serializable_resource.rb
@@ -1,7 +1,6 @@
require 'set'
module ActiveModel
class SerializableResource
-
ADAPTER_OPTION_KEYS = Set.new([:include, :fields, :adapter])
def initialize(resource, options = {})
@@ -79,6 +78,5 @@ module ActiveModel
ActiveModelSerializers.silence_warnings do
attr_reader :resource, :adapter_opts, :serializer_opts
end
-
end
end
diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb
index 6e6833bb..07dd1433 100644
--- a/lib/active_model/serializer.rb
+++ b/lib/active_model/serializer.rb
@@ -13,7 +13,6 @@ module ActiveModel
include Configuration
include Associations
-
# Matches
# "c:/git/emberjs/ember-crm-backend/app/serializers/lead_serializer.rb:1:in `'"
# AND
@@ -146,18 +145,6 @@ module ActiveModel
@root || object.class.model_name.to_s.underscore
end
- def id
- object.id if object
- end
-
- def json_api_type
- if config.jsonapi_resource_type == :plural
- object.class.model_name.plural
- else
- object.class.model_name.singular
- end
- end
-
def attributes(options = {})
attributes =
if options[:fields]
@@ -166,8 +153,6 @@ module ActiveModel
self.class._attributes.dup
end
- attributes += options[:required_fields] if options[:required_fields]
-
attributes.each_with_object({}) do |name, hash|
unless self.class._fragmented
hash[name] = send(name)
diff --git a/lib/active_model/serializer/adapter.rb b/lib/active_model/serializer/adapter.rb
index 69593828..1cbeb9b7 100644
--- a/lib/active_model/serializer/adapter.rb
+++ b/lib/active_model/serializer/adapter.rb
@@ -15,7 +15,7 @@ module ActiveModel
end
def self.adapter_class(adapter)
- adapter_name = adapter.to_s.classify.sub("API", "Api")
+ adapter_name = adapter.to_s.classify.sub('API', 'Api')
"ActiveModel::Serializer::Adapter::#{adapter_name}".safe_constantize
end
@@ -68,12 +68,12 @@ module ActiveModel
parts = []
parts << object_cache_key
parts << @klass._cache_digest unless @klass._cache_options && @klass._cache_options[:skip_digest]
- parts.join("/")
+ parts.join('/')
end
def object_cache_key
object_time_safe = @cached_serializer.object.updated_at
- object_time_safe = object_time_safe.strftime("%Y%m%d%H%M%S%9N") if object_time_safe.respond_to?(:strftime)
+ object_time_safe = object_time_safe.strftime('%Y%m%d%H%M%S%9N') if object_time_safe.respond_to?(:strftime)
(@klass._cache_key) ? "#{@klass._cache_key}/#{@cached_serializer.object.id}-#{object_time_safe}" : @cached_serializer.object.cache_key
end
@@ -82,7 +82,7 @@ module ActiveModel
end
def meta_key
- serializer.meta_key || "meta"
+ serializer.meta_key || 'meta'
end
def root
diff --git a/lib/active_model/serializer/adapter/fragment_cache.rb b/lib/active_model/serializer/adapter/fragment_cache.rb
index ae15995f..8463b5a2 100644
--- a/lib/active_model/serializer/adapter/fragment_cache.rb
+++ b/lib/active_model/serializer/adapter/fragment_cache.rb
@@ -2,7 +2,6 @@ module ActiveModel
class Serializer
class Adapter
class FragmentCache
-
attr_reader :serializer
def initialize(adapter, serializer, options)
@@ -35,7 +34,7 @@ module ActiveModel
def cached_attributes(klass, serializers)
attributes = serializer.class._attributes
- cached_attributes = (klass._cache_only) ? klass._cache_only : attributes.reject {|attr| klass._cache_except.include?(attr) }
+ cached_attributes = (klass._cache_only) ? klass._cache_only : attributes.reject { |attr| klass._cache_except.include?(attr) }
non_cached_attributes = attributes - cached_attributes
cached_attributes.each do |attribute|
@@ -60,7 +59,7 @@ module ActiveModel
Object.const_set cached, Class.new(ActiveModel::Serializer) unless Object.const_defined?(cached)
Object.const_set non_cached, Class.new(ActiveModel::Serializer) unless Object.const_defined?(non_cached)
- klass._cache_options ||= {}
+ klass._cache_options ||= {}
klass._cache_options[:key] = klass._cache_key if klass._cache_key
cached.constantize.cache(klass._cache_options)
@@ -68,7 +67,7 @@ module ActiveModel
cached.constantize.fragmented(serializer)
non_cached.constantize.fragmented(serializer)
- serializers = {cached: cached, non_cached: non_cached}
+ serializers = { cached: cached, non_cached: non_cached }
cached_attributes(klass, serializers)
serializers
end
diff --git a/lib/active_model/serializer/adapter/json.rb b/lib/active_model/serializer/adapter/json.rb
index 58704b56..b3fa6e9c 100644
--- a/lib/active_model/serializer/adapter/json.rb
+++ b/lib/active_model/serializer/adapter/json.rb
@@ -46,7 +46,6 @@ module ActiveModel
def fragment_cache(cached_hash, non_cached_hash)
Json::FragmentCache.new().fragment_cache(cached_hash, non_cached_hash)
end
-
end
end
end
diff --git a/lib/active_model/serializer/adapter/json/fragment_cache.rb b/lib/active_model/serializer/adapter/json/fragment_cache.rb
index 0d01b87a..846a216f 100644
--- a/lib/active_model/serializer/adapter/json/fragment_cache.rb
+++ b/lib/active_model/serializer/adapter/json/fragment_cache.rb
@@ -4,11 +4,9 @@ module ActiveModel
class Adapter
class Json < Adapter
class FragmentCache
-
def fragment_cache(cached_hash, non_cached_hash)
non_cached_hash.merge cached_hash
end
-
end
end
end
diff --git a/lib/active_model/serializer/adapter/json_api.rb b/lib/active_model/serializer/adapter/json_api.rb
index 1b55a812..ac3bf4a1 100644
--- a/lib/active_model/serializer/adapter/json_api.rb
+++ b/lib/active_model/serializer/adapter/json_api.rb
@@ -9,7 +9,13 @@ module ActiveModel
super
@hash = { data: [] }
- if fields = options.delete(:fields)
+ @options[:include] ||= []
+ if @options[:include].is_a?(String)
+ @options[:include] = @options[:include].split(',')
+ end
+
+ fields = options.delete(:fields)
+ if fields
@fieldset = ActiveModel::Serializer::Fieldset.new(fields, serializer.json_key)
else
@fieldset = options[:fieldset]
@@ -31,151 +37,139 @@ module ActiveModel
add_links(options)
else
- @hash[:data] = attributes_for_serializer(serializer, options)
- add_resource_relationships(@hash[:data], serializer)
+ primary_data = primary_data_for(serializer, options)
+ relationships = relationships_for(serializer)
+ included = included_for(serializer)
+ @hash[:data] = primary_data
+ @hash[:data][:relationships] = relationships if relationships.any?
+ @hash[:included] = included if included.any?
end
@hash
end
def fragment_cache(cached_hash, non_cached_hash)
root = false if @options.include?(:include)
- JsonApi::FragmentCache.new().fragment_cache(root, cached_hash, non_cached_hash)
+ JsonApi::FragmentCache.new.fragment_cache(root, cached_hash, non_cached_hash)
end
private
- def add_relationships(resource, name, serializers)
- resource[:relationships] ||= {}
- resource[:relationships][name] ||= { data: [] }
- resource[:relationships][name][:data] += serializers.map { |serializer| { type: serializer.json_api_type, id: serializer.id.to_s } }
- end
-
- def add_relationship(resource, name, serializer, val=nil)
- resource[:relationships] ||= {}
- resource[:relationships][name] = { data: val }
-
- if serializer && serializer.object
- resource[:relationships][name][:data] = { type: serializer.json_api_type, id: serializer.id.to_s }
- end
- end
-
- def add_included(resource_name, serializers, parent = nil)
- unless serializers.respond_to?(:each)
- return unless serializers.object
- serializers = Array(serializers)
- end
- resource_path = [parent, resource_name].compact.join('.')
- if include_assoc?(resource_path)
- @hash[:included] ||= []
-
- serializers.each do |serializer|
- attrs = attributes_for_serializer(serializer, @options)
-
- add_resource_relationships(attrs, serializer, add_included: false)
-
- @hash[:included].push(attrs) unless @hash[:included].include?(attrs)
- end
- end
-
- serializers.each do |serializer|
- serializer.associations.each do |association|
- serializer = association.serializer
-
- add_included(association.key, serializer, resource_path) if serializer
- end if include_nested_assoc? resource_path
- end
- end
-
- def attributes_for_serializer(serializer, options)
- if serializer.respond_to?(:each)
- result = []
- serializer.each do |object|
- result << resource_object_for(object, options)
- end
+ def resource_identifier_type_for(serializer)
+ if ActiveModel::Serializer.config.jsonapi_resource_type == :singular
+ serializer.object.class.model_name.singular
else
- result = resource_object_for(serializer, options)
+ serializer.object.class.model_name.plural
end
- result
end
- def resource_object_for(serializer, options)
+ def resource_identifier_id_for(serializer)
+ if serializer.respond_to?(:id)
+ serializer.id
+ else
+ serializer.object.id
+ end
+ end
+
+ def resource_identifier_for(serializer)
+ type = resource_identifier_type_for(serializer)
+ id = resource_identifier_id_for(serializer)
+
+ { id: id.to_s, type: type }
+ end
+
+ def resource_object_for(serializer, options = {})
options[:fields] = @fieldset && @fieldset.fields_for(serializer)
- options[:required_fields] = [:id, :json_api_type]
cache_check(serializer) do
- attributes = serializer.attributes(options)
-
- result = {
- id: attributes.delete(:id).to_s,
- type: attributes.delete(:json_api_type)
- }
-
+ result = resource_identifier_for(serializer)
+ attributes = serializer.attributes(options).except(:id)
result[:attributes] = attributes if attributes.any?
result
end
end
+ def primary_data_for(serializer, options)
+ if serializer.respond_to?(:each)
+ serializer.map { |s| resource_object_for(s, options) }
+ else
+ resource_object_for(serializer, options)
+ end
+ end
+
+ def relationship_value_for(serializer, options = {})
+ if serializer.respond_to?(:each)
+ serializer.map { |s| resource_identifier_for(s) }
+ else
+ if options[:virtual_value]
+ options[:virtual_value]
+ elsif serializer && serializer.object
+ resource_identifier_for(serializer)
+ end
+ end
+ end
+
+ def relationships_for(serializer)
+ Hash[serializer.associations.map { |association| [association.key, { data: relationship_value_for(association.serializer, association.options) }] }]
+ end
+
+ def included_for(serializer)
+ serializer.associations.flat_map { |assoc| _included_for(assoc.key, assoc.serializer) }.uniq
+ end
+
+ def _included_for(resource_name, serializer, parent = nil)
+ if serializer.respond_to?(:each)
+ serializer.flat_map { |s| _included_for(resource_name, s, parent) }.uniq
+ else
+ return [] unless serializer && serializer.object
+ result = []
+ resource_path = [parent, resource_name].compact.join('.')
+
+ if include_assoc?(resource_path)
+ primary_data = primary_data_for(serializer, @options)
+ relationships = relationships_for(serializer)
+ primary_data[:relationships] = relationships if relationships.any?
+ result.push(primary_data)
+ end
+
+ if include_nested_assoc?(resource_path)
+ non_empty_associations = serializer.associations.select(&:serializer)
+
+ non_empty_associations.each do |association|
+ result.concat(_included_for(association.key, association.serializer, resource_path))
+ result.uniq!
+ end
+ end
+ result
+ end
+ end
+
def include_assoc?(assoc)
- return false unless @options[:include]
check_assoc("#{assoc}$")
end
def include_nested_assoc?(assoc)
- return false unless @options[:include]
check_assoc("#{assoc}.")
end
def check_assoc(assoc)
- include_opt = @options[:include]
- include_opt = include_opt.split(',') if include_opt.is_a?(String)
- include_opt.any? do |s|
- s.match(/^#{assoc.gsub('.', '\.')}/)
- end
- end
-
- def add_resource_relationships(attrs, serializer, options = {})
- options[:add_included] = options.fetch(:add_included, true)
-
- serializer.associations.each do |association|
- key = association.key
- serializer = association.serializer
- opts = association.options
-
- attrs[:relationships] ||= {}
-
- if serializer.respond_to?(:each)
- add_relationships(attrs, key, serializer)
- else
- if opts[:virtual_value]
- add_relationship(attrs, key, nil, opts[:virtual_value])
- else
- add_relationship(attrs, key, serializer)
- end
- end
-
- if options[:add_included]
- Array(serializer).each do |s|
- add_included(key, s)
- end
- end
- end
+ @options[:include].any? { |s| s.match(/^#{assoc.gsub('.', '\.')}/) }
end
def add_links(options)
links = @hash.fetch(:links) { {} }
- resources = serializer.instance_variable_get(:@resource)
- @hash[:links] = add_pagination_links(links, resources, options) if is_paginated?(resources)
+ collection = serializer.object
+ @hash[:links] = add_pagination_links(links, collection, options) if paginated?(collection)
end
- def add_pagination_links(links, resources, options)
- pagination_links = JsonApi::PaginationLinks.new(resources, options[:context]).serializable_hash(options)
+ def add_pagination_links(links, collection, options)
+ pagination_links = JsonApi::PaginationLinks.new(collection, options[:context]).serializable_hash(options)
links.update(pagination_links)
end
- def is_paginated?(resource)
- resource.respond_to?(:current_page) &&
- resource.respond_to?(:total_pages) &&
- resource.respond_to?(:size)
+ def paginated?(collection)
+ collection.respond_to?(:current_page) &&
+ collection.respond_to?(:total_pages) &&
+ collection.respond_to?(:size)
end
end
end
diff --git a/lib/active_model/serializer/adapter/json_api/fragment_cache.rb b/lib/active_model/serializer/adapter/json_api/fragment_cache.rb
index d266801f..070371ac 100644
--- a/lib/active_model/serializer/adapter/json_api/fragment_cache.rb
+++ b/lib/active_model/serializer/adapter/json_api/fragment_cache.rb
@@ -4,19 +4,17 @@ module ActiveModel
class Adapter
class JsonApi < Adapter
class FragmentCache
-
def fragment_cache(root, cached_hash, non_cached_hash)
hash = {}
core_cached = cached_hash.first
core_non_cached = non_cached_hash.first
- no_root_cache = cached_hash.delete_if {|key, value| key == core_cached[0] }
- no_root_non_cache = non_cached_hash.delete_if {|key, value| key == core_non_cached[0] }
+ no_root_cache = cached_hash.delete_if { |key, value| key == core_cached[0] }
+ no_root_non_cache = non_cached_hash.delete_if { |key, value| key == core_non_cached[0] }
cached_resource = (core_cached[1]) ? core_cached[1].deep_merge(core_non_cached[1]) : core_non_cached[1]
hash = (root) ? { root => cached_resource } : cached_resource
hash.deep_merge no_root_non_cache.deep_merge no_root_cache
end
-
end
end
end
diff --git a/lib/active_model/serializer/array_serializer.rb b/lib/active_model/serializer/array_serializer.rb
index f2f916e5..252eadf2 100644
--- a/lib/active_model/serializer/array_serializer.rb
+++ b/lib/active_model/serializer/array_serializer.rb
@@ -3,23 +3,22 @@ module ActiveModel
class ArraySerializer
NoSerializerError = Class.new(StandardError)
include Enumerable
- delegate :each, to: :@objects
+ delegate :each, to: :@serializers
- attr_reader :root, :meta, :meta_key
+ attr_reader :object, :root, :meta, :meta_key
- def initialize(objects, options = {})
+ def initialize(resources, options = {})
@root = options[:root]
- @resource = objects
- @objects = objects.map do |object|
- serializer_class = options.fetch(
- :serializer,
- ActiveModel::Serializer.serializer_for(object)
- )
+ @object = resources
+ @serializers = resources.map do |resource|
+ serializer_class = options.fetch(:serializer) {
+ ActiveModel::Serializer.serializer_for(resource)
+ }
if serializer_class.nil?
- fail NoSerializerError, "No serializer found for object: #{object.inspect}"
+ fail NoSerializerError, "No serializer found for resource: #{resource.inspect}"
else
- serializer_class.new(object, options.except(:serializer))
+ serializer_class.new(resource, options.except(:serializer))
end
end
@meta = options[:meta]
@@ -27,7 +26,7 @@ module ActiveModel
end
def json_key
- key = root || @objects.first.try(:json_key) || @resource.try(:name).try(:underscore)
+ key = root || @serializers.first.try(:json_key) || object.try(:name).try(:underscore)
key.try(:pluralize)
end
end
diff --git a/lib/active_model/serializer/association.rb b/lib/active_model/serializer/association.rb
index bca03665..1003f0a6 100644
--- a/lib/active_model/serializer/association.rb
+++ b/lib/active_model/serializer/association.rb
@@ -10,7 +10,6 @@ module ActiveModel
# Association.new(:comments, CommentSummarySerializer)
#
Association = Struct.new(:name, :serializer, :options) do
-
# @return [Symbol]
#
def key
diff --git a/lib/active_model/serializer/fieldset.rb b/lib/active_model/serializer/fieldset.rb
index 63333cf2..30e68334 100644
--- a/lib/active_model/serializer/fieldset.rb
+++ b/lib/active_model/serializer/fieldset.rb
@@ -1,7 +1,6 @@
module ActiveModel
class Serializer
class Fieldset
-
def initialize(fields, root = nil)
@root = root
@raw_fields = fields
@@ -16,7 +15,7 @@ module ActiveModel
fields[key.to_sym] || fields[key.pluralize.to_sym]
end
- private
+ private
ActiveModelSerializers.silence_warnings do
attr_reader :raw_fields, :root
@@ -24,7 +23,7 @@ module ActiveModel
def parsed_fields
if raw_fields.is_a?(Hash)
- raw_fields.inject({}) { |h,(k,v)| h[k.to_sym] = v.map(&:to_sym); h}
+ raw_fields.inject({}) { |h, (k, v)| h[k.to_sym] = v.map(&:to_sym); h }
elsif raw_fields.is_a?(Array)
if root.nil?
raise ArgumentError, 'The root argument must be specified if the fileds argument is an array.'
@@ -36,7 +35,6 @@ module ActiveModel
{}
end
end
-
end
end
end
diff --git a/lib/active_model/serializer/lint.rb b/lib/active_model/serializer/lint.rb
index bf3b7a37..29d564ed 100644
--- a/lib/active_model/serializer/lint.rb
+++ b/lib/active_model/serializer/lint.rb
@@ -15,7 +15,6 @@ module ActiveModel::Serializer::Lint
# always return +{}+, and the tests would pass. It is up to you to ensure
# that the values are semantically meaningful.
module Tests
-
# Passes if the object responds to serializable_hash and if it takes
# zero or one arguments.
# Fails otherwise.
@@ -23,7 +22,7 @@ module ActiveModel::Serializer::Lint
# serializable_hash returns a hash representation of a object's attributes.
# Typically, it is implemented by including ActiveModel::Serialization.
def test_serializable_hash
- assert_respond_to resource, :serializable_hash, "The resource should respond to serializable_hash"
+ assert_respond_to resource, :serializable_hash, 'The resource should respond to serializable_hash'
resource.serializable_hash
resource.serializable_hash(nil)
end
@@ -35,7 +34,7 @@ module ActiveModel::Serializer::Lint
# read_attribute_for_serialization gets the attribute value for serialization
# Typically, it is implemented by including ActiveModel::Serialization.
def test_read_attribute_for_serialization
- assert_respond_to resource, :read_attribute_for_serialization, "The resource should respond to read_attribute_for_serialization"
+ assert_respond_to resource, :read_attribute_for_serialization, 'The resource should respond to read_attribute_for_serialization'
actual_arity = resource.method(:read_attribute_for_serialization).arity
if defined?(::Rubinius)
# 1 for def read_attribute_for_serialization(name); end
@@ -126,6 +125,5 @@ module ActiveModel::Serializer::Lint
def assert_instance_of(result, name)
assert result.instance_of?(name), "#{result} should be an instance of #{name}"
end
-
end
end
diff --git a/lib/active_model/serializer/version.rb b/lib/active_model/serializer/version.rb
index 3e2ca6bc..143d55da 100644
--- a/lib/active_model/serializer/version.rb
+++ b/lib/active_model/serializer/version.rb
@@ -1,5 +1,5 @@
module ActiveModel
class Serializer
- VERSION = "0.10.0.rc2"
+ VERSION = '0.10.0.rc2'
end
end
diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb
index 8b90ba7a..d847bea9 100644
--- a/lib/active_model_serializers.rb
+++ b/lib/active_model_serializers.rb
@@ -8,7 +8,6 @@ module ActiveModelSerializers
ensure
$VERBOSE = verbose
end
-
end
require 'active_model'
diff --git a/lib/generators/serializer/serializer_generator.rb b/lib/generators/serializer/serializer_generator.rb
index 54db86e2..7a65fe77 100644
--- a/lib/generators/serializer/serializer_generator.rb
+++ b/lib/generators/serializer/serializer_generator.rb
@@ -1,15 +1,15 @@
module Rails
module Generators
class SerializerGenerator < NamedBase
- source_root File.expand_path("../templates", __FILE__)
- check_class_collision :suffix => "Serializer"
+ source_root File.expand_path('../templates', __FILE__)
+ check_class_collision :suffix => 'Serializer'
- argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
+ argument :attributes, :type => :array, :default => [], :banner => 'field:type field:type'
- class_option :parent, :type => :string, :desc => "The parent class for the generated serializer"
+ class_option :parent, :type => :string, :desc => 'The parent class for the generated serializer'
def create_serializer_file
- template 'serializer.rb', File.join('app/serializers', class_path, "#{file_name}_serializer.rb")
+ template 'serializer.rb.erb', File.join('app/serializers', class_path, "#{file_name}_serializer.rb")
end
private
@@ -26,9 +26,9 @@ module Rails
if options[:parent]
options[:parent]
elsif defined?(::ApplicationSerializer)
- "ApplicationSerializer"
+ 'ApplicationSerializer'
else
- "ActiveModel::Serializer"
+ 'ActiveModel::Serializer'
end
end
end
diff --git a/lib/generators/serializer/templates/serializer.rb b/lib/generators/serializer/templates/serializer.rb.erb
similarity index 100%
rename from lib/generators/serializer/templates/serializer.rb
rename to lib/generators/serializer/templates/serializer.rb.erb
diff --git a/lib/tasks/rubocop.rake b/lib/tasks/rubocop.rake
new file mode 100644
index 00000000..e69de29b
diff --git a/test/action_controller/adapter_selector_test.rb b/test/action_controller/adapter_selector_test.rb
index 88c0ce6b..bb9a4c9e 100644
--- a/test/action_controller/adapter_selector_test.rb
+++ b/test/action_controller/adapter_selector_test.rb
@@ -33,10 +33,10 @@ module ActionController
expected = {
data: {
id: assigns(:profile).id.to_s,
- type: "profiles",
+ type: 'profiles',
attributes: {
- name: "Name 1",
- description: "Description 1",
+ name: 'Name 1',
+ description: 'Description 1',
}
}
}
diff --git a/test/action_controller/explicit_serializer_test.rb b/test/action_controller/explicit_serializer_test.rb
index 126db5c7..17c70350 100644
--- a/test/action_controller/explicit_serializer_test.rb
+++ b/test/action_controller/explicit_serializer_test.rb
@@ -100,11 +100,11 @@ module ActionController
get :render_array_using_explicit_serializer_and_custom_serializers
expected = [
- { "title" => "New Post",
- "body" => "Body",
- "id" => assigns(:post).id,
- "comments" => [{"id" => 1}, {"id" => 2}],
- "author" => { "id" => assigns(:author).id }
+ { 'title' => 'New Post',
+ 'body' => 'Body',
+ 'id' => assigns(:post).id,
+ 'comments' => [{ 'id' => 1 }, { 'id' => 2 }],
+ 'author' => { 'id' => assigns(:author).id }
}
]
@@ -116,13 +116,13 @@ module ActionController
expected = {
id: 1337,
- name: "Amazing Place",
+ name: 'Amazing Place',
locations: [
{
id: 42,
- lat: "-23.550520",
- lng: "-46.633309",
- place: "Nowhere" # is a virtual attribute on LocationSerializer
+ lat: '-23.550520',
+ lng: '-46.633309',
+ place: 'Nowhere' # is a virtual attribute on LocationSerializer
}
]
}
diff --git a/test/action_controller/json_api/linked_test.rb b/test/action_controller/json_api/linked_test.rb
index a3422fa5..fc0c8793 100644
--- a/test/action_controller/json_api/linked_test.rb
+++ b/test/action_controller/json_api/linked_test.rb
@@ -28,10 +28,10 @@ module ActionController
@first_comment.author = @author2
@second_comment.post = @post
@second_comment.author = nil
- @post2 = Post.new(id: 2, title: "Another Post", body: "Body")
+ @post2 = Post.new(id: 2, title: 'Another Post', body: 'Body')
@post2.author = @author
@post2.comments = []
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@post.blog = @blog
@post2.blog = @blog
end
@@ -75,7 +75,7 @@ module ActionController
def render_collection_with_include
setup_post
- render json: [@post], include: ['author', 'comments'], adapter: :json_api
+ render json: [@post], include: %w(author comments), adapter: :json_api
end
end
@@ -100,37 +100,37 @@ module ActionController
response = JSON.parse(@response.body)
expected_linked = [
{
- "id" => "1",
- "type" => "authors",
- "attributes" => {
- "name" => "Steve K."
+ 'id' => '1',
+ 'type' => 'authors',
+ 'attributes' => {
+ 'name' => 'Steve K.'
},
- "relationships" => {
- "posts" => { "data" => [] },
- "roles" => { "data" => [{ "type" =>"roles", "id" => "1" }, { "type" =>"roles", "id" => "2" }] },
- "bio" => { "data" => nil }
+ 'relationships' => {
+ 'posts' => { 'data' => [] },
+ 'roles' => { 'data' => [{ 'type' => 'roles', 'id' => '1' }, { 'type' => 'roles', 'id' => '2' }] },
+ 'bio' => { 'data' => nil }
}
}, {
- "id" => "1",
- "type" => "roles",
- "attributes" => {
- "name" => "admin",
- "description" => nil,
- "slug" => "admin-1"
+ 'id' => '1',
+ 'type' => 'roles',
+ 'attributes' => {
+ 'name' => 'admin',
+ 'description' => nil,
+ 'slug' => 'admin-1'
},
- "relationships" => {
- "author" => { "data" => { "type" =>"authors", "id" => "1" } }
+ 'relationships' => {
+ 'author' => { 'data' => { 'type' => 'authors', 'id' => '1' } }
}
}, {
- "id" => "2",
- "type" => "roles",
- "attributes" => {
- "name" => "colab",
- "description" => nil,
- "slug" => "colab-2"
+ 'id' => '2',
+ 'type' => 'roles',
+ 'attributes' => {
+ 'name' => 'colab',
+ 'description' => nil,
+ 'slug' => 'colab-2'
},
- "relationships" => {
- "author" => { "data" => { "type" =>"authors", "id" => "1" } }
+ 'relationships' => {
+ 'author' => { 'data' => { 'type' => 'authors', 'id' => '1' } }
}
}
]
@@ -172,7 +172,7 @@ module ActionController
end
def has_type?(collection, value)
- collection.detect { |i| i['type'] == value}
+ collection.detect { |i| i['type'] == value }
end
end
end
diff --git a/test/action_controller/json_api/pagination_test.rb b/test/action_controller/json_api/pagination_test.rb
index 55db95ef..4286ed88 100644
--- a/test/action_controller/json_api/pagination_test.rb
+++ b/test/action_controller/json_api/pagination_test.rb
@@ -47,11 +47,11 @@ module ActionController
tests PaginationTestController
def test_render_pagination_links_with_will_paginate
- expected_links = { "self"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1",
- "first"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
- "prev"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
- "next"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
- "last"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1"}
+ expected_links = { 'self' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1",
+ 'first' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
+ 'prev' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
+ 'next' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
+ 'last' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1" }
get :render_pagination_using_will_paginate, page: { number: 2, size: 1 }
response = JSON.parse(@response.body)
@@ -59,48 +59,48 @@ module ActionController
end
def test_render_only_last_and_next_pagination_links
- expected_links = { "self"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
- "next"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2",
- "last"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2"}
+ expected_links = { 'self' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2",
+ 'next' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2",
+ 'last' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2" }
get :render_pagination_using_will_paginate, page: { number: 1, size: 2 }
response = JSON.parse(@response.body)
assert_equal expected_links, response['links']
end
def test_render_pagination_links_with_kaminari
- expected_links = { "self"=>"#{KAMINARI_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1",
- "first"=>"#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
- "prev"=>"#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
- "next"=>"#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
- "last"=>"#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1"}
+ expected_links = { 'self' => "#{KAMINARI_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1",
+ 'first' => "#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
+ 'prev' => "#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
+ 'next' => "#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
+ 'last' => "#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1" }
get :render_pagination_using_kaminari, page: { number: 2, size: 1 }
response = JSON.parse(@response.body)
assert_equal expected_links, response['links']
end
def test_render_only_prev_and_first_pagination_links
- expected_links = { "self"=>"#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
- "first"=>"#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
- "prev"=>"#{KAMINARI_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1"}
+ expected_links = { 'self' => "#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1",
+ 'first' => "#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
+ 'prev' => "#{KAMINARI_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1" }
get :render_pagination_using_kaminari, page: { number: 3, size: 1 }
response = JSON.parse(@response.body)
assert_equal expected_links, response['links']
end
def test_render_only_last_and_next_pagination_links_with_additional_params
- expected_links = { "self"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2&teste=additional",
- "next"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2&teste=additional",
- "last"=>"#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2&teste=additional"}
- get :render_pagination_using_will_paginate, page: { number: 1, size: 2 }, teste: "additional"
+ expected_links = { 'self' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=2&teste=additional",
+ 'next' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2&teste=additional",
+ 'last' => "#{WILL_PAGINATE_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=2&teste=additional" }
+ get :render_pagination_using_will_paginate, page: { number: 1, size: 2 }, teste: 'additional'
response = JSON.parse(@response.body)
assert_equal expected_links, response['links']
end
def test_render_only_prev_and_first_pagination_links_with_additional_params
- expected_links = { "self"=>"#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1&teste=additional",
- "first"=>"#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1&teste=additional",
- "prev"=>"#{KAMINARI_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1&teste=additional"}
- get :render_pagination_using_kaminari, page: { number: 3, size: 1 }, teste: "additional"
+ expected_links = { 'self' => "#{KAMINARI_URI}?page%5Bnumber%5D=3&page%5Bsize%5D=1&teste=additional",
+ 'first' => "#{KAMINARI_URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1&teste=additional",
+ 'prev' => "#{KAMINARI_URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1&teste=additional" }
+ get :render_pagination_using_kaminari, page: { number: 3, size: 1 }, teste: 'additional'
response = JSON.parse(@response.body)
assert_equal expected_links, response['links']
end
diff --git a/test/action_controller/serialization_test.rb b/test/action_controller/serialization_test.rb
index 45006597..79d7c037 100644
--- a/test/action_controller/serialization_test.rb
+++ b/test/action_controller/serialization_test.rb
@@ -6,49 +6,48 @@ module ActionController
include ActiveSupport::Testing::Stream
class ImplicitSerializationTestController < ActionController::Base
def render_using_implicit_serializer
- @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
+ @profile = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
render json: @profile
end
def render_using_default_adapter_root
- @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
+ @profile = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
render json: @profile
end
def render_array_using_custom_root
- @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
- render json: [@profile], root: "custom_root"
+ @profile = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
+ render json: [@profile], root: 'custom_root'
end
def render_array_that_is_empty_using_custom_root
- render json: [], root: "custom_root"
+ render json: [], root: 'custom_root'
end
def render_object_using_custom_root
- @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
- render json: @profile, root: "custom_root"
+ @profile = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
+ render json: @profile, root: 'custom_root'
end
def render_array_using_implicit_serializer
array = [
- Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' }),
- Profile.new({ name: 'Name 2', description: 'Description 2', comments: 'Comments 2' })
+ Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1'),
+ Profile.new(name: 'Name 2', description: 'Description 2', comments: 'Comments 2')
]
render json: array
end
def render_array_using_implicit_serializer_and_meta
@profiles = [
- Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
+ Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
]
-
render json: @profiles, meta: { total: 10 }
end
def render_object_with_cache_enabled
- @comment = Comment.new({ id: 1, body: 'ZOMG A COMMENT' })
+ @comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
@author = Author.new(id: 1, name: 'Joao Moura.')
- @post = Post.new({ id: 1, title: 'New Post', body: 'Body', comments: [@comment], author: @author })
+ @post = Post.new(id: 1, title: 'New Post', body: 'Body', comments: [@comment], author: @author)
generate_cached_serializer(@post)
@@ -57,11 +56,11 @@ module ActionController
end
def render_json_object_without_serializer
- render json: {error: 'Result is Invalid'}
+ render json: { error: 'Result is Invalid' }
end
def render_json_array_object_without_serializer
- render json: [{error: 'Result is Invalid'}]
+ render json: [{ error: 'Result is Invalid' }]
end
def update_and_render_object_with_cache_enabled
@@ -72,9 +71,9 @@ module ActionController
end
def render_object_expired_with_cache_enabled
- comment = Comment.new({ id: 1, body: 'ZOMG A COMMENT' })
+ comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
author = Author.new(id: 1, name: 'Joao Moura.')
- post = Post.new({ id: 1, title: 'New Post', body: 'Body', comments: [comment], author: author })
+ post = Post.new(id: 1, title: 'New Post', body: 'Body', comments: [comment], author: author)
generate_cached_serializer(post)
@@ -84,16 +83,16 @@ module ActionController
end
def render_changed_object_with_cache_enabled
- comment = Comment.new({ id: 1, body: 'ZOMG A COMMENT' })
+ comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
author = Author.new(id: 1, name: 'Joao Moura.')
- post = Post.new({ id: 1, title: 'ZOMG a New Post', body: 'Body', comments: [comment], author: author })
+ post = Post.new(id: 1, title: 'ZOMG a New Post', body: 'Body', comments: [comment], author: author)
render json: post
end
def render_fragment_changed_object_with_only_cache_enabled
author = Author.new(id: 1, name: 'Joao Moura.')
- role = Role.new({ id: 42, name: 'ZOMG A ROLE', description: 'DESCRIPTION HERE', author: author })
+ role = Role.new(id: 42, name: 'ZOMG A ROLE', description: 'DESCRIPTION HERE', author: author)
generate_cached_serializer(role)
role.name = 'lol'
@@ -104,7 +103,7 @@ module ActionController
def render_fragment_changed_object_with_except_cache_enabled
author = Author.new(id: 1, name: 'Joao Moura.')
- bio = Bio.new({ id: 42, content: 'ZOMG A ROLE', rating: 5, author: author })
+ bio = Bio.new(id: 42, content: 'ZOMG A ROLE', rating: 5, author: author)
generate_cached_serializer(bio)
bio.content = 'lol'
@@ -114,18 +113,19 @@ module ActionController
end
def render_fragment_changed_object_with_relationship
- comment = Comment.new({ id: 1, body: 'ZOMG A COMMENT' })
- comment2 = Comment.new({ id: 1, body: 'ZOMG AN UPDATED-BUT-NOT-CACHE-EXPIRED COMMENT' })
- like = Like.new({ id: 1, likeable: comment, time: 3.days.ago })
+ comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
+ comment2 = Comment.new(id: 1, body: 'ZOMG AN UPDATED-BUT-NOT-CACHE-EXPIRED COMMENT')
+ like = Like.new(id: 1, likeable: comment, time: 3.days.ago)
generate_cached_serializer(like)
like.likable = comment2
- like.time = Time.now.to_s
+ like.time = Time.zone.now.to_s
render json: like
end
private
+
def generate_cached_serializer(obj)
ActiveModel::SerializableResource.new(obj).to_json
end
@@ -147,8 +147,8 @@ module ActionController
get :render_using_implicit_serializer
expected = {
- name: "Name 1",
- description: "Description 1"
+ name: 'Name 1',
+ description: 'Description 1'
}
assert_equal 'application/json', @response.content_type
@@ -162,10 +162,10 @@ module ActionController
expected = {
data: {
id: assigns(:profile).id.to_s,
- type: "profiles",
+ type: 'profiles',
attributes: {
- name: "Name 1",
- description: "Description 1"
+ name: 'Name 1',
+ description: 'Description 1'
}
}
}
@@ -178,7 +178,7 @@ module ActionController
with_adapter :json do
get :render_array_using_custom_root
end
- expected = {custom_roots: [{name: "Name 1", description: "Description 1"}]}
+ expected = { custom_roots: [{ name: 'Name 1', description: 'Description 1' }] }
assert_equal 'application/json', @response.content_type
assert_equal expected.to_json, @response.body
end
@@ -188,7 +188,7 @@ module ActionController
get :render_array_that_is_empty_using_custom_root
end
- expected = {custom_roots: []}
+ expected = { custom_roots: [] }
assert_equal 'application/json', @response.content_type
assert_equal expected.to_json, @response.body
end
@@ -198,7 +198,7 @@ module ActionController
get :render_object_using_custom_root
end
- expected = {custom_root: {name: "Name 1", description: "Description 1"}}
+ expected = { custom_root: { name: 'Name 1', description: 'Description 1' } }
assert_equal 'application/json', @response.content_type
assert_equal expected.to_json, @response.body
end
@@ -207,7 +207,7 @@ module ActionController
get :render_json_object_without_serializer
assert_equal 'application/json', @response.content_type
- expected_body = {error: 'Result is Invalid'}
+ expected_body = { error: 'Result is Invalid' }
assert_equal expected_body.to_json, @response.body
end
@@ -215,7 +215,7 @@ module ActionController
get :render_json_array_object_without_serializer
assert_equal 'application/json', @response.content_type
- expected_body = [{error: 'Result is Invalid'}]
+ expected_body = [{ error: 'Result is Invalid' }]
assert_equal expected_body.to_json, @response.body
end
@@ -226,11 +226,11 @@ module ActionController
expected = [
{
name: 'Name 1',
- description: 'Description 1',
+ description: 'Description 1'
},
{
name: 'Name 2',
- description: 'Description 2',
+ description: 'Description 2'
}
]
@@ -245,10 +245,10 @@ module ActionController
data: [
{
id: assigns(:profiles).first.id.to_s,
- type: "profiles",
+ type: 'profiles',
attributes: {
- name: "Name 1",
- description: "Description 1"
+ name: 'Name 1',
+ description: 'Description 1'
}
}
],
@@ -282,7 +282,7 @@ module ActionController
}
ActionController::Base.cache_store.clear
- Timecop.freeze(Time.now) do
+ Timecop.freeze(Time.zone.now) do
get :render_object_with_cache_enabled
assert_equal 'application/json', @response.content_type
@@ -330,8 +330,8 @@ module ActionController
response = JSON.parse(@response.body)
assert_equal 'application/json', @response.content_type
- assert_equal 'ZOMG A ROLE', response["name"]
- assert_equal 'HUEHUEBRBR', response["description"]
+ assert_equal 'ZOMG A ROLE', response['name']
+ assert_equal 'HUEHUEBRBR', response['description']
end
def test_render_with_fragment_except_cache_enable
@@ -340,23 +340,23 @@ module ActionController
response = JSON.parse(@response.body)
assert_equal 'application/json', @response.content_type
- assert_equal 5, response["rating"]
- assert_equal 'lol', response["content"]
+ assert_equal 5, response['rating']
+ assert_equal 'lol', response['content']
end
def test_render_fragment_changed_object_with_relationship
ActionController::Base.cache_store.clear
- Timecop.freeze(Time.now) do
+ Timecop.freeze(Time.zone.now) do
get :render_fragment_changed_object_with_relationship
response = JSON.parse(@response.body)
expected_return = {
- "id"=>1,
- "time"=>Time.now.to_s,
- "likeable" => {
- "id"=>1,
- "body"=>"ZOMG A COMMENT"
+ 'id' => 1,
+ 'time' => Time.zone.now.to_s,
+ 'likeable' => {
+ 'id' => 1,
+ 'body' => 'ZOMG A COMMENT'
}
}
@@ -379,8 +379,8 @@ module ActionController
body: 'ZOMG A COMMENT' }
],
blog: {
- id:999,
- name: "Custom blog"
+ id: 999,
+ name: 'Custom blog'
},
author: {
id: 1,
@@ -411,7 +411,7 @@ module ActionController
true
end
}.new
- assert_equal "", (capture(:stderr) {
+ assert_equal '', (capture(:stderr) {
controller.get_serializer(Profile.new)
})
end
diff --git a/test/adapter/fragment_cache_test.rb b/test/adapter/fragment_cache_test.rb
index e2e4e2f4..6442156d 100644
--- a/test/adapter/fragment_cache_test.rb
+++ b/test/adapter/fragment_cache_test.rb
@@ -4,9 +4,9 @@ module ActiveModel
class Adapter
class FragmentCacheTest < Minitest::Test
def setup
- @spam = Spam::UnrelatedLink.new(id: "spam-id-1")
+ @spam = Spam::UnrelatedLink.new(id: 'spam-id-1')
@author = Author.new(name: 'Joao M. D. Moura')
- @role = Role.new(name: 'Great Author', description:nil)
+ @role = Role.new(name: 'Great Author', description: nil)
@role.author = [@author]
@role_serializer = RoleSerializer.new(@role)
@spam_serializer = Spam::UnrelatedLinkSerializer.new(@spam)
diff --git a/test/adapter/json/belongs_to_test.rb b/test/adapter/json/belongs_to_test.rb
index f39080fd..217f920c 100644
--- a/test/adapter/json/belongs_to_test.rb
+++ b/test/adapter/json/belongs_to_test.rb
@@ -14,7 +14,7 @@ module ActiveModel
@comment.post = @post
@comment.author = nil
@anonymous_post.author = nil
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@post.blog = @blog
@anonymous_post.blog = nil
@@ -24,21 +24,21 @@ module ActiveModel
end
def test_includes_post
- assert_equal({id: 42, title: 'New Post', body: 'Body'}, @adapter.serializable_hash[:comment][:post])
+ assert_equal({ id: 42, title: 'New Post', body: 'Body' }, @adapter.serializable_hash[:comment][:post])
end
def test_include_nil_author
serializer = PostSerializer.new(@anonymous_post)
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
- assert_equal({post: {title: "Hello!!", body: "Hello, world!!", id: 43, comments: [], blog: {id: 999, name: "Custom blog"}, author: nil}}, adapter.serializable_hash)
+ assert_equal({ post: { title: 'Hello!!', body: 'Hello, world!!', id: 43, comments: [], blog: { id: 999, name: 'Custom blog' }, author: nil } }, adapter.serializable_hash)
end
def test_include_nil_author_with_specified_serializer
serializer = PostPreviewSerializer.new(@anonymous_post)
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
- assert_equal({post: {title: "Hello!!", body: "Hello, world!!", id: 43, comments: [], author: nil}}, adapter.serializable_hash)
+ assert_equal({ post: { title: 'Hello!!', body: 'Hello, world!!', id: 43, comments: [], author: nil } }, adapter.serializable_hash)
end
end
end
diff --git a/test/adapter/json/collection_test.rb b/test/adapter/json/collection_test.rb
index 295a0e3f..8ebc0aa8 100644
--- a/test/adapter/json/collection_test.rb
+++ b/test/adapter/json/collection_test.rb
@@ -13,7 +13,7 @@ module ActiveModel
@second_post.comments = []
@first_post.author = @author
@second_post.author = @author
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@first_post.blog = @blog
@second_post.blog = nil
@@ -21,16 +21,16 @@ module ActiveModel
end
def test_with_serializer_option
- @blog.special_attribute = "Special"
+ @blog.special_attribute = 'Special'
@blog.articles = [@first_post, @second_post]
serializer = ArraySerializer.new([@blog], serializer: CustomBlogSerializer)
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
- expected = {blogs:[{
+ expected = { blogs: [{
id: 1,
- special_attribute: "Special",
- articles: [{id: 1,title: "Hello!!", body: "Hello, world!!"}, {id: 2, title: "New Post", body: "Body"}]
- }]}
+ special_attribute: 'Special',
+ articles: [{ id: 1, title: 'Hello!!', body: 'Hello, world!!' }, { id: 2, title: 'New Post', body: 'Body' }]
+ }] }
assert_equal expected, adapter.serializable_hash
end
@@ -39,32 +39,32 @@ module ActiveModel
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
expected = { posts: [{
- title: "Hello!!",
- body: "Hello, world!!",
+ title: 'Hello!!',
+ body: 'Hello, world!!',
id: 1,
comments: [],
author: {
id: 1,
- name: "Steve K."
+ name: 'Steve K.'
},
blog: {
id: 999,
- name: "Custom blog"
+ name: 'Custom blog'
}
}, {
- title: "New Post",
- body: "Body",
+ title: 'New Post',
+ body: 'Body',
id: 2,
comments: [],
author: {
id: 1,
- name: "Steve K."
+ name: 'Steve K.'
},
blog: {
id: 999,
- name: "Custom blog"
+ name: 'Custom blog'
}
- }]}
+ }] }
assert_equal expected, adapter.serializable_hash
end
diff --git a/test/adapter/json/has_many_test.rb b/test/adapter/json/has_many_test.rb
index 14e27fc3..2a0a96c6 100644
--- a/test/adapter/json/has_many_test.rb
+++ b/test/adapter/json/has_many_test.rb
@@ -15,9 +15,9 @@ module ActiveModel
@post.author = @author
@first_comment.post = @post
@second_comment.post = @post
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@post.blog = @blog
- @tag = Tag.new(id: 1, name: "#hash_tag")
+ @tag = Tag.new(id: 1, name: '#hash_tag')
@post.tags = [@tag]
end
@@ -25,8 +25,8 @@ module ActiveModel
serializer = PostSerializer.new(@post)
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
assert_equal([
- {id: 1, body: 'ZOMG A COMMENT'},
- {id: 2, body: 'ZOMG ANOTHER COMMENT'}
+ { id: 1, body: 'ZOMG A COMMENT' },
+ { id: 2, body: 'ZOMG ANOTHER COMMENT' }
], adapter.serializable_hash[:post][:comments])
end
@@ -36,7 +36,7 @@ module ActiveModel
assert_equal({
id: 42,
tags: [
- {"attributes"=>{"id"=>1, "name"=>"#hash_tag"}}
+ { 'attributes' => { 'id' => 1, 'name' => '#hash_tag' } }
]
}.to_json, adapter.serializable_hash[:post].to_json)
end
diff --git a/test/adapter/json_api/belongs_to_test.rb b/test/adapter/json_api/belongs_to_test.rb
index 967b53e9..5cb6cdeb 100644
--- a/test/adapter/json_api/belongs_to_test.rb
+++ b/test/adapter/json_api/belongs_to_test.rb
@@ -21,7 +21,7 @@ module ActiveModel
@comment.author = nil
@post.author = @author
@anonymous_post.author = nil
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@blog.writer = @author
@blog.articles = [@post, @anonymous_post]
@author.posts = []
@@ -32,7 +32,7 @@ module ActiveModel
end
def test_includes_post_id
- expected = { data: { type: "posts", id: "42" } }
+ expected = { data: { type: 'posts', id: '42' } }
assert_equal(expected, @adapter.serializable_hash[:data][:relationships][:post])
end
@@ -40,33 +40,33 @@ module ActiveModel
def test_includes_linked_post
@adapter = ActiveModel::Serializer::Adapter::JsonApi.new(@serializer, include: 'post')
expected = [{
- id: "42",
- type: "posts",
+ id: '42',
+ type: 'posts',
attributes: {
title: 'New Post',
body: 'Body',
},
relationships: {
- comments: { data: [ { type: "comments", id: "1" } ] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ comments: { data: [{ type: 'comments', id: '1' }] },
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
}]
assert_equal expected, @adapter.serializable_hash[:included]
end
def test_limiting_linked_post_fields
- @adapter = ActiveModel::Serializer::Adapter::JsonApi.new(@serializer, include: 'post', fields: {post: [:title]})
+ @adapter = ActiveModel::Serializer::Adapter::JsonApi.new(@serializer, include: 'post', fields: { post: [:title] })
expected = [{
- id: "42",
- type: "posts",
+ id: '42',
+ type: 'posts',
attributes: {
title: 'New Post'
},
relationships: {
- comments: { data: [ { type: "comments", id: "1" } ] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ comments: { data: [{ type: 'comments', id: '1' }] },
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
}]
assert_equal expected, @adapter.serializable_hash[:included]
@@ -76,7 +76,7 @@ module ActiveModel
serializer = PostSerializer.new(@anonymous_post)
adapter = ActiveModel::Serializer::Adapter::JsonApi.new(serializer)
- assert_equal({comments: { data: [] }, blog: { data: { type: "blogs", id: "999" } }, author: { data: nil }}, adapter.serializable_hash[:data][:relationships])
+ assert_equal({ comments: { data: [] }, blog: { data: { type: 'blogs', id: '999' } }, author: { data: nil } }, adapter.serializable_hash[:data][:relationships])
end
def test_include_type_for_association_when_different_than_name
@@ -86,19 +86,19 @@ module ActiveModel
expected = {
writer: {
data: {
- type: "authors",
- id: "1"
+ type: 'authors',
+ id: '1'
}
},
articles: {
data: [
{
- type: "posts",
- id: "42"
+ type: 'posts',
+ id: '42'
},
{
- type: "posts",
- id: "43"
+ type: 'posts',
+ id: '43'
}
]
}
@@ -108,42 +108,42 @@ module ActiveModel
def test_include_linked_resources_with_type_name
serializer = BlogSerializer.new(@blog)
- adapter = ActiveModel::Serializer::Adapter::JsonApi.new(serializer, include: ['writer', 'articles'])
+ adapter = ActiveModel::Serializer::Adapter::JsonApi.new(serializer, include: %w(writer articles))
linked = adapter.serializable_hash[:included]
expected = [
{
- id: "1",
- type: "authors",
+ id: '1',
+ type: 'authors',
attributes: {
- name: "Steve K."
+ name: 'Steve K.'
},
relationships: {
posts: { data: [] },
roles: { data: [] },
bio: { data: nil }
}
- },{
- id: "42",
- type: "posts",
+ }, {
+ id: '42',
+ type: 'posts',
attributes: {
- title: "New Post",
- body: "Body"
+ title: 'New Post',
+ body: 'Body'
},
relationships: {
- comments: { data: [ { type: "comments", id: "1" } ] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ comments: { data: [{ type: 'comments', id: '1' }] },
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
}, {
- id: "43",
- type: "posts",
+ id: '43',
+ type: 'posts',
attributes: {
- title: "Hello!!",
- body: "Hello, world!!"
+ title: 'Hello!!',
+ body: 'Hello, world!!'
},
relationships: {
comments: { data: [] },
- blog: { data: { type: "blogs", id: "999" } },
+ blog: { data: { type: 'blogs', id: '999' } },
author: { data: nil }
}
}
diff --git a/test/adapter/json_api/collection_test.rb b/test/adapter/json_api/collection_test.rb
index f0d4eff1..c17c8aad 100644
--- a/test/adapter/json_api/collection_test.rb
+++ b/test/adapter/json_api/collection_test.rb
@@ -27,29 +27,29 @@ module ActiveModel
def test_include_multiple_posts
expected = [
{
- id: "1",
- type: "posts",
+ id: '1',
+ type: 'posts',
attributes: {
- title: "Hello!!",
- body: "Hello, world!!"
+ title: 'Hello!!',
+ body: 'Hello, world!!'
},
relationships: {
comments: { data: [] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
},
{
- id: "2",
- type: "posts",
+ id: '2',
+ type: 'posts',
attributes: {
- title: "New Post",
- body: "Body"
+ title: 'New Post',
+ body: 'Body'
},
relationships: {
comments: { data: [] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
}
]
@@ -62,33 +62,32 @@ module ActiveModel
expected = [
{
- id: "1",
- type: "posts",
+ id: '1',
+ type: 'posts',
attributes: {
- title: "Hello!!"
+ title: 'Hello!!'
},
relationships: {
comments: { data: [] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
},
{
- id: "2",
- type: "posts",
+ id: '2',
+ type: 'posts',
attributes: {
- title: "New Post"
+ title: 'New Post'
},
relationships: {
comments: { data: [] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
}
]
assert_equal(expected, @adapter.serializable_hash[:data])
end
-
end
end
end
diff --git a/test/adapter/json_api/has_many_embed_ids_test.rb b/test/adapter/json_api/has_many_embed_ids_test.rb
index 7dd132c7..15243c7a 100644
--- a/test/adapter/json_api/has_many_embed_ids_test.rb
+++ b/test/adapter/json_api/has_many_embed_ids_test.rb
@@ -27,8 +27,8 @@ module ActiveModel
def test_includes_comment_ids
expected = {
data: [
- { type: "posts", id: "1"},
- { type: "posts", id: "2"}
+ { type: 'posts', id: '1' },
+ { type: 'posts', id: '2' }
]
}
diff --git a/test/adapter/json_api/has_many_explicit_serializer_test.rb b/test/adapter/json_api/has_many_explicit_serializer_test.rb
index 2adb0eb5..aedde98c 100644
--- a/test/adapter/json_api/has_many_explicit_serializer_test.rb
+++ b/test/adapter/json_api/has_many_explicit_serializer_test.rb
@@ -24,7 +24,7 @@ module ActiveModel
@serializer = PostPreviewSerializer.new(@post)
@adapter = ActiveModel::Serializer::Adapter::JsonApi.new(
@serializer,
- include: ['comments', 'author']
+ include: %w(comments author)
)
end
@@ -58,9 +58,9 @@ module ActiveModel
},
{
id: @author.id.to_s,
- type: "authors",
+ type: 'authors',
relationships: {
- posts: { data: [ {type: "posts", id: @post.id.to_s } ] }
+ posts: { data: [{ type: 'posts', id: @post.id.to_s }] }
}
}
]
@@ -70,7 +70,7 @@ module ActiveModel
def test_includes_author_id
expected = {
- data: { type: "authors", id: @author.id.to_s }
+ data: { type: 'authors', id: @author.id.to_s }
}
assert_equal(expected, @adapter.serializable_hash[:data][:relationships][:author])
diff --git a/test/adapter/json_api/has_many_test.rb b/test/adapter/json_api/has_many_test.rb
index 5b14dda7..277380a0 100644
--- a/test/adapter/json_api/has_many_test.rb
+++ b/test/adapter/json_api/has_many_test.rb
@@ -22,12 +22,12 @@ module ActiveModel
@second_comment.post = @post
@post.author = @author
@post_without_comments.author = nil
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@blog.writer = @author
@blog.articles = [@post]
@post.blog = @blog
@post_without_comments.blog = nil
- @tag = Tag.new(id: 1, name: "#hash_tag")
+ @tag = Tag.new(id: 1, name: '#hash_tag')
@post.tags = [@tag]
@serializer = PostSerializer.new(@post)
@adapter = ActiveModel::Serializer::Adapter::JsonApi.new(@serializer)
@@ -36,7 +36,7 @@ module ActiveModel
end
def test_includes_comment_ids
- expected = { data: [ { type: "comments", id: "1" }, { type: "comments", id: "2" } ] }
+ expected = { data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }] }
assert_equal(expected, @adapter.serializable_hash[:data][:relationships][:comments])
end
@@ -44,23 +44,23 @@ module ActiveModel
def test_includes_linked_comments
@adapter = ActiveModel::Serializer::Adapter::JsonApi.new(@serializer, include: 'comments')
expected = [{
- id: "1",
- type: "comments",
+ id: '1',
+ type: 'comments',
attributes: {
body: 'ZOMG A COMMENT'
},
relationships: {
- post: { data: { type: "posts", id: "1" } },
+ post: { data: { type: 'posts', id: '1' } },
author: { data: nil }
}
}, {
- id: "2",
- type: "comments",
+ id: '2',
+ type: 'comments',
attributes: {
body: 'ZOMG ANOTHER COMMENT'
},
relationships: {
- post: { data: { type: "posts", id: "1" } },
+ post: { data: { type: 'posts', id: '1' } },
author: { data: nil }
}
}]
@@ -68,19 +68,19 @@ module ActiveModel
end
def test_limit_fields_of_linked_comments
- @adapter = ActiveModel::Serializer::Adapter::JsonApi.new(@serializer, include: 'comments', fields: {comment: [:id]})
+ @adapter = ActiveModel::Serializer::Adapter::JsonApi.new(@serializer, include: 'comments', fields: { comment: [:id] })
expected = [{
- id: "1",
- type: "comments",
+ id: '1',
+ type: 'comments',
relationships: {
- post: { data: { type: "posts", id: "1" } },
+ post: { data: { type: 'posts', id: '1' } },
author: { data: nil }
}
}, {
- id: "2",
- type: "comments",
+ id: '2',
+ type: 'comments',
relationships: {
- post: { data: { type: "posts", id: "1" } },
+ post: { data: { type: 'posts', id: '1' } },
author: { data: nil }
}
}]
@@ -101,8 +101,8 @@ module ActiveModel
expected = {
data: [{
- type: "posts",
- id: "1"
+ type: 'posts',
+ id: '1'
}]
}
assert_equal expected, actual
@@ -114,10 +114,10 @@ module ActiveModel
assert_equal({
data: {
- id: "1",
- type: "posts",
+ id: '1',
+ type: 'posts',
relationships: {
- tags: { data: [@tag.as_json]}
+ tags: { data: [@tag.as_json] }
}
}
}, adapter.serializable_hash)
@@ -129,11 +129,11 @@ module ActiveModel
assert_equal({
data: {
- id: "1",
- type: "virtual_values",
+ id: '1',
+ type: 'virtual_values',
relationships: {
- maker: {data: {id: 1}},
- reviews: {data: [{id: 1}, {id: 2}]}
+ maker: { data: { id: 1 } },
+ reviews: { data: [{ id: 1 }, { id: 2 }] }
}
}
}, adapter.serializable_hash)
diff --git a/test/adapter/json_api/has_one_test.rb b/test/adapter/json_api/has_one_test.rb
index f71977cf..3fb2bf5f 100644
--- a/test/adapter/json_api/has_one_test.rb
+++ b/test/adapter/json_api/has_one_test.rb
@@ -19,7 +19,7 @@ module ActiveModel
@comment.author = nil
@post.author = @author
@anonymous_post.author = nil
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@blog.writer = @author
@blog.articles = [@post, @anonymous_post]
@author.posts = []
@@ -32,7 +32,7 @@ module ActiveModel
end
def test_includes_bio_id
- expected = { data: { type: "bios", id: "43" } }
+ expected = { data: { type: 'bios', id: '43' } }
assert_equal(expected, @adapter.serializable_hash[:data][:relationships][:bio])
end
@@ -42,14 +42,14 @@ module ActiveModel
expected = [
{
- id: "43",
- type: "bios",
+ id: '43',
+ type: 'bios',
attributes: {
- content:"AMS Contributor",
+ content: 'AMS Contributor',
rating: nil
},
relationships: {
- author: { data: { type: "authors", id: "1" } }
+ author: { data: { type: 'authors', id: '1' } }
}
}
]
@@ -63,11 +63,11 @@ module ActiveModel
expected = {
data: {
- id: "1",
- type: "virtual_values",
+ id: '1',
+ type: 'virtual_values',
relationships: {
- maker: {data: {id: 1}},
- reviews: {data: [{id: 1}, {id: 2}]}
+ maker: { data: { id: 1 } },
+ reviews: { data: [{ id: 1 }, { id: 2 }] }
}
}
}
diff --git a/test/adapter/json_api/json_api_test.rb b/test/adapter/json_api/json_api_test.rb
index 5440811a..16d1f93d 100644
--- a/test/adapter/json_api/json_api_test.rb
+++ b/test/adapter/json_api/json_api_test.rb
@@ -14,9 +14,8 @@ module ActiveModel
@first_comment.post = @post
@second_comment.post = @post
@post.author = @author
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@post.blog = @blog
-
end
def test_custom_keys
@@ -25,11 +24,11 @@ module ActiveModel
assert_equal({
reviews: { data: [
- {type: "comments", id: "1"},
- {type: "comments", id: "2"}
- ]},
- writer: { data: {type: "authors", id: "1"} },
- site: { data: {type: "blogs", id: "1" } }
+ { type: 'comments', id: '1' },
+ { type: 'comments', id: '2' }
+ ] },
+ writer: { data: { type: 'authors', id: '1' } },
+ site: { data: { type: 'blogs', id: '1' } }
}, adapter.serializable_hash[:data][:relationships])
end
end
diff --git a/test/adapter/json_api/linked_test.rb b/test/adapter/json_api/linked_test.rb
index da038959..261c001a 100644
--- a/test/adapter/json_api/linked_test.rb
+++ b/test/adapter/json_api/linked_test.rb
@@ -53,94 +53,94 @@ module ActiveModel
expected = {
data: [
{
- id: "10",
- type: "posts",
+ id: '10',
+ type: 'posts',
attributes: {
- title: "Hello!!",
- body: "Hello, world!!"
+ title: 'Hello!!',
+ body: 'Hello, world!!'
},
relationships: {
- comments: { data: [ { type: "comments", id: '1' }, { type: "comments", id: '2' } ] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ comments: { data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }] },
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
},
{
- id: "20",
- type: "posts",
+ id: '20',
+ type: 'posts',
attributes: {
- title: "New Post",
- body: "Body"
+ title: 'New Post',
+ body: 'Body'
},
relationships: {
comments: { data: [] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "2" } }
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '2' } }
}
}
],
included: [
{
- id: "1",
- type: "comments",
+ id: '1',
+ type: 'comments',
attributes: {
- body: "ZOMG A COMMENT"
+ body: 'ZOMG A COMMENT'
},
relationships: {
- post: { data: { type: "posts", id: "10" } },
+ post: { data: { type: 'posts', id: '10' } },
author: { data: nil }
}
}, {
- id: "2",
- type: "comments",
+ id: '2',
+ type: 'comments',
attributes: {
- body: "ZOMG ANOTHER COMMENT",
+ body: 'ZOMG ANOTHER COMMENT',
},
relationships: {
- post: { data: { type: "posts", id: "10" } },
+ post: { data: { type: 'posts', id: '10' } },
author: { data: nil }
}
}, {
- id: "1",
- type: "authors",
+ id: '1',
+ type: 'authors',
attributes: {
- name: "Steve K."
+ name: 'Steve K.'
},
relationships: {
- posts: { data: [ { type: "posts", id: "10" }, { type: "posts", id: "30" } ] },
+ posts: { data: [{ type: 'posts', id: '10' }, { type: 'posts', id: '30' }] },
roles: { data: [] },
- bio: { data: { type: "bios", id: "1" } }
+ bio: { data: { type: 'bios', id: '1' } }
}
}, {
- id: "1",
- type: "bios",
+ id: '1',
+ type: 'bios',
attributes: {
- content: "AMS Contributor",
+ content: 'AMS Contributor',
rating: nil
},
relationships: {
- author: { data: { type: "authors", id: "1" } }
+ author: { data: { type: 'authors', id: '1' } }
}
}, {
- id: "2",
- type: "authors",
+ id: '2',
+ type: 'authors',
attributes: {
- name: "Tenderlove"
+ name: 'Tenderlove'
},
relationships: {
- posts: { data: [ { type: "posts", id:"20" } ] },
+ posts: { data: [{ type: 'posts', id: '20' }] },
roles: { data: [] },
- bio: { data: { type: "bios", id: "2" } }
+ bio: { data: { type: 'bios', id: '2' } }
}
}, {
- id: "2",
- type: "bios",
+ id: '2',
+ type: 'bios',
attributes: {
rating: nil,
- content: "Rails Contributor",
+ content: 'Rails Contributor',
},
relationships: {
- author: { data: { type: "authors", id: "2" } }
+ author: { data: { type: 'authors', id: '2' } }
}
}
]
@@ -162,39 +162,39 @@ module ActiveModel
expected = [
{
- id: "1",
- type: "authors",
+ id: '1',
+ type: 'authors',
attributes: {
- name: "Steve K."
+ name: 'Steve K.'
},
relationships: {
- posts: { data: [ { type: "posts", id: "10"}, { type: "posts", id: "30" }] },
+ posts: { data: [{ type: 'posts', id: '10' }, { type: 'posts', id: '30' }] },
roles: { data: [] },
- bio: { data: { type: "bios", id: "1" }}
+ bio: { data: { type: 'bios', id: '1' } }
}
}, {
- id: "10",
- type: "posts",
+ id: '10',
+ type: 'posts',
attributes: {
- title: "Hello!!",
- body: "Hello, world!!"
+ title: 'Hello!!',
+ body: 'Hello, world!!'
},
relationships: {
- comments: { data: [ { type: "comments", id: "1"}, { type: "comments", id: "2" }] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ comments: { data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }] },
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
}, {
- id: "30",
- type: "posts",
+ id: '30',
+ type: 'posts',
attributes: {
- title: "Yet Another Post",
- body: "Body"
+ title: 'Yet Another Post',
+ body: 'Body'
},
relationships: {
comments: { data: [] },
- blog: { data: { type: "blogs", id: "999" } },
- author: { data: { type: "authors", id: "1" } }
+ blog: { data: { type: 'blogs', id: '999' } },
+ author: { data: { type: 'authors', id: '1' } }
}
}
]
@@ -229,21 +229,21 @@ module ActiveModel
expected = [
{
- id: "10",
- type: "posts",
+ id: '10',
+ type: 'posts',
attributes: {
- title: "Hello!!",
- body: "Hello, world!!"
+ title: 'Hello!!',
+ body: 'Hello, world!!'
},
relationships: {
comments: {
- data: [{type: "comments", id: "1"}, {type: "comments", id: "2"}]
+ data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }]
},
blog: {
- data: {type: "blogs", id: "999"}
+ data: { type: 'blogs', id: '999' }
},
author: {
- data: {type: "authors", id: "1"}
+ data: { type: 'authors', id: '1' }
}
}
}
@@ -262,14 +262,14 @@ module ActiveModel
expected = {
data: {
- id: "10",
- type: "posts",
+ id: '10',
+ type: 'posts',
attributes: {
- title: "Hello!!",
- body: "Hello, world!!"
+ title: 'Hello!!',
+ body: 'Hello, world!!'
},
relationships: {
- comments: { data: [ { type: "comments", id: '1' }, { type: "comments", id: '2' } ] },
+ comments: { data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }] },
author: { data: nil }
}
}
diff --git a/test/adapter/json_api/pagination_links_test.rb b/test/adapter/json_api/pagination_links_test.rb
index 58a29120..52fdfd7b 100644
--- a/test/adapter/json_api/pagination_links_test.rb
+++ b/test/adapter/json_api/pagination_links_test.rb
@@ -20,9 +20,9 @@ module ActiveModel
]
end
- def mock_request(query_parameters={}, original_url=URI)
+ def mock_request(query_parameters = {}, original_url = URI)
context = Minitest::Mock.new
- context.expect(:original_url, original_url )
+ context.expect(:original_url, original_url)
context.expect(:query_parameters, query_parameters)
@options = {}
@options[:context] = context
@@ -42,17 +42,17 @@ module ActiveModel
end
def data
- { data:[
- { id:"1", type:"profiles", attributes:{name:"Name 1", description:"Description 1" } },
- { id:"2", type:"profiles", attributes:{name:"Name 2", description:"Description 2" } },
- { id:"3", type:"profiles", attributes:{name:"Name 3", description:"Description 3" } }
+ { data: [
+ { id: '1', type: 'profiles', attributes: { name: 'Name 1', description: 'Description 1' } },
+ { id: '2', type: 'profiles', attributes: { name: 'Name 2', description: 'Description 2' } },
+ { id: '3', type: 'profiles', attributes: { name: 'Name 3', description: 'Description 3' } }
]
}
end
def links
{
- links:{
+ links: {
self: "#{URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1",
first: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
prev: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
@@ -74,7 +74,7 @@ module ActiveModel
end
def expected_response_with_pagination_links_and_additional_params
- new_links = links[:links].each_with_object({}) {|(key, value), hash| hash[key] = "#{value}&test=test" }
+ new_links = links[:links].each_with_object({}) { |(key, value), hash| hash[key] = "#{value}&test=test" }
{}.tap do |hash|
hash[:data] = [data.values.flatten.second]
hash.merge! links: new_links
diff --git a/test/adapter/json_api/resource_type_config_test.rb b/test/adapter/json_api/resource_type_config_test.rb
index aaf247e5..c5802a03 100644
--- a/test/adapter/json_api/resource_type_config_test.rb
+++ b/test/adapter/json_api/resource_type_config_test.rb
@@ -21,7 +21,7 @@ module ActiveModel
@comment.author = nil
@post.author = @author
@anonymous_post.author = nil
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@blog.writer = @author
@blog.articles = [@post, @anonymous_post]
@author.posts = []
diff --git a/test/adapter/json_test.rb b/test/adapter/json_test.rb
index 4acf0dbb..dac6b140 100644
--- a/test/adapter/json_test.rb
+++ b/test/adapter/json_test.rb
@@ -14,7 +14,7 @@ module ActiveModel
@first_comment.post = @post
@second_comment.post = @post
@post.author = @author
- @blog = Blog.new(id: 1, name: "My Blog!!")
+ @blog = Blog.new(id: 1, name: 'My Blog!!')
@post.blog = @blog
@serializer = PostSerializer.new(@post)
@@ -23,8 +23,8 @@ module ActiveModel
def test_has_many
assert_equal([
- {id: 1, body: 'ZOMG A COMMENT'},
- {id: 2, body: 'ZOMG ANOTHER COMMENT'}
+ { id: 1, body: 'ZOMG A COMMENT' },
+ { id: 2, body: 'ZOMG ANOTHER COMMENT' }
], @adapter.serializable_hash[:post][:comments])
end
@@ -34,11 +34,11 @@ module ActiveModel
assert_equal({
id: 1,
- reviews: [{id: 1, body: "ZOMG A COMMENT"},
- {id: 2, body: "ZOMG ANOTHER COMMENT"}
+ reviews: [{ id: 1, body: 'ZOMG A COMMENT' },
+ { id: 2, body: 'ZOMG ANOTHER COMMENT' }
],
- writer: {id: 1, name: "Steve K."},
- site: {id: 1, name: "My Blog!!"}
+ writer: { id: 1, name: 'Steve K.' },
+ site: { id: 1, name: 'My Blog!!' }
}, adapter.serializable_hash[:post])
end
end
diff --git a/test/adapter_test.rb b/test/adapter_test.rb
index 3349d8a7..73bacdd5 100644
--- a/test/adapter_test.rb
+++ b/test/adapter_test.rb
@@ -35,12 +35,12 @@ module ActiveModel
end
def test_create_adapter_with_override
- adapter = ActiveModel::Serializer::Adapter.create(@serializer, { adapter: :json_api})
+ adapter = ActiveModel::Serializer::Adapter.create(@serializer, { adapter: :json_api })
assert_equal ActiveModel::Serializer::Adapter::JsonApi, adapter.class
end
def test_inflected_adapter_class_for_known_adapter
- ActiveSupport::Inflector.inflections(:en){|inflect| inflect.acronym 'API' }
+ ActiveSupport::Inflector.inflections(:en) { |inflect| inflect.acronym 'API' }
klass = ActiveModel::Serializer::Adapter.adapter_class(:json_api)
ActiveSupport::Inflector.inflections.acronyms.clear
diff --git a/test/array_serializer_test.rb b/test/array_serializer_test.rb
index 3eff3ef8..003f7d41 100644
--- a/test/array_serializer_test.rb
+++ b/test/array_serializer_test.rb
@@ -7,14 +7,18 @@ module ActiveModel
@comment = Comment.new
@post = Post.new
@resource = build_named_collection @comment, @post
- @serializer = ArraySerializer.new(@resource, {some: :options})
+ @serializer = ArraySerializer.new(@resource, { some: :options })
end
def build_named_collection(*resource)
- resource.define_singleton_method(:name){ 'MeResource' }
+ resource.define_singleton_method(:name) { 'MeResource' }
resource
end
+ def test_has_object_reader_serializer_interface
+ assert_equal @serializer.object, @resource
+ end
+
def test_respond_to_each
assert_respond_to @serializer, :each
end
@@ -32,17 +36,17 @@ module ActiveModel
end
def test_serializer_option_not_passed_to_each_serializer
- serializers = ArraySerializer.new([@post], {serializer: PostSerializer}).to_a
+ serializers = ArraySerializer.new([@post], { serializer: PostSerializer }).to_a
refute serializers.first.custom_options.key?(:serializer)
end
def test_meta_and_meta_key_attr_readers
- meta_content = {meta: "the meta", meta_key: "the meta key"}
+ meta_content = { meta: 'the meta', meta_key: 'the meta key' }
@serializer = ArraySerializer.new([@comment, @post], meta_content)
- assert_equal @serializer.meta, "the meta"
- assert_equal @serializer.meta_key, "the meta key"
+ assert_equal @serializer.meta, 'the meta'
+ assert_equal @serializer.meta_key, 'the meta key'
end
def test_root_default
@@ -73,7 +77,7 @@ module ActiveModel
def test_json_key_with_resource_with_nil_name_and_no_serializers
resource = []
- resource.define_singleton_method(:name){ nil }
+ resource.define_singleton_method(:name) { nil }
serializer = ArraySerializer.new(resource)
assert_equal serializer.json_key, nil
end
diff --git a/test/capture_warnings.rb b/test/capture_warnings.rb
index 76e77b7b..410040b0 100644
--- a/test/capture_warnings.rb
+++ b/test/capture_warnings.rb
@@ -1,15 +1,15 @@
# https://raw.githubusercontent.com/metric_fu/metric_fu/master/spec/capture_warnings.rb
-require "tempfile"
-require "fileutils"
+require 'tempfile'
+require 'fileutils'
class CaptureWarnings
def initialize(fail_on_warnings = true)
@fail_on_warnings = fail_on_warnings
- @stderr_file = Tempfile.new("app.stderr")
+ @stderr_file = Tempfile.new('app.stderr')
@app_root ||= Dir.pwd
- @output_dir = File.join(app_root, "tmp")
+ @output_dir = File.join(app_root, 'tmp')
FileUtils.mkdir_p(output_dir)
- @bundle_dir = File.join(app_root, "bundle")
+ @bundle_dir = File.join(app_root, 'bundle')
end
def before_tests
@@ -40,9 +40,9 @@ class CaptureWarnings
end
if other_warnings.any?
- File.write(File.join(output_dir, "warnings.txt"), other_warnings.join("\n") << "\n")
+ File.write(File.join(output_dir, 'warnings.txt'), other_warnings.join("\n") << "\n")
puts
- puts "Non-app warnings written to tmp/warnings.txt"
+ puts 'Non-app warnings written to tmp/warnings.txt'
puts
end
@@ -53,5 +53,6 @@ class CaptureWarnings
end
private
+
attr_reader :stderr_file, :app_root, :output_dir, :bundle_dir, :fail_on_warnings
end
diff --git a/test/fixtures/poro.rb b/test/fixtures/poro.rb
index 815205c4..f831296f 100644
--- a/test/fixtures/poro.rb
+++ b/test/fixtures/poro.rb
@@ -7,7 +7,7 @@ class Model
@_model_name ||= ActiveModel::Name.new(self)
end
- def initialize(hash={})
+ def initialize(hash = {})
@attributes = hash
end
@@ -83,7 +83,7 @@ Location = Class.new(Model)
Place = Class.new(Model)
Tag = Class.new(Model)
VirtualValue = Class.new(Model)
-Comment = Class.new(Model) do
+Comment = Class.new(Model) do
# Uses a custom non-time-based cache key
def cache_key
"#{self.class.name.downcase}/#{self.id}"
@@ -94,7 +94,7 @@ module Spam; end
Spam::UnrelatedLink = Class.new(Model)
PostSerializer = Class.new(ActiveModel::Serializer) do
- cache key:'post', expires_in: 0.1, skip_digest: true
+ cache key: 'post', expires_in: 0.1, skip_digest: true
attributes :id, :title, :body
has_many :comments
@@ -103,7 +103,7 @@ PostSerializer = Class.new(ActiveModel::Serializer) do
url :comments
def blog
- Blog.new(id: 999, name: "Custom blog")
+ Blog.new(id: 999, name: 'Custom blog')
end
def custom_options
@@ -133,7 +133,7 @@ CommentSerializer = Class.new(ActiveModel::Serializer) do
end
AuthorSerializer = Class.new(ActiveModel::Serializer) do
- cache key:'writer', skip_digest: true
+ cache key: 'writer', skip_digest: true
attribute :id
attribute :name
@@ -249,8 +249,8 @@ end
VirtualValueSerializer = Class.new(ActiveModel::Serializer) do
attributes :id
- has_many :reviews, virtual_value: [{id: 1}, {id: 2}]
- has_one :maker, virtual_value: {id: 1}
+ has_many :reviews, virtual_value: [{ id: 1 }, { id: 2 }]
+ has_one :maker, virtual_value: { id: 1 }
def reviews
end
diff --git a/test/generators/scaffold_controller_generator_test.rb b/test/generators/scaffold_controller_generator_test.rb
index f3029e21..aabe6122 100644
--- a/test/generators/scaffold_controller_generator_test.rb
+++ b/test/generators/scaffold_controller_generator_test.rb
@@ -1,5 +1,4 @@
require 'test_helper'
-# require 'active_model/serializer/railtie'
class ResourceGeneratorTest < Rails::Generators::TestCase
destination File.expand_path('../../../tmp/generators', __FILE__)
@@ -19,6 +18,6 @@ class ResourceGeneratorTest < Rails::Generators::TestCase
def copy_routes
config_dir = File.join(destination_root, 'config')
FileUtils.mkdir_p(config_dir)
- File.write(File.join(config_dir, 'routes.rb'), 'Rails.application.routes.draw { }')
+ File.write(File.join(config_dir, 'routes.rb'), 'Rails.application.routes.draw {}')
end
end
diff --git a/test/generators/serializer_generator_test.rb b/test/generators/serializer_generator_test.rb
index 7af39ed1..5395dff6 100644
--- a/test/generators/serializer_generator_test.rb
+++ b/test/generators/serializer_generator_test.rb
@@ -2,7 +2,7 @@ require 'test_helper'
require 'generators/serializer/serializer_generator'
class SerializerGeneratorTest < Rails::Generators::TestCase
- destination File.expand_path("../../../tmp/generators", __FILE__)
+ destination File.expand_path('../../../tmp/generators', __FILE__)
setup :prepare_destination
tests Rails::Generators::SerializerGenerator
@@ -10,33 +10,33 @@ class SerializerGeneratorTest < Rails::Generators::TestCase
def test_generates_a_serializer
run_generator
- assert_file "app/serializers/account_serializer.rb", /class AccountSerializer < ActiveModel::Serializer/
+ assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < ActiveModel::Serializer/
end
def test_generates_a_namespaced_serializer
- run_generator ["admin/account"]
- assert_file "app/serializers/admin/account_serializer.rb", /class Admin::AccountSerializer < ActiveModel::Serializer/
+ run_generator ['admin/account']
+ assert_file 'app/serializers/admin/account_serializer.rb', /class Admin::AccountSerializer < ActiveModel::Serializer/
end
def test_uses_application_serializer_if_one_exists
Object.const_set(:ApplicationSerializer, Class.new)
run_generator
- assert_file "app/serializers/account_serializer.rb", /class AccountSerializer < ApplicationSerializer/
+ assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < ApplicationSerializer/
ensure
Object.send :remove_const, :ApplicationSerializer
end
def test_uses_given_parent
Object.const_set(:ApplicationSerializer, Class.new)
- run_generator ["Account", "--parent=MySerializer"]
- assert_file "app/serializers/account_serializer.rb", /class AccountSerializer < MySerializer/
+ run_generator ['Account', '--parent=MySerializer']
+ assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < MySerializer/
ensure
Object.send :remove_const, :ApplicationSerializer
end
def test_generates_attributes_and_associations
run_generator
- assert_file "app/serializers/account_serializer.rb" do |serializer|
+ assert_file 'app/serializers/account_serializer.rb' do |serializer|
assert_match(/^ attributes :id, :name, :description$/, serializer)
assert_match(/^ has_one :business$/, serializer)
assert_match(/^end\n*\z/, serializer)
@@ -44,8 +44,8 @@ class SerializerGeneratorTest < Rails::Generators::TestCase
end
def test_with_no_attributes_does_not_add_extra_space
- run_generator ["account"]
- assert_file "app/serializers/account_serializer.rb" do |content|
+ run_generator ['account']
+ assert_file 'app/serializers/account_serializer.rb' do |content|
if RUBY_PLATFORM =~ /mingw/
assert_no_match(/\r\n\r\nend/, content)
else
diff --git a/test/lint_test.rb b/test/lint_test.rb
index 61329b24..9257eec1 100644
--- a/test/lint_test.rb
+++ b/test/lint_test.rb
@@ -7,27 +7,21 @@ module ActiveModel
class CompliantResource
def serializable_hash(options = nil)
-
end
def read_attribute_for_serialization(name)
-
end
def as_json(options = nil)
-
end
def to_json(options = nil)
-
end
def cache_key
-
end
def id
-
end
def self.model_name
@@ -38,7 +32,6 @@ module ActiveModel
def setup
@resource = CompliantResource.new
end
-
end
end
end
diff --git a/test/serializers/adapter_for_test.rb b/test/serializers/adapter_for_test.rb
index 507b6bf1..3a17cd24 100644
--- a/test/serializers/adapter_for_test.rb
+++ b/test/serializers/adapter_for_test.rb
@@ -20,7 +20,6 @@ module ActiveModel
adapter = ActiveModel::Serializer.adapter
assert_equal ActiveModel::Serializer::Adapter::Null, adapter
ensure
-
end
def test_overwrite_adapter_with_class
diff --git a/test/serializers/associations_test.rb b/test/serializers/associations_test.rb
index bfc1b40c..75e2db20 100644
--- a/test/serializers/associations_test.rb
+++ b/test/serializers/associations_test.rb
@@ -4,7 +4,7 @@ module ActiveModel
class Serializer
class AssociationsTest < Minitest::Test
class Model
- def initialize(hash={})
+ def initialize(hash = {})
@attributes = hash
end
@@ -29,7 +29,7 @@ module ActiveModel
@author.roles = []
@blog = Blog.new({ name: 'AMS Blog' })
@post = Post.new({ title: 'New Post', body: 'Body' })
- @tag = Tag.new({name: '#hashtagged'})
+ @tag = Tag.new({ name: '#hashtagged' })
@comment = Comment.new({ id: 1, body: 'ZOMG A COMMENT' })
@post.comments = [@comment]
@post.tags = [@tag]
@@ -39,7 +39,7 @@ module ActiveModel
@post.author = @author
@author.posts = [@post]
- @post_serializer = PostSerializer.new(@post, {custom_options: true})
+ @post_serializer = PostSerializer.new(@post, { custom_options: true })
@author_serializer = AuthorSerializer.new(@author)
@comment_serializer = CommentSerializer.new(@comment)
end
@@ -74,7 +74,7 @@ module ActiveModel
assert_equal key, :tags
assert_equal serializer, nil
- assert_equal [{ attributes: { name: "#hashtagged" }}].to_json, options[:virtual_value].to_json
+ assert_equal [{ attributes: { name: '#hashtagged' } }].to_json, options[:virtual_value].to_json
end
end
diff --git a/test/serializers/attribute_test.rb b/test/serializers/attribute_test.rb
index 9399b935..c0b2e30b 100644
--- a/test/serializers/attribute_test.rb
+++ b/test/serializers/attribute_test.rb
@@ -4,25 +4,25 @@ module ActiveModel
class Serializer
class AttributeTest < Minitest::Test
def setup
- @blog = Blog.new({ id: 1, name: 'AMS Hints', type: "stuff" })
+ @blog = Blog.new({ id: 1, name: 'AMS Hints', type: 'stuff' })
@blog_serializer = AlternateBlogSerializer.new(@blog)
end
def test_attributes_definition
assert_equal([:id, :title],
- @blog_serializer.class._attributes)
+ @blog_serializer.class._attributes)
end
def test_json_serializable_hash
adapter = ActiveModel::Serializer::Adapter::Json.new(@blog_serializer)
- assert_equal({blog: { id:1, title:"AMS Hints"}}, adapter.serializable_hash)
+ assert_equal({ blog: { id: 1, title: 'AMS Hints' } }, adapter.serializable_hash)
end
def test_attribute_inheritance_with_key
inherited_klass = Class.new(AlternateBlogSerializer)
blog_serializer = inherited_klass.new(@blog)
adapter = ActiveModel::Serializer::Adapter::FlattenJson.new(blog_serializer)
- assert_equal({:id=>1, :title=>"AMS Hints"}, adapter.serializable_hash)
+ assert_equal({ :id => 1, :title => 'AMS Hints' }, adapter.serializable_hash)
end
def test_multiple_calls_with_the_same_attribute
@@ -40,7 +40,7 @@ module ActiveModel
end
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer.new(@blog))
- assert_equal({ blog: { id: "AMS Hints" } }, adapter.serializable_hash)
+ assert_equal({ blog: { id: 'AMS Hints' } }, adapter.serializable_hash)
end
def test_type_attribute
@@ -52,10 +52,10 @@ module ActiveModel
end
adapter = ActiveModel::Serializer::Adapter::Json.new(attribute_serializer.new(@blog))
- assert_equal({ blog: { type: 1} }, adapter.serializable_hash)
+ assert_equal({ blog: { type: 1 } }, adapter.serializable_hash)
adapter = ActiveModel::Serializer::Adapter::Json.new(attributes_serializer.new(@blog))
- assert_equal({ blog: { type: "stuff" } }, adapter.serializable_hash)
+ assert_equal({ blog: { type: 'stuff' } }, adapter.serializable_hash)
end
end
end
diff --git a/test/serializers/attributes_test.rb b/test/serializers/attributes_test.rb
index 8b039df9..735de3f9 100644
--- a/test/serializers/attributes_test.rb
+++ b/test/serializers/attributes_test.rb
@@ -6,7 +6,7 @@ module ActiveModel
def setup
@profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
@profile_serializer = ProfileSerializer.new(@profile)
- @comment = Comment.new(id: 1, body: "ZOMG!!", date: "2015")
+ @comment = Comment.new(id: 1, body: 'ZOMG!!', date: '2015')
@serializer_klass = Class.new(CommentSerializer)
@serializer_klass_with_new_attributes = Class.new(CommentSerializer) do
attributes :date, :likes
@@ -15,18 +15,12 @@ module ActiveModel
def test_attributes_definition
assert_equal([:name, :description],
- @profile_serializer.class._attributes)
+ @profile_serializer.class._attributes)
end
def test_attributes_with_fields_option
- assert_equal({name: 'Name 1'},
- @profile_serializer.attributes(fields: [:name]))
- end
-
- def test_required_fields
- assert_equal({name: 'Name 1', description: 'Description 1'},
- @profile_serializer.attributes(fields: [:name, :description], required_fields: [:name]))
-
+ assert_equal({ name: 'Name 1' },
+ @profile_serializer.attributes(fields: [:name]))
end
def test_attributes_inheritance_definition
@@ -35,8 +29,8 @@ module ActiveModel
def test_attributes_inheritance
serializer = @serializer_klass.new(@comment)
- assert_equal({id: 1, body: "ZOMG!!"},
- serializer.attributes)
+ assert_equal({ id: 1, body: 'ZOMG!!' },
+ serializer.attributes)
end
def test_attribute_inheritance_with_new_attribute_definition
@@ -46,8 +40,8 @@ module ActiveModel
def test_attribute_inheritance_with_new_attribute
serializer = @serializer_klass_with_new_attributes.new(@comment)
- assert_equal({id: 1, body: "ZOMG!!", date: "2015", likes: nil},
- serializer.attributes)
+ assert_equal({ id: 1, body: 'ZOMG!!', date: '2015', likes: nil },
+ serializer.attributes)
end
def test_multiple_calls_with_the_same_attribute
diff --git a/test/serializers/cache_test.rb b/test/serializers/cache_test.rb
index afa58327..5b7a665d 100644
--- a/test/serializers/cache_test.rb
+++ b/test/serializers/cache_test.rb
@@ -9,7 +9,7 @@ module ActiveModel
@post = Post.new(title: 'New Post', body: 'Body')
@bio = Bio.new(id: 1, content: 'AMS Contributor')
@author = Author.new(name: 'Joao M. D. Moura')
- @blog = Blog.new(id: 999, name: "Custom blog", writer: @author, articles: [])
+ @blog = Blog.new(id: 999, name: 'Custom blog', writer: @author, articles: [])
@role = Role.new(name: 'Great Author')
@location = Location.new(lat: '-23.550520', lng: '-46.633309')
@place = Place.new(name: 'Amazing Place')
@@ -58,9 +58,9 @@ module ActiveModel
end
def test_cache_options_definition
- assert_equal({expires_in: 0.1, skip_digest: true}, @post_serializer.class._cache_options)
+ assert_equal({ expires_in: 0.1, skip_digest: true }, @post_serializer.class._cache_options)
assert_equal(nil, @blog_serializer.class._cache_options)
- assert_equal({expires_in: 1.day, skip_digest: true}, @comment_serializer.class._cache_options)
+ assert_equal({ expires_in: 1.day, skip_digest: true }, @comment_serializer.class._cache_options)
end
def test_fragment_cache_definition
@@ -118,7 +118,7 @@ module ActiveModel
hash = render_object_with_cache(@location)
assert_equal(hash, expected_result)
- assert_equal({place: 'Nowhere'}, ActionController::Base.cache_store.fetch(@location.cache_key))
+ assert_equal({ place: 'Nowhere' }, ActionController::Base.cache_store.fetch(@location.cache_key))
end
def test_uses_file_digest_in_cache_key
@@ -131,20 +131,20 @@ module ActiveModel
end
def test_serializer_file_path_on_nix
- path = "/Users/git/emberjs/ember-crm-backend/app/serializers/lead_serializer.rb"
+ path = '/Users/git/emberjs/ember-crm-backend/app/serializers/lead_serializer.rb'
caller_line = "#{path}:1:in `'"
assert_equal caller_line[ActiveModel::Serializer::CALLER_FILE], path
end
def test_serializer_file_path_on_windows
- path = "c:/git/emberjs/ember-crm-backend/app/serializers/lead_serializer.rb"
+ path = 'c:/git/emberjs/ember-crm-backend/app/serializers/lead_serializer.rb'
caller_line = "#{path}:1:in `'"
assert_equal caller_line[ActiveModel::Serializer::CALLER_FILE], path
end
def test_digest_caller_file
contents = "puts 'AMS rocks'!"
- file = Tempfile.new("some_ruby.rb")
+ file = Tempfile.new('some_ruby.rb')
file.write(contents)
path = file.path
caller_line = "#{path}:1:in `'"
@@ -155,6 +155,7 @@ module ActiveModel
end
private
+
def render_object_with_cache(obj)
ActiveModel::SerializableResource.new(obj).serializable_hash
end
diff --git a/test/serializers/fieldset_test.rb b/test/serializers/fieldset_test.rb
index 05439177..ca613045 100644
--- a/test/serializers/fieldset_test.rb
+++ b/test/serializers/fieldset_test.rb
@@ -3,12 +3,11 @@ require 'test_helper'
module ActiveModel
class Serializer
class FieldsetTest < Minitest::Test
-
def test_fieldset_with_hash
- fieldset = ActiveModel::Serializer::Fieldset.new({'post' => ['id', 'title'], 'coment' => ['body']})
+ fieldset = ActiveModel::Serializer::Fieldset.new({ 'post' => %w(id title), 'coment' => ['body'] })
assert_equal(
- {:post=>[:id, :title], :coment=>[:body]},
+ { :post => [:id, :title], :coment => [:body] },
fieldset.fields
)
end
@@ -17,7 +16,7 @@ module ActiveModel
fieldset = ActiveModel::Serializer::Fieldset.new(['title'], 'post')
assert_equal(
- {:post => [:title]},
+ { :post => [:title] },
fieldset.fields
)
end
diff --git a/test/serializers/meta_test.rb b/test/serializers/meta_test.rb
index 60e17384..976dc52f 100644
--- a/test/serializers/meta_test.rb
+++ b/test/serializers/meta_test.rb
@@ -7,19 +7,19 @@ module ActiveModel
ActionController::Base.cache_store.clear
@blog = Blog.new(id: 1,
name: 'AMS Hints',
- writer: Author.new(id: 2, name: "Steve"),
- articles: [Post.new(id: 3, title: "AMS")])
+ writer: Author.new(id: 2, name: 'Steve'),
+ articles: [Post.new(id: 3, title: 'AMS')])
end
def test_meta_is_present_with_root
- serializer = AlternateBlogSerializer.new(@blog, meta: {total: 10})
+ serializer = AlternateBlogSerializer.new(@blog, meta: { total: 10 })
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
expected = {
blog: {
id: 1,
- title: "AMS Hints"
+ title: 'AMS Hints'
},
- "meta" => {
+ 'meta' => {
total: 10
}
}
@@ -28,23 +28,23 @@ module ActiveModel
def test_meta_is_not_included_when_root_is_missing
# load_adapter uses FlattenJson Adapter
- adapter = load_adapter(meta: {total: 10})
+ adapter = load_adapter(meta: { total: 10 })
expected = {
id: 1,
- title: "AMS Hints"
+ title: 'AMS Hints'
}
assert_equal expected, adapter.as_json
end
def test_meta_key_is_used
- serializer = AlternateBlogSerializer.new(@blog, meta: {total: 10}, meta_key: "haha_meta")
+ serializer = AlternateBlogSerializer.new(@blog, meta: { total: 10 }, meta_key: 'haha_meta')
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
expected = {
blog: {
id: 1,
- title: "AMS Hints"
+ title: 'AMS Hints'
},
- "haha_meta" => {
+ 'haha_meta' => {
total: 10
}
}
@@ -52,33 +52,33 @@ module ActiveModel
end
def test_meta_key_is_used_with_json_api
- serializer = AlternateBlogSerializer.new(@blog, meta: {total: 10}, meta_key: "haha_meta")
+ serializer = AlternateBlogSerializer.new(@blog, meta: { total: 10 }, meta_key: 'haha_meta')
adapter = ActiveModel::Serializer::Adapter::JsonApi.new(serializer)
expected = {
data: {
- id: "1",
- type: "blogs",
- attributes: { title: "AMS Hints" }
+ id: '1',
+ type: 'blogs',
+ attributes: { title: 'AMS Hints' }
},
- "haha_meta" => { total: 10 }
+ 'haha_meta' => { total: 10 }
}
assert_equal expected, adapter.as_json
end
def test_meta_is_not_present_on_arrays_without_root
- serializer = ArraySerializer.new([@blog], meta: {total: 10})
+ serializer = ArraySerializer.new([@blog], meta: { total: 10 })
# FlattenJSON doesn't have support to root
adapter = ActiveModel::Serializer::Adapter::FlattenJson.new(serializer)
expected = [{
id: 1,
- name: "AMS Hints",
+ name: 'AMS Hints',
writer: {
id: 2,
- name: "Steve"
+ name: 'Steve'
},
articles: [{
id: 3,
- title: "AMS",
+ title: 'AMS',
body: nil
}]
}]
@@ -86,20 +86,20 @@ module ActiveModel
end
def test_meta_is_present_on_arrays_with_root
- serializer = ArraySerializer.new([@blog], meta: {total: 10}, meta_key: "haha_meta")
+ serializer = ArraySerializer.new([@blog], meta: { total: 10 }, meta_key: 'haha_meta')
# JSON adapter adds root by default
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
expected = {
blogs: [{
id: 1,
- name: "AMS Hints",
+ name: 'AMS Hints',
writer: {
id: 2,
- name: "Steve"
+ name: 'Steve'
},
articles: [{
id: 3,
- title: "AMS",
+ title: 'AMS',
body: nil
}]
}],
diff --git a/test/serializers/root_test.rb b/test/serializers/root_test.rb
index 749ff0a7..03e6ca20 100644
--- a/test/serializers/root_test.rb
+++ b/test/serializers/root_test.rb
@@ -3,13 +3,12 @@ require 'test_helper'
module ActiveModel
class Serializer
class RootTest < Minitest::Test
-
def setup
@virtual_value = VirtualValue.new(id: 1)
end
def test_overwrite_root
- serializer = VirtualValueSerializer.new(@virtual_value, {root: 'smth'})
+ serializer = VirtualValueSerializer.new(@virtual_value, { root: 'smth' })
assert_equal('smth', serializer.json_key)
end
@@ -17,7 +16,6 @@ module ActiveModel
serializer = VirtualValueSerializer.new(@virtual_value)
assert_equal('virtual_value', serializer.json_key)
end
-
end
end
end
diff --git a/test/serializers/serializer_for_test.rb b/test/serializers/serializer_for_test.rb
index 1fd4c10e..a0dc0888 100644
--- a/test/serializers/serializer_for_test.rb
+++ b/test/serializers/serializer_for_test.rb
@@ -26,7 +26,7 @@ module ActiveModel
end
end
- class SerializerTest < Minitest::Test
+ class SerializerTest < Minitest::Test
class MyProfile < Profile
end
class CustomProfile
diff --git a/test/serializers/urls_test.rb b/test/serializers/urls_test.rb
index 05b33fa5..d0dc26f1 100644
--- a/test/serializers/urls_test.rb
+++ b/test/serializers/urls_test.rb
@@ -3,7 +3,6 @@ require 'test_helper'
module ActiveModel
class Serializer
class UrlsTest < Minitest::Test
-
def setup
@profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
@post = Post.new({ title: 'New Post', body: 'Body' })
diff --git a/test/support/simplecov.rb b/test/support/simplecov.rb
new file mode 100644
index 00000000..2a249972
--- /dev/null
+++ b/test/support/simplecov.rb
@@ -0,0 +1,6 @@
+# https://github.com/colszowka/simplecov/pull/400
+# https://github.com/ruby/ruby/blob/trunk/lib/English.rb
+unless defined?(English)
+ # The exception object passed to +raise+.
+ alias $ERROR_INFO $! # rubocop:disable Style/SpecialGlobalVars
+end
diff --git a/test/support/stream_capture.rb b/test/support/stream_capture.rb
index 49e3a145..2d7dfea9 100644
--- a/test/support/stream_capture.rb
+++ b/test/support/stream_capture.rb
@@ -1,7 +1,7 @@
# Use cleaner stream testing interface from Rails 5 if available
# see https://github.com/rails/rails/blob/29959eb59d/activesupport/lib/active_support/testing/stream.rb
begin
- require "active_support/testing/stream"
+ require 'active_support/testing/stream'
rescue LoadError
module ActiveSupport
module Testing
@@ -29,7 +29,7 @@ rescue LoadError
def capture(stream)
stream = stream.to_s
captured_stream = Tempfile.new(stream)
- stream_io = eval("$#{stream}")
+ stream_io = eval("$#{stream}") # rubocop:disable Lint/Eval
origin_stream = stream_io.dup
stream_io.reopen(captured_stream)
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 7df3b118..e6ba0dff 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -1,5 +1,16 @@
require 'bundler/setup'
+begin
+ require 'simplecov'
+ # HACK: till https://github.com/colszowka/simplecov/pull/400 is merged and released.
+ # Otherwise you may get:
+ # simplecov-0.10.0/lib/simplecov/defaults.rb:50: warning: global variable `$ERROR_INFO' not initialized
+ require 'support/simplecov'
+ AppCoverage.start
+rescue LoadError
+ STDERR.puts 'Running without SimpleCov'
+end
+
require 'timecop'
require 'rails'
require 'action_controller'
@@ -13,7 +24,6 @@ require 'minitest/autorun'
# Ensure backward compatibility with Minitest 4
Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test)
-
require 'capture_warnings'
@capture_warnings = CaptureWarnings.new(fail_build = true)
@capture_warnings.before_tests
@@ -23,7 +33,7 @@ if Minitest.respond_to?(:after_run)
end
else
at_exit do
- STDOUT.puts "Minitest.after_run not available."
+ STDOUT.puts 'Minitest.after_run not available.'
@capture_warnings.after_tests
end
end