rails/railties/test/generators/named_base_test.rb
Rafael Mendonça França fd6aaaa0c3 Stop requiring mocha automatically
We are planning to remove mocha from our test suite because of
performance problems. To make this possible we should stop require mocha
on ActionSupport::TestCase.

This should not affect applications since users still need to add mocha
to Gemfile and this already load mocha.

Added FIXME notes to place that still need mocha removal
2014-07-19 17:35:12 -03:00

146 lines
4.9 KiB
Ruby

require 'generators/generators_test_helper'
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
require 'mocha/setup' # FIXME: stop using mocha
# 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
class NamedBaseTest < Rails::Generators::TestCase
include GeneratorsTestHelper
tests Rails::Generators::ScaffoldControllerGenerator
def test_named_generator_with_underscore
g = generator ['line_item']
assert_name g, 'line_item', :name
assert_name g, %w(), :class_path
assert_name g, 'LineItem', :class_name
assert_name g, 'line_item', :file_path
assert_name g, 'line_item', :file_name
assert_name g, 'Line item', :human_name
assert_name g, 'line_item', :singular_name
assert_name g, 'line_items', :plural_name
assert_name g, 'line_item', :i18n_scope
assert_name g, 'line_items', :table_name
end
def test_named_generator_attributes
g = generator ['admin/foo']
assert_name g, 'admin/foo', :name
assert_name g, %w(admin), :class_path
assert_name g, 'Admin::Foo', :class_name
assert_name g, 'admin/foo', :file_path
assert_name g, 'foo', :file_name
assert_name g, 'Foo', :human_name
assert_name g, 'foo', :singular_name
assert_name g, 'foos', :plural_name
assert_name g, 'admin.foo', :i18n_scope
assert_name g, 'admin_foos', :table_name
end
def test_named_generator_attributes_as_ruby
g = generator ['Admin::Foo']
assert_name g, 'Admin::Foo', :name
assert_name g, %w(admin), :class_path
assert_name g, 'Admin::Foo', :class_name
assert_name g, 'admin/foo', :file_path
assert_name g, 'foo', :file_name
assert_name g, 'foo', :singular_name
assert_name g, 'Foo', :human_name
assert_name g, 'foos', :plural_name
assert_name g, 'admin.foo', :i18n_scope
assert_name g, 'admin_foos', :table_name
end
def test_named_generator_attributes_without_pluralized
ActiveRecord::Base.pluralize_table_names = false
g = generator ['admin/foo']
assert_name g, 'admin_foo', :table_name
ensure
ActiveRecord::Base.pluralize_table_names = true
end
def test_scaffold_plural_names
g = generator ['admin/foo']
assert_name g, 'admin/foos', :controller_name
assert_name g, %w(admin), :controller_class_path
assert_name g, 'Admin::Foos', :controller_class_name
assert_name g, 'admin/foos', :controller_file_path
assert_name g, 'foos', :controller_file_name
assert_name g, 'admin.foos', :controller_i18n_scope
end
def test_scaffold_plural_names_as_ruby
g = generator ['Admin::Foo']
assert_name g, 'Admin::Foos', :controller_name
assert_name g, %w(admin), :controller_class_path
assert_name g, 'Admin::Foos', :controller_class_name
assert_name g, 'admin/foos', :controller_file_path
assert_name g, 'foos', :controller_file_name
assert_name g, 'admin.foos', :controller_i18n_scope
end
def test_application_name
g = generator ['Admin::Foo']
Rails.stubs(:application).returns(Object.new)
assert_name g, "object", :application_name
Rails.stubs(:application).returns(nil)
assert_name g, "application", :application_name
end
def test_index_helper
g = generator ['Post']
assert_name g, 'posts', :index_helper
end
def test_index_helper_to_pluralize_once
g = generator ['Stadium']
assert_name g, 'stadia', :index_helper
end
def test_index_helper_with_uncountable
g = generator ['Sheep']
assert_name g, 'sheep_index', :index_helper
end
def test_hide_namespace
g = generator ['Hidden']
g.class.stubs(:namespace).returns('hidden')
assert !Rails::Generators.hidden_namespaces.include?('hidden')
g.class.hide!
assert Rails::Generators.hidden_namespaces.include?('hidden')
end
def test_scaffold_plural_names_with_model_name_option
g = generator ['Admin::Foo'], model_name: 'User'
assert_name g, 'user', :singular_name
assert_name g, 'User', :name
assert_name g, 'user', :file_path
assert_name g, 'User', :class_name
assert_name g, 'user', :file_name
assert_name g, 'User', :human_name
assert_name g, 'users', :plural_name
assert_name g, 'user', :i18n_scope
assert_name g, 'users', :table_name
assert_name g, 'Admin::Foos', :controller_name
assert_name g, %w(admin), :controller_class_path
assert_name g, 'Admin::Foos', :controller_class_name
assert_name g, 'admin/foos', :controller_file_path
assert_name g, 'foos', :controller_file_name
assert_name g, 'admin.foos', :controller_i18n_scope
end
protected
def assert_name(generator, value, method)
assert_equal value, generator.send(method)
end
end