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/controller_generator_test.rb
Mike Moore 2a68f68aea Update test locations
Change the default test locations to avoid confusion around the common
testing terms "unit" and "functional".
Add new rake tasks for the new locations, while maintaining backwards
compatibility with the old rake tasks.

New testing locations are as follows:

    app/models -> test/models (was test/units)
    app/helpers -> test/helpers (was test/units/helpers)
    app/controllers -> test/controllers (was test/functional)
    app/mailers -> test/mailers (was test/functional)
2012-10-09 17:53:56 -06:00

85 lines
2.6 KiB
Ruby

require 'generators/generators_test_helper'
require 'rails/generators/rails/controller/controller_generator'
class ControllerGeneratorTest < Rails::Generators::TestCase
include GeneratorsTestHelper
arguments %w(Account foo bar)
setup :copy_routes
def test_help_does_not_show_invoked_generators_options_if_they_already_exist
content = run_generator ["--help"]
assert_no_match(/Helper options\:/, content)
end
def test_controller_skeleton_is_created
run_generator
assert_file "app/controllers/account_controller.rb", /class AccountController < ApplicationController/
end
def test_check_class_collision
Object.send :const_set, :ObjectController, Class.new
content = capture(:stderr){ run_generator ["object"] }
assert_match(/The name 'ObjectController' is either already used in your application or reserved/, content)
ensure
Object.send :remove_const, :ObjectController
end
def test_invokes_helper
run_generator
assert_file "app/helpers/account_helper.rb"
assert_file "test/helpers/account_helper_test.rb"
end
def test_does_not_invoke_helper_if_required
run_generator ["account", "--skip-helper"]
assert_no_file "app/helpers/account_helper.rb"
assert_no_file "test/helpers/account_helper_test.rb"
end
def test_invokes_assets
run_generator
assert_file "app/assets/javascripts/account.js"
assert_file "app/assets/stylesheets/account.css"
end
def test_invokes_default_test_framework
run_generator
assert_file "test/controllers/account_controller_test.rb"
end
def test_does_not_invoke_test_framework_if_required
run_generator ["account", "--no-test-framework"]
assert_no_file "test/controllers/account_controller_test.rb"
end
def test_invokes_default_template_engine
run_generator
assert_file "app/views/account/foo.html.erb", %r(app/views/account/foo\.html\.erb)
assert_file "app/views/account/bar.html.erb", %r(app/views/account/bar\.html\.erb)
end
def test_add_routes
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/account"
end
def test_template_engine_with_class_path
run_generator ["admin/account"]
assert_file "app/views/admin/account"
end
def test_actions_are_turned_into_methods
run_generator
assert_file "app/controllers/account_controller.rb" do |controller|
assert_instance_method :foo, controller
assert_instance_method :bar, controller
end
end
end