From 21b2eff2ab5b3a83d3dccb6af67ae8462bd77048 Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Fri, 1 Apr 2016 04:12:30 -0500 Subject: [PATCH] Improvements from Rails plugin template --- Gemfile | 1 + LICENSE.txt => MIT-LICENSE | 0 Rakefile | 37 +++++++++++++++---- lib/active_model/serializer/association.rb | 7 ++-- lib/active_model/serializer/caching.rb | 2 +- lib/active_model_serializers/adapter.rb | 2 +- .../adapter/json_api/error.rb | 4 +- .../cached_serializer.rb | 5 ++- lib/active_model_serializers/test/schema.rb | 4 +- test/support/rails_app.rb | 11 ++++++ test/test_helper.rb | 7 ++++ 11 files changed, 61 insertions(+), 19 deletions(-) rename LICENSE.txt => MIT-LICENSE (100%) diff --git a/Gemfile b/Gemfile index 3791eef3..f6bc25f3 100644 --- a/Gemfile +++ b/Gemfile @@ -50,4 +50,5 @@ end group :development, :test do gem 'rubocop', '~> 0.36', require: false + gem 'yard', require: false end diff --git a/LICENSE.txt b/MIT-LICENSE similarity index 100% rename from LICENSE.txt rename to MIT-LICENSE diff --git a/Rakefile b/Rakefile index 58faa5d6..241e4398 100644 --- a/Rakefile +++ b/Rakefile @@ -1,11 +1,34 @@ +begin + require 'bundler/setup' +rescue LoadError + puts 'You must `gem install bundler` and `bundle install` to run rake tasks' +end begin require 'simplecov' rescue LoadError end -require 'bundler' -Bundler.setup -require 'bundler/gem_tasks' +Bundler::GemHelper.install_tasks + +require 'yard' + +namespace :yard do + YARD::Rake::YardocTask.new(:doc) do |t| + t.stats_options = ['--list-undoc'] + end + + desc 'start a gem server' + task :server do + sh 'bundle exec yard server --gems' + end + + desc 'use Graphviz to generate dot graph' + task :graph do + output_file = 'doc/erd.dot' + sh "bundle exec yard graph --protected --full --dependencies > #{output_file}" + puts 'open doc/erd.dot if you have graphviz installed' + end +end begin require 'rubocop' @@ -31,7 +54,7 @@ else Rake::Task[:rubocop].clear if Rake::Task.task_defined?(:rubocop) desc 'Execute rubocop' RuboCop::RakeTask.new(:rubocop) do |task| - task.options = ['--display-cop-names', '--display-style-guide'] + task.options = ['--rails', '--display-cop-names', '--display-style-guide'] task.fail_on_error = true end end @@ -39,10 +62,10 @@ end require 'rake/testtask' -Rake::TestTask.new do |t| - t.libs << 'test' +Rake::TestTask.new(:test) do |t| t.libs << 'lib' - t.test_files = FileList['test/**/*_test.rb'] + t.libs << 'test' + t.pattern = 'test/**/*_test.rb' t.ruby_opts = ['-r./test/test_helper.rb'] t.ruby_opts << ' -w' unless ENV['NO_WARN'] == 'true' t.verbose = true diff --git a/lib/active_model/serializer/association.rb b/lib/active_model/serializer/association.rb index cbe16752..02ac7606 100644 --- a/lib/active_model/serializer/association.rb +++ b/lib/active_model/serializer/association.rb @@ -2,16 +2,15 @@ module ActiveModel class Serializer # This class hold all information about serializer's association. # - # @param [Symbol] name - # @param [ActiveModel::Serializer] serializer - # @param [Hash{Symbol => Object}] options + # @attr [Symbol] name + # @attr [ActiveModel::Serializer] serializer + # @attr [Hash{Symbol => Object}] options # # @example # Association.new(:comments, CommentSummarySerializer) # Association = Struct.new(:name, :serializer, :options, :links, :meta) do # @return [Symbol] - # def key options.fetch(:key, name) end diff --git a/lib/active_model/serializer/caching.rb b/lib/active_model/serializer/caching.rb index 8577fdca..077cb569 100644 --- a/lib/active_model/serializer/caching.rb +++ b/lib/active_model/serializer/caching.rb @@ -74,7 +74,7 @@ module ActiveModel # Sets +::_cache+ object to ActionController::Base.cache_store # when Rails.configuration.action_controller.perform_caching # - # @params options [Hash] with valid keys: + # @param options [Hash] with valid keys: # cache_store : @see ::_cache # key : @see ::_cache_key # only : @see ::_cache_only diff --git a/lib/active_model_serializers/adapter.rb b/lib/active_model_serializers/adapter.rb index 643b141c..44c10db1 100644 --- a/lib/active_model_serializers/adapter.rb +++ b/lib/active_model_serializers/adapter.rb @@ -26,7 +26,7 @@ module ActiveModelSerializers ActiveModelSerializers::Adapter.lookup(adapter) end - # @return Hash + # @return [Hash] def adapter_map ADAPTER_MAP end diff --git a/lib/active_model_serializers/adapter/json_api/error.rb b/lib/active_model_serializers/adapter/json_api/error.rb index 67166d41..41c5ec5d 100644 --- a/lib/active_model_serializers/adapter/json_api/error.rb +++ b/lib/active_model_serializers/adapter/json_api/error.rb @@ -8,8 +8,8 @@ module ActiveModelSerializers # Builds a JSON API Errors Object # {http://jsonapi.org/format/#errors JSON API Errors} # - # @param [ActiveModel::Serializer::ErrorSerializer] - # @return [Array] i.e. attribute_name, [attribute_errors] + # @param [ActiveModel::Serializer::ErrorSerializer] error_serializer + # @return [Array>] i.e. attribute_name, [attribute_errors] def self.resource_errors(error_serializer) error_serializer.as_json.flat_map do |attribute_name, attribute_errors| attribute_error_objects(attribute_name, attribute_errors) diff --git a/lib/active_model_serializers/cached_serializer.rb b/lib/active_model_serializers/cached_serializer.rb index c9b56120..09b906ed 100644 --- a/lib/active_model_serializers/cached_serializer.rb +++ b/lib/active_model_serializers/cached_serializer.rb @@ -52,8 +52,9 @@ module ActiveModelSerializers end # find all cache_key for the collection_serializer - # @param collection_serializer - # @param include_tree + # @param serializers [ActiveModel::Serializer::CollectionSerializer] + # @param adapter_instance [ActiveModelSerializers::Adapter::Base] + # @param include_tree [ActiveModel::Serializer::IncludeTree] # @return [Array] all cache_key of collection_serializer def self.object_cache_keys(serializers, adapter_instance, include_tree) cache_keys = [] diff --git a/lib/active_model_serializers/test/schema.rb b/lib/active_model_serializers/test/schema.rb index 695d0a39..7674f6be 100644 --- a/lib/active_model_serializers/test/schema.rb +++ b/lib/active_model_serializers/test/schema.rb @@ -2,8 +2,8 @@ module ActiveModelSerializers module Test module Schema # A Minitest Assertion that test the response is valid against a schema. - # @params schema_path [String] a custom schema path - # @params message [String] a custom error message + # @param schema_path [String] a custom schema path + # @param message [String] a custom error message # @return [Boolean] true when the response is valid # @return [Minitest::Assertion] when the response is invalid # @example diff --git a/test/support/rails_app.rb b/test/support/rails_app.rb index dc1a23d8..16e776c7 100644 --- a/test/support/rails_app.rb +++ b/test/support/rails_app.rb @@ -32,3 +32,14 @@ ActionController::TestCase.class_eval do key.nil? ? assigns : assigns[key] end end + +# ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)] +# ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__) +# +# Load fixtures from the engine +# if ActiveSupport::TestCase.respond_to?(:fixture_path=) +# ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) +# ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path +# ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + "/files" +# ActiveSupport::TestCase.fixtures :all +# end diff --git a/test/test_helper.rb b/test/test_helper.rb index d0eba205..66609eaf 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,3 +1,5 @@ +# Configure Rails Environment +ENV['RAILS_ENV'] = 'test' require 'bundler/setup' begin @@ -35,10 +37,15 @@ else $minitest_version = 5 # https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest/autorun.rb # https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest.rb#L45-L59 + # Filter out Minitest backtrace while allowing backtrace from other libraries + # to be shown. + Minitest.backtrace_filter = Minitest::BacktraceFilter.new end require 'support/rails_app' +# require "rails/test_help" + require 'support/serialization_testing' require 'support/rails5_shims'