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