From 4f446241a4789721738334d8eeccb4e6803f8fb0 Mon Sep 17 00:00:00 2001 From: Matthew Burket Date: Mon, 30 May 2011 23:07:20 -0500 Subject: [PATCH] Added Controller Generator and tests to go along with it. --- .../devise/controllers_generator.rb | 18 ++++++++++++ test/generators/controller_generator_test.rb | 29 +++++++++++++++++++ test/test_helper.rb | 1 + 3 files changed, 48 insertions(+) create mode 100644 lib/generators/devise/controllers_generator.rb create mode 100644 test/generators/controller_generator_test.rb diff --git a/lib/generators/devise/controllers_generator.rb b/lib/generators/devise/controllers_generator.rb new file mode 100644 index 00000000..ab8c4e69 --- /dev/null +++ b/lib/generators/devise/controllers_generator.rb @@ -0,0 +1,18 @@ +require 'tmpdir' + +module Devise + module Generators + class ControllersGenerator < Rails::Generators::Base + source_root File.expand_path("../../../../app/controllers", __FILE__) + desc "Copies all Devise controllers to your application." + + argument :scope, :required => false, :default => nil, + :desc => "The scope to copy controllers to" + + + def copy_controllers + directory "devise", "app/controllers/#{scope || :devise}" + end + end + end +end diff --git a/test/generators/controller_generator_test.rb b/test/generators/controller_generator_test.rb new file mode 100644 index 00000000..2a7d4e85 --- /dev/null +++ b/test/generators/controller_generator_test.rb @@ -0,0 +1,29 @@ +require "test_helper" + +class ControllersGeneratorTest < Rails::Generators::TestCase + tests Devise::Generators::ControllersGenerator + destination File.expand_path("../../tmp", __FILE__) + setup :prepare_destination + + test "Assert all controllers are properly created with no params" do + run_generator + assert_files + end + + test "Assert all controllers are properly created with scope param param" do + run_generator %w(users) + assert_files "users" + + run_generator %w(admins) + assert_files "admins" + end + + def assert_files(scope = nil, template_engine = nil) + scope = "devise" if scope.nil? + assert_file "app/controllers/#{scope}/confirmations_controller.rb" + assert_file "app/controllers/#{scope}/omniauth_callbacks_controller.rb" + assert_file "app/controllers/#{scope}/passwords_controller.rb" + assert_file "app/controllers/#{scope}/sessions_controller.rb" + assert_file "app/controllers/#{scope}/unlocks_controller.rb" + end +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index f3659efa..14333828 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -25,3 +25,4 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } require "rails/generators/test_case" require "generators/devise/install_generator" require "generators/devise/views_generator" +require "generators/devise/controllers_generator" \ No newline at end of file