Merge pull request #34681 from gmcgibbon/fix_boolean_system_test_scaffold

Fix boolean interaction in scaffold system tests
This commit is contained in:
Rafael França 2018-12-12 11:42:16 -05:00 committed by GitHub
commit 662f14814e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 3 deletions

@ -1,3 +1,7 @@
* Fix boolean interaction in scaffold system tests.
*Gannon McGibbon*
* Remove redundant suffixes on generated system tests.
*Gannon McGibbon*

@ -54,6 +54,11 @@ def attributes_hash
end
end.sort.to_h
end
def boolean?(name)
attribute = attributes.find { |attribute| attribute.name == name }
attribute&.type == :boolean
end
end
end
end

@ -16,8 +16,12 @@ class <%= class_name.pluralize %>Test < ApplicationSystemTestCase
click_on "New <%= class_name.titleize %>"
<%- attributes_hash.each do |attr, value| -%>
<%- if boolean?(attr) -%>
check "<%= attr.humanize %>" if <%= value %>
<%- else -%>
fill_in "<%= attr.humanize %>", with: <%= value %>
<%- end -%>
<%- end -%>
click_on "Create <%= human_name %>"
assert_text "<%= human_name %> was successfully created"
@ -29,8 +33,12 @@ class <%= class_name.pluralize %>Test < ApplicationSystemTestCase
click_on "Edit", match: :first
<%- attributes_hash.each do |attr, value| -%>
<%- if boolean?(attr) -%>
check "<%= attr.humanize %>" if <%= value %>
<%- else -%>
fill_in "<%= attr.humanize %>", with: <%= value %>
<%- end -%>
<%- end -%>
click_on "Update <%= human_name %>"
assert_text "<%= human_name %> was successfully updated"

@ -5,7 +5,7 @@
class ScaffoldGeneratorTest < Rails::Generators::TestCase
include GeneratorsTestHelper
arguments %w(product_line title:string product:belongs_to user:references)
arguments %w(product_line title:string approved:boolean product:belongs_to user:references)
setup :copy_routes
@ -17,6 +17,7 @@ def test_scaffold_on_invoke
assert_file "test/models/product_line_test.rb", /class ProductLineTest < ActiveSupport::TestCase/
assert_file "test/fixtures/product_lines.yml"
assert_migration "db/migrate/create_product_lines.rb", /belongs_to :product/
assert_migration "db/migrate/create_product_lines.rb", /boolean :approved/
assert_migration "db/migrate/create_product_lines.rb", /references :user/
# Route
@ -60,8 +61,8 @@ def test_scaffold_on_invoke
assert_file "test/controllers/product_lines_controller_test.rb" do |test|
assert_match(/class ProductLinesControllerTest < ActionDispatch::IntegrationTest/, test)
assert_match(/post product_lines_url, params: \{ product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test)
assert_match(/patch product_line_url\(@product_line\), params: \{ product_line: \{ product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test)
assert_match(/post product_lines_url, params: \{ product_line: \{ approved: @product_line\.approved, product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test)
assert_match(/patch product_line_url\(@product_line\), params: \{ product_line: \{ approved: @product_line\.approved, product_id: @product_line\.product_id, title: @product_line\.title, user_id: @product_line\.user_id \} \}/, test)
end
# System tests
@ -69,6 +70,7 @@ def test_scaffold_on_invoke
assert_match(/class ProductLinesTest < ApplicationSystemTestCase/, test)
assert_match(/visit product_lines_url/, test)
assert_match(/fill_in "Title", with: @product_line\.title/, test)
assert_match(/check "Approved" if @product_line\.approved/, test)
assert_match(/assert_text "Product line was successfully updated"/, test)
end