aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test
diff options
context:
space:
mode:
Diffstat (limited to 'railties/test')
-rw-r--r--railties/test/generators/missing_class/missing_class_generator.rb0
-rw-r--r--railties/test/rails_generator_test.rb95
2 files changed, 95 insertions, 0 deletions
diff --git a/railties/test/generators/missing_class/missing_class_generator.rb b/railties/test/generators/missing_class/missing_class_generator.rb
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/railties/test/generators/missing_class/missing_class_generator.rb
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