mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
fd6aaaa0c3
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
145 lines
4.9 KiB
Ruby
145 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
|