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/scaffold_controller_generator_test.rb
Prem Sichanugrist 67ee6c38b9 Remove the --singeleton option from scaffold generator.
It turned out to be that scaffold for singeleton resource will always depend on another model, and it's not possible at the moment to make the application tests pass after generate the singeleton scafold. So, it would be better to remove it for now and probably provide another generator, such as singeleton_scaffold, in which also require the depended model name.

[#4863 state:resolved]

Signed-off-by: José Valim <jose.valim@gmail.com>
2010-06-24 20:17:59 +02:00

125 lines
3.7 KiB
Ruby

require 'generators/generators_test_helper'
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
module Unknown
module Generators
end
end
class ScaffoldControllerGeneratorTest < Rails::Generators::TestCase
include GeneratorsTestHelper
arguments %w(User name:string age:integer)
def test_controller_skeleton_is_created
run_generator
assert_file "app/controllers/users_controller.rb" do |content|
assert_match /class UsersController < ApplicationController/, content
assert_instance_method :index, content do |m|
assert_match /@users = User\.all/, m
end
assert_instance_method :show, content do |m|
assert_match /@user = User\.find\(params\[:id\]\)/, m
end
assert_instance_method :new, content do |m|
assert_match /@user = User\.new/, m
end
assert_instance_method :edit, content do |m|
assert_match /@user = User\.find\(params\[:id\]\)/, m
end
assert_instance_method :create, content do |m|
assert_match /@user = User\.new\(params\[:user\]\)/, m
assert_match /@user\.save/, m
assert_match /@user\.errors/, m
end
assert_instance_method :update, content do |m|
assert_match /@user = User\.find\(params\[:id\]\)/, m
assert_match /@user\.update_attributes\(params\[:user\]\)/, m
assert_match /@user\.errors/, m
end
assert_instance_method :destroy, content do |m|
assert_match /@user = User\.find\(params\[:id\]\)/, m
assert_match /@user\.destroy/, m
end
end
end
def test_helper_are_invoked_with_a_pluralized_name
run_generator
assert_file "app/helpers/users_helper.rb", /module UsersHelper/
assert_file "test/unit/helpers/users_helper_test.rb", /class UsersHelperTest < ActionView::TestCase/
end
def test_views_are_generated
run_generator
%w(
index
edit
new
show
).each { |view| assert_file "app/views/users/#{view}.html.erb" }
assert_no_file "app/views/layouts/users.html.erb"
end
def test_functional_tests
run_generator
assert_file "test/functional/users_controller_test.rb" do |content|
assert_match /class UsersControllerTest < ActionController::TestCase/, content
assert_match /test "should get index"/, content
end
end
def test_skip_helper_if_required
run_generator ["User", "name:string", "age:integer", "--no-helper"]
assert_no_file "app/helpers/users_helper.rb"
assert_no_file "test/unit/helpers/users_helper_test.rb"
end
def test_skip_layout_if_required
run_generator ["User", "name:string", "age:integer", "--no-layout"]
assert_no_file "app/views/layouts/users.html.erb"
end
def test_default_orm_is_used
run_generator ["User", "--orm=unknown"]
assert_file "app/controllers/users_controller.rb" do |content|
assert_match /class UsersController < ApplicationController/, content
assert_instance_method :index, content do |m|
assert_match /@users = User\.all/, m
end
end
end
def test_customized_orm_is_used
klass = Class.new(Rails::Generators::ActiveModel) do
def self.all(klass)
"#{klass}.find(:all)"
end
end
Unknown::Generators.const_set(:ActiveModel, klass)
run_generator ["User", "--orm=unknown"]
assert_file "app/controllers/users_controller.rb" do |content|
assert_match /class UsersController < ApplicationController/, content
assert_instance_method :index, content do |m|
assert_match /@users = User\.find\(:all\)/, m
assert_no_match /@users = User\.all/, m
end
end
ensure
Unknown::Generators.send :remove_const, :ActiveModel
end
end