mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix boolean interaction in scaffold system tests
This commit is contained in:
parent
0fc6804c7e
commit
ea89b4588b
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 @@ module TestUnit # :nodoc:
|
|||
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 @@ require "rails/generators/rails/scaffold/scaffold_generator"
|
|||
|
||||
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 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
|
|||
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 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
|
|||
|
||||
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 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
|
|||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue