From 4752e6723a6e0e8c4038ed4f36b87a954ad21097 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Wed, 10 Jun 2015 20:45:06 -0300 Subject: [PATCH] Make resource generator invoke serializer generator --- lib/active_model/serializer/railtie.rb | 8 +++++++ lib/active_model_serializers.rb | 1 + .../serializer/resource_override.rb | 12 ++++++++++ .../scaffold_controller_generator_test.rb | 24 +++++++++++++++++++ test/generators/serializer_generator_test.rb | 1 + test/test_helper.rb | 12 ++++++---- 6 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 lib/active_model/serializer/railtie.rb create mode 100644 lib/generators/serializer/resource_override.rb create mode 100644 test/generators/scaffold_controller_generator_test.rb diff --git a/lib/active_model/serializer/railtie.rb b/lib/active_model/serializer/railtie.rb new file mode 100644 index 00000000..88a84d0f --- /dev/null +++ b/lib/active_model/serializer/railtie.rb @@ -0,0 +1,8 @@ +module ActiveModel + class Railtie < Rails::Railtie + initializer 'generators' do |app| + app.load_generators + require 'generators/serializer/resource_override' + end + end +end diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb index 31925583..451bd853 100644 --- a/lib/active_model_serializers.rb +++ b/lib/active_model_serializers.rb @@ -2,6 +2,7 @@ require 'active_model' require 'active_model/serializer/version' require 'active_model/serializer' require 'active_model/serializer/fieldset' +require 'active_model/serializer/railtie' begin require 'action_controller' diff --git a/lib/generators/serializer/resource_override.rb b/lib/generators/serializer/resource_override.rb new file mode 100644 index 00000000..6da61166 --- /dev/null +++ b/lib/generators/serializer/resource_override.rb @@ -0,0 +1,12 @@ +require 'rails/generators' +require 'rails/generators/rails/resource/resource_generator' + +module Rails + module Generators + class ResourceGenerator + def add_serializer + invoke 'serializer' + end + end + end +end diff --git a/test/generators/scaffold_controller_generator_test.rb b/test/generators/scaffold_controller_generator_test.rb new file mode 100644 index 00000000..afdac202 --- /dev/null +++ b/test/generators/scaffold_controller_generator_test.rb @@ -0,0 +1,24 @@ +require 'test_helper' +# require 'active_model/serializer/railtie' + +class ResourceGeneratorTest < Rails::Generators::TestCase + destination File.expand_path('../../tmp', __FILE__) + setup :prepare_destination, :copy_routes + + tests Rails::Generators::ResourceGenerator + arguments %w(account) + + def test_serializer_file_is_generated + run_generator + + assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < ActiveModel::Serializer/ + end + + private + + 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 { }') + end +end diff --git a/test/generators/serializer_generator_test.rb b/test/generators/serializer_generator_test.rb index 85eb0f56..6ff112ec 100644 --- a/test/generators/serializer_generator_test.rb +++ b/test/generators/serializer_generator_test.rb @@ -1,3 +1,4 @@ +require 'test_helper' require 'generators/serializer/serializer_generator' class SerializerGeneratorTest < Rails::Generators::TestCase diff --git a/test/test_helper.rb b/test/test_helper.rb index 20aed17c..100fbea1 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -9,18 +9,20 @@ require 'minitest/autorun' # Ensure backward compatibility with Minitest 4 Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) +require 'active_model_serializers' + class Foo < Rails::Application if Rails::VERSION::MAJOR >= 4 config.eager_load = false config.secret_key_base = 'abc123' config.action_controller.perform_caching = true - config.active_support.test_order = :random - ActionController::Base.cache_store = :memory_store + config.active_support.test_order = :random + config.logger = Logger.new(nil) + ActionController::Base.cache_store = :memory_store end end -Foo.load_generators - -require "active_model_serializers" +ActionController::Base.cache_store.clear +Foo.initialize! require 'fixtures/poro'