Skip to content
Browse files

Do not use the attributes hash in the scaffold functional tests

  • Loading branch information...
1 parent d2ac18a commit 5bed0e5cc0ae85975352808022201cf7431684e5 @rafaelfranca rafaelfranca committed Mar 12, 2012
View
8 railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb
@@ -8,10 +8,18 @@ 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 accessible_attributes
+ attributes.reject(&:reference?).map {|a| "\"#{a.name}\"" }.sort.join(', ')
+ end
end
end
end
View
5 railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb
@@ -4,6 +4,7 @@
class <%= controller_class_name %>ControllerTest < ActionController::TestCase
setup do
@<%= singular_table_name %> = <%= table_name %>(:one)
+ @valid_attributes = @<%= singular_table_name %>.attributes.slice(<%= accessible_attributes %>)
end
test "should get index" do
@@ -19,7 +20,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, <%= key_value singular_table_name, "@valid_attributes" %>
end
assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>))
@@ -36,7 +37,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}" %>, <%= key_value singular_table_name, "@valid_attributes" %>
assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>))
end
View
3 railties/test/generators/scaffold_controller_generator_test.rb
@@ -75,6 +75,9 @@ 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)
+ assert_match(/@valid_attributes = @user\.attributes\.slice\("age", "name"\)/, content)
+ assert_match(/post :create, user: @valid_attributes/, content)
+ assert_match(/put :update, id: @user, user: @valid_attributes/, content)
end
end
View
8 railties/test/generators/scaffold_generator_test.rb
@@ -62,8 +62,12 @@ 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)
+ assert_match(/@valid_attributes = @product_line\.attributes\.slice\("title"\)/, test)
+ assert_match(/post :create, product_line: @valid_attributes/, test)
+ assert_match(/put :update, id: @product_line, product_line: @valid_attributes/, test)
+ end
# Views
%w(

0 comments on commit 5bed0e5

Please sign in to comment.
Something went wrong with that request. Please try again.