1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/railties/test/generators/namespaced_generators_test.rb
Piotr Sarnacki 5d5eb2b18d Rename namespace method to isolate_namespace.
This change caused by confusion caused by calling engine
"namespaced". Stuff inside engine can be namespaced for every
engine. This method is not actually namespacing anything, it's
isolating engine within the given namespace.
2010-10-09 21:32:34 +02:00

204 lines
7.7 KiB
Ruby

require 'generators/generators_test_helper'
require 'rails/generators/rails/controller/controller_generator'
require 'rails/generators/rails/model/model_generator'
require 'rails/generators/rails/observer/observer_generator'
require 'rails/generators/mailer/mailer_generator'
class NamespacedGeneratorTestCase < Rails::Generators::TestCase
def setup
TestApp::Application.isolate_namespace(TestApp)
end
def teardown
if TestApp.respond_to?(:_railtie)
TestApp.singleton_class.send(:undef_method, :_railtie)
TestApp.singleton_class.send(:undef_method, :table_name_prefix)
TestApp::Application.isolated = false
end
end
end
class NamespacedControllerGeneratorTest < NamespacedGeneratorTestCase
include GeneratorsTestHelper
arguments %w(Account foo bar)
tests Rails::Generators::ControllerGenerator
setup :copy_routes
def test_namespaced_controller_skeleton_is_created
run_generator
assert_file "app/controllers/test_app/account_controller.rb", /module TestApp/, / class AccountController < ApplicationController/
assert_file "test/functional/test_app/account_controller_test.rb", /module TestApp/, / class AccountControllerTest/
end
def test_skipping_namespace
run_generator ["Account", "--skip-namespace"]
assert_file "app/controllers/account_controller.rb", /class AccountController < ApplicationController/
assert_file "app/helpers/account_helper.rb", /module AccountHelper/
end
def test_namespaced_controller_with_additional_namespace
run_generator ["admin/account"]
assert_file "app/controllers/test_app/admin/account_controller.rb", /module TestApp/, / class Admin::AccountController < ApplicationController/
end
def test_helpr_is_also_namespaced
run_generator
assert_file "app/helpers/test_app/account_helper.rb", /module TestApp/, / module AccountHelper/
assert_file "test/unit/helpers/test_app/account_helper_test.rb", /module TestApp/, / class AccountHelperTest/
end
def test_invokes_default_test_framework
run_generator
assert_file "test/functional/test_app/account_controller_test.rb"
end
def test_invokes_default_template_engine
run_generator
assert_file "app/views/test_app/account/foo.html.erb", %r(app/views/test_app/account/foo\.html\.erb)
assert_file "app/views/test_app/account/bar.html.erb", %r(app/views/test_app/account/bar\.html\.erb)
end
def test_routes_should_not_be_namespaced
run_generator
assert_file "config/routes.rb", /get "account\/foo"/, /get "account\/bar"/
end
#
def test_invokes_default_template_engine_even_with_no_action
run_generator ["account"]
assert_file "app/views/test_app/account"
end
end
class NamespacedModelGeneratorTest < NamespacedGeneratorTestCase
include GeneratorsTestHelper
arguments %w(Account name:string age:integer)
tests Rails::Generators::ModelGenerator
def test_module_file_is_not_created
run_generator
assert_no_file "app/models/test_app.rb"
end
def test_adds_namespace_to_model
run_generator
assert_file "app/models/test_app/account.rb", /module TestApp/, / class Account < ActiveRecord::Base/
end
def test_model_with_namespace
run_generator ["admin/account"]
assert_file "app/models/test_app/admin.rb", /module TestApp/, /module Admin/
assert_file "app/models/test_app/admin.rb", /def self\.table_name_prefix/
assert_file "app/models/test_app/admin.rb", /'admin_'/
assert_file "app/models/test_app/admin/account.rb", /module TestApp/, /class Admin::Account < ActiveRecord::Base/
end
def test_migration
run_generator
assert_migration "db/migrate/create_test_app_accounts.rb", /create_table :test_app_accounts/, /class CreateTestAppAccounts < ActiveRecord::Migration/
end
def test_migration_with_namespace
run_generator ["Gallery::Image"]
assert_migration "db/migrate/create_test_app_gallery_images", /class CreateTestAppGalleryImages < ActiveRecord::Migration/
assert_no_migration "db/migrate/create_test_app_images"
end
def test_migration_with_nested_namespace
run_generator ["Admin::Gallery::Image"]
assert_no_migration "db/migrate/create_images"
assert_no_migration "db/migrate/create_gallery_images"
assert_migration "db/migrate/create_test_app_admin_gallery_images", /class CreateTestAppAdminGalleryImages < ActiveRecord::Migration/
assert_migration "db/migrate/create_test_app_admin_gallery_images", /create_table :test_app_admin_gallery_images/
end
def test_migration_with_nested_namespace_without_pluralization
ActiveRecord::Base.pluralize_table_names = false
run_generator ["Admin::Gallery::Image"]
assert_no_migration "db/migrate/create_images"
assert_no_migration "db/migrate/create_gallery_images"
assert_no_migration "db/migrate/create_test_app_admin_gallery_images"
assert_migration "db/migrate/create_test_app_admin_gallery_image", /class CreateTestAppAdminGalleryImage < ActiveRecord::Migration/
assert_migration "db/migrate/create_test_app_admin_gallery_image", /create_table :test_app_admin_gallery_image/
ensure
ActiveRecord::Base.pluralize_table_names = true
end
def test_invokes_default_test_framework
run_generator
assert_file "test/unit/test_app/account_test.rb", /module TestApp/, /class AccountTest < ActiveSupport::TestCase/
assert_file "test/fixtures/test_app/accounts.yml", /name: MyString/, /age: 1/
end
end
class NamespacedObserverGeneratorTest < NamespacedGeneratorTestCase
include GeneratorsTestHelper
arguments %w(account)
tests Rails::Generators::ObserverGenerator
def test_invokes_default_orm
run_generator
assert_file "app/models/test_app/account_observer.rb", /module TestApp/, / class AccountObserver < ActiveRecord::Observer/
end
def test_invokes_default_orm_with_class_path
run_generator ["admin/account"]
assert_file "app/models/test_app/admin/account_observer.rb", /module TestApp/, / class Admin::AccountObserver < ActiveRecord::Observer/
end
def test_invokes_default_test_framework
run_generator
assert_file "test/unit/test_app/account_observer_test.rb", /module TestApp/, / class AccountObserverTest < ActiveSupport::TestCase/
end
end
class NamespacedMailerGeneratorTest < NamespacedGeneratorTestCase
include GeneratorsTestHelper
arguments %w(notifier foo bar)
tests Rails::Generators::MailerGenerator
def test_mailer_skeleton_is_created
run_generator
assert_file "app/mailers/test_app/notifier.rb" do |mailer|
assert_match /module TestApp/, mailer
assert_match /class Notifier < ActionMailer::Base/, mailer
assert_match /default :from => "from@example.com"/, mailer
end
end
def test_mailer_with_i18n_helper
run_generator
assert_file "app/mailers/test_app/notifier.rb" do |mailer|
assert_match /en\.notifier\.foo\.subject/, mailer
assert_match /en\.notifier\.bar\.subject/, mailer
end
end
def test_invokes_default_test_framework
run_generator
assert_file "test/functional/test_app/notifier_test.rb" do |test|
assert_match /module TestApp/, test
assert_match /class NotifierTest < ActionMailer::TestCase/, test
assert_match /test "foo"/, test
assert_match /test "bar"/, test
end
end
def test_invokes_default_template_engine
run_generator
assert_file "app/views/test_app/notifier/foo.text.erb" do |view|
assert_match %r(app/views/test_app/notifier/foo\.text\.erb), view
assert_match /<%= @greeting %>/, view
end
assert_file "app/views/test_app/notifier/bar.text.erb" do |view|
assert_match %r(app/views/test_app/notifier/bar\.text\.erb), view
assert_match /<%= @greeting %>/, view
end
end
def test_invokes_default_template_engine_even_with_no_action
run_generator ["notifier"]
assert_file "app/views/test_app/notifier"
end
end