Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request rails#5410 from rafaelfranca/fix-scaffold-3-2
[3-2-stable] Do not use the attributes hash in the scaffold functional tests
  • Loading branch information
josevalim committed Mar 13, 2012
2 parents d2ac18a + c1610eb commit dfbbf31
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 4 deletions.
Expand Up @@ -8,10 +8,31 @@ class ScaffoldGenerator < Base

check_class_collision :suffix => "ControllerTest"

argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"

def create_test_files
template 'functional_test.rb',
File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb")
end

private

def resource_attributes
key_value singular_table_name, "{ #{attributes_hash} }"
end

def attributes_hash
return if accessible_attributes.empty?

accessible_attributes.map do |a|
name = a.name
key_value name, "@#{singular_table_name}.#{name}"
end.sort.join(', ')
end

def accessible_attributes
attributes.reject(&:reference?)
end
end
end
end
Expand Up @@ -19,7 +19,7 @@ class <%= controller_class_name %>ControllerTest < ActionController::TestCase

test "should create <%= singular_table_name %>" do
assert_difference('<%= class_name %>.count') do
post :create, <%= key_value singular_table_name, "@#{singular_table_name}.attributes" %>
post :create, <%= resource_attributes %>
end
assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>))
Expand All @@ -36,7 +36,7 @@ class <%= controller_class_name %>ControllerTest < ActionController::TestCase
end

test "should update <%= singular_table_name %>" do
put :update, <%= key_value :id, "@#{singular_table_name}" %>, <%= key_value singular_table_name, "@#{singular_table_name}.attributes" %>
put :update, <%= key_value :id, "@#{singular_table_name}" %>, <%= resource_attributes %>
assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>))
end

Expand Down
25 changes: 25 additions & 0 deletions railties/test/generators/scaffold_controller_generator_test.rb
Expand Up @@ -75,6 +75,31 @@ def test_functional_tests
assert_file "test/functional/users_controller_test.rb" do |content|
assert_match(/class UsersControllerTest < ActionController::TestCase/, content)
assert_match(/test "should get index"/, content)

if RUBY_VERSION < "1.9"
assert_match(/post :create, :user => \{ :age => @user.age, :name => @user.name \}/, content)
assert_match(/put :update, :id => @user, :user => \{ :age => @user.age, :name => @user.name \}/, content)
else
assert_match(/post :create, user: \{ age: @user.age, name: @user.name \}/, content)
assert_match(/put :update, id: @user, user: \{ age: @user.age, name: @user.name \}/, content)
end
end
end

def test_functional_tests_without_attributes
run_generator ["User"]

assert_file "test/functional/users_controller_test.rb" do |content|
assert_match(/class UsersControllerTest < ActionController::TestCase/, content)
assert_match(/test "should get index"/, content)

if RUBY_VERSION < "1.9"
assert_match(/post :create, :user => \{ \}/, content)
assert_match(/put :update, :id => @user, :user => \{ \}/, content)
else
assert_match(/post :create, user: \{ \}/, content)
assert_match(/put :update, id: @user, user: \{ \}/, content)
end
end
end

Expand Down
30 changes: 28 additions & 2 deletions railties/test/generators/scaffold_generator_test.rb
Expand Up @@ -62,8 +62,17 @@ def test_scaffold_on_invoke
end
end

assert_file "test/functional/product_lines_controller_test.rb",
/class ProductLinesControllerTest < ActionController::TestCase/
assert_file "test/functional/product_lines_controller_test.rb" do |test|
assert_match(/class ProductLinesControllerTest < ActionController::TestCase/, test)

if RUBY_VERSION < "1.9"
assert_match(/post :create, :product_line => \{ :title => @product_line.title \}/, test)
assert_match(/put :update, :id => @product_line, :product_line => \{ :title => @product_line.title \}/, test)
else
assert_match(/post :create, product_line: \{ title: @product_line.title \}/, test)
assert_match(/put :update, id: @product_line, product_line: \{ title: @product_line.title \}/, test)
end
end

# Views
%w(
Expand All @@ -85,6 +94,23 @@ def test_scaffold_on_invoke
assert_file "app/assets/stylesheets/product_lines.css"
end

def test_functional_tests_without_attributes
run_generator ["product_line"]

assert_file "test/functional/product_lines_controller_test.rb" do |content|
assert_match(/class ProductLinesControllerTest < ActionController::TestCase/, content)
assert_match(/test "should get index"/, content)

if RUBY_VERSION < "1.9"
assert_match(/post :create, :product_line => \{ \}/, content)
assert_match(/put :update, :id => @product_line, :product_line => \{ \}/, content)
else
assert_match(/post :create, product_line: \{ \}/, content)
assert_match(/put :update, id: @product_line, product_line: \{ \}/, content)
end
end
end

def test_scaffold_on_revoke
run_generator
run_generator ["product_line"], :behavior => :revoke
Expand Down

0 comments on commit dfbbf31

Please sign in to comment.