diff options
Diffstat (limited to 'railties/test/rails_generator_test.rb')
-rw-r--r-- | railties/test/rails_generator_test.rb | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/railties/test/rails_generator_test.rb b/railties/test/rails_generator_test.rb deleted file mode 100644 index 38bd90dcc1..0000000000 --- a/railties/test/rails_generator_test.rb +++ /dev/null @@ -1,148 +0,0 @@ -require 'test/unit' - -# Optionally load RubyGems. -begin - require 'rubygems' -rescue LoadError -end - -# Mock out what we need from AR::Base. -module ActiveRecord - class Base - class << self - attr_accessor :pluralize_table_names - end - self.pluralize_table_names = true - end -end - -# And what we need from ActionView -module ActionView - module Helpers - module ActiveRecordHelper; end - class InstanceTag; end - end -end - - -# Must set before requiring generator libs. -if defined?(RAILS_ROOT) - RAILS_ROOT.replace "#{File.dirname(__FILE__)}/fixtures" -else - RAILS_ROOT = "#{File.dirname(__FILE__)}/fixtures" -end - -$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib" -require 'initializer' - -# Mocks out the configuration -module Rails - def self.configuration - Rails::Configuration.new - end -end - -require 'rails_generator' - -class RailsGeneratorTest < Test::Unit::TestCase - BUILTINS = %w(controller integration_test mailer migration model observer plugin resource scaffold session_migration) - CAPITALIZED_BUILTINS = BUILTINS.map { |b| b.capitalize } - - def setup - ActiveRecord::Base.pluralize_table_names = true - @initializer = Rails::Initializer.default - @initializer.config = Rails.configuration - @initializer.run(:set_root_path) - end - - def test_sources - expected = [:lib, :vendor, - "plugins (vendor/plugins)".to_sym, # <plugin>/generators and <plugin>/rails_generators - :user, - :RubyGems, :RubyGems, # gems named <x>_generator, gems containing /rails_generator/ folder - :builtin] - expected.delete(:RubyGems) unless Object.const_defined?(:Gem) - assert_equal expected, Rails::Generator::Base.sources.map { |s| s.label } - end - - def test_lookup_builtins - (BUILTINS + CAPITALIZED_BUILTINS).each do |name| - assert_nothing_raised do - spec = Rails::Generator::Base.lookup(name) - assert_not_nil spec - assert_kind_of Rails::Generator::Spec, spec - - klass = spec.klass - assert klass < Rails::Generator::Base - assert_equal spec, klass.spec - end - end - end - - def test_autolookup - assert_nothing_raised { ControllerGenerator } - assert_nothing_raised { ModelGenerator } - end - - def test_lookup_missing_generator - assert_raise Rails::Generator::GeneratorError do - Rails::Generator::Base.lookup('missing').klass - end - end - - def test_lookup_missing_class - spec = nil - assert_nothing_raised { spec = Rails::Generator::Base.lookup('missing_class') } - assert_not_nil spec - assert_kind_of Rails::Generator::Spec, spec - assert_raise(NameError) { spec.klass } - end - - def test_generator_usage - (BUILTINS - ["session_migration"]).each do |name| - assert_raise(Rails::Generator::UsageError, "Generator '#{name}' should raise an error without arguments") { - Rails::Generator::Base.instance(name) - } - end - end - - def test_generator_spec - spec = Rails::Generator::Base.lookup('working') - assert_equal 'working', spec.name - assert_match(/#{spec.path}$/, "#{RAILS_ROOT}/lib/generators/working") - assert_equal :lib, spec.source - assert_nothing_raised { assert_match(/WorkingGenerator$/, spec.klass.name) } - end - - def test_named_generator_attributes - g = Rails::Generator::Base.instance('working', %w(admin/foo bar baz)) - assert_equal 'admin/foo', g.name - assert_equal %w(admin), g.class_path - assert_equal 'Admin', g.class_nesting - assert_equal 'Admin::Foo', g.class_name - assert_equal 'foo', g.singular_name - assert_equal 'foos', g.plural_name - assert_equal g.singular_name, g.file_name - assert_equal "admin_#{g.plural_name}", g.table_name - assert_equal %w(bar baz), g.args - end - - def test_named_generator_attributes_without_pluralized - ActiveRecord::Base.pluralize_table_names = false - g = Rails::Generator::Base.instance('working', %w(admin/foo bar baz)) - assert_equal "admin_#{g.singular_name}", g.table_name - end - - def test_session_migration_generator_with_pluralization - g = Rails::Generator::Base.instance('session_migration') - assert_equal 'session'.pluralize, g.send(:default_session_table_name) - ActiveRecord::Base.pluralize_table_names = false - assert_equal 'session', g.send(:default_session_table_name) - end - - def test_scaffold_controller_name - # Default behaviour is use the model name - g = Rails::Generator::Base.instance('scaffold', %w(Product)) - assert_equal "Products", g.controller_name - end -end |