diff options
Diffstat (limited to 'railties/test/rails_generator_test.rb')
-rw-r--r-- | railties/test/rails_generator_test.rb | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/railties/test/rails_generator_test.rb b/railties/test/rails_generator_test.rb new file mode 100644 index 0000000000..b63840d338 --- /dev/null +++ b/railties/test/rails_generator_test.rb @@ -0,0 +1,95 @@ +$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib" +RAILS_ROOT = File.dirname(__FILE__) + +require File.dirname(__FILE__) + '/../../activerecord/lib/active_record/support/inflector' +require 'rails_generator' +require 'test/unit' + + +class RailsGeneratorTest < Test::Unit::TestCase + BUILTINS = %w(controller mailer model scaffold) + + def test_instance_builtins + BUILTINS.each do |name| + object = nil + assert_nothing_raised { object = Rails::Generator.instance(name, ['foo']) } + assert_not_nil object + assert_match /#{name.capitalize}Generator/, object.class.name + assert_respond_to object, :generate + end + end + + def test_instance_without_rails_root + old_verbose, $VERBOSE = $VERBOSE, nil + old_rails_root = Object.const_get(:RAILS_ROOT) + begin + Object.const_set(:RAILS_ROOT, nil) + assert_raise(Rails::Generator::GeneratorError) { + Rails::Generator.instance('model', ['name']) + } + ensure + Object.const_set(:RAILS_ROOT, old_rails_root) + $VERBOSE = old_verbose + end + end + + def test_instance_not_found + assert_raise(Rails::Generator::GeneratorError) { + Rails::Generator.instance('foobar') + } + end + + def test_instance_missing_templates + assert_raise(Rails::Generator::GeneratorError) { + Rails::Generator.instance('missing_templates') + } + end + + def test_instance_missing_generator + assert_raise(LoadError) { + Rails::Generator.instance('missing_generator') + } + end + + def test_instance_missing_class + assert_raise(Rails::Generator::GeneratorError) { + Rails::Generator.instance('missing_class') + } + end + + def test_builtin_generators + assert_nothing_raised { + assert_equal [], Rails::Generator.builtin_generators - BUILTINS + } + end + + def test_generator_name + assert_equal 'model', Rails::Generator.instance('model', ['name']).class.generator_name + end + + def test_generator_usage + assert_raise(Rails::Generator::UsageError) { + assert_equal 'model', Rails::Generator.instance('model') + } + end + + def test_generator_vars + model = Rails::Generator.instance('model', ['model']) + assert_equal "#{Rails::Generator::BUILTIN_ROOT}/model/templates", model.template_root + assert_equal RAILS_ROOT, model.destination_root + assert_equal 'Model', model.class_name + assert_equal 'model', model.singular_name + assert_equal 'models', model.plural_name + assert_equal model.singular_name, model.file_name + assert_equal model.plural_name, model.table_name + assert_equal [], model.args + end + + def test_generator_generator + assert_nothing_raised { + model = Rails::Generator.instance('model', ['name']) + mailer = model.send(:generator, 'mailer') + assert_equal 'mailer', mailer.class.generator_name + } + end +end |