Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions test/action_view/cases/helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,12 @@ def autocomplete_attribute
end
end

def hidden_input_for_select(name)
%(<input name="#{name}" type="hidden" value="" #{autocomplete_attribute} />)
def hidden_input(name, value = '')
%(<input name="#{name}" type="hidden" value="#{value}" #{autocomplete_attribute} />)
end

def hidden_input_for_checkbox(name)
%(<input name="#{name}" type="hidden" value="0" #{autocomplete_attribute} />)
hidden_input(name, '0')
end

def setup
Expand Down Expand Up @@ -140,9 +140,9 @@ def setup
def snowman(method = nil)
txt = +''

txt << %(<input name="utf8" type="hidden" value="&#x2713;" />) if default_enforce_utf8
txt << hidden_input('utf8', '&#x2713;') if default_enforce_utf8

txt << %(<input type="hidden" name="_method" value="#{method}" #{autocomplete_attribute} />) if method
txt << hidden_input('_method', method) if method

txt
end
Expand All @@ -152,7 +152,7 @@ def form_field(tag, id: nil, name: nil, type: nil, value: nil, multiple: false,

txt << %( name="#{custom_name}") if custom_name
txt << %( type="#{type}") if type
txt << %( #{autocomplete_attribute}) if %w[hidden].include?(type)
txt << %( #{autocomplete_attribute}) if %w[hidden].include?(type) && autocomplete_attribute.present?
txt << %( value="#{value}") if value
txt << %( multiple="multiple") if multiple
txt << %( name="#{name}") if name
Expand Down
23 changes: 12 additions & 11 deletions test/action_view/cases/test_form_for_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def test_http_method

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
form_field('input', name: '_method', type: 'hidden', value: 'patch') +
hidden_input('_method', 'patch') +
form_field('input', id: 'post_cost', name: 'post[cost]', type: 'text')
end

Expand Down Expand Up @@ -105,7 +105,7 @@ def test_check_box

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '0') +
hidden_input_for_checkbox('post[cost]') +
form_field('input', id: 'post_cost', name: 'post[cost]', type: 'checkbox', value: '1')
end

Expand All @@ -120,7 +120,7 @@ def test_checkbox

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '0') +
hidden_input_for_checkbox('post[cost]') +
form_field('input', id: 'post_cost', name: 'post[cost]', type: 'checkbox', value: '1')
end

Expand All @@ -135,7 +135,7 @@ def test_check_box_ensure_no_validate_attribute

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '0') +
hidden_input_for_checkbox('post[cost]') +
form_field('input', id: 'post_cost', name: 'post[cost]', type: 'checkbox', value: '1')
end

Expand Down Expand Up @@ -349,7 +349,8 @@ def test_select_multiple

validators = { 'post[cost][]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
%(#{hidden_input_for_select('post[cost][]')}#{form_field('select', id: 'post_cost', name: 'post[cost][]', multiple: true)})
hidden_input('post[cost][]') +
form_field('select', id: 'post_cost', name: 'post[cost][]', multiple: true)
end

assert_dom_equal expected, output_buffer
Expand Down Expand Up @@ -400,7 +401,7 @@ def test_collection_check_boxes_with_many_association
}

expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
form_field('input', name: 'post[tag_ids][]', type: 'hidden', value: '')
hidden_input('post[tag_ids][]')
end

assert_dom_equal expected, output_buffer
Expand Down Expand Up @@ -450,7 +451,7 @@ def test_collection_check_boxes

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
form_field('input', name: 'post[cost][]', type: 'hidden', value: '')
hidden_input('post[cost][]')
end

assert_dom_equal expected, output_buffer
Expand All @@ -464,7 +465,7 @@ def test_collection_checkboxes

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
form_field('input', name: 'post[cost][]', type: 'hidden', value: '')
hidden_input('post[cost][]')
end

assert_dom_equal expected, output_buffer
Expand All @@ -477,7 +478,7 @@ def test_collection_check_boxes_with_validate_options
end

expected = whole_form_for('/posts', 'new_post', 'new_post', validators: {}) do
form_field('input', name: 'post[cost][]', type: 'hidden', value: '')
hidden_input('post[cost][]')
end

assert_dom_equal expected, output_buffer
Expand All @@ -490,7 +491,7 @@ def test_collection_radio_buttons

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_for('/posts', 'new_post', 'new_post', validators: validators) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '')
hidden_input('post[cost]')
end

assert_dom_equal expected, output_buffer
Expand All @@ -502,7 +503,7 @@ def test_collection_radio_buttons_with_validate_options
end

expected = whole_form_for('/posts', 'new_post', 'new_post', validators: {}) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '')
hidden_input('post[cost]')
end

assert_dom_equal expected, output_buffer
Expand Down
35 changes: 26 additions & 9 deletions test/action_view/cases/test_form_with_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -131,14 +131,30 @@ def test_form_with_file_field
assert_dom_equal expected, output_buffer
end

if Rails.version >= '7.0'
def test_form_with_file_multiple_include_hidden
form_with(model: @post, validate: true) do |f|
concat f.file_field(:cost, multiple: true, include_hidden: true)
end

validators = { 'post[cost][]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_with('/posts', validators: validators, file: true) do
hidden_input('post[cost][]') +
form_field('input', id: 'post_cost', name: 'post[cost][]', type: 'file', multiple: 'multiple')
end

assert_dom_equal expected, output_buffer
end
end

def test_form_with_check_box
form_with(model: @post, validate: true) do |f|
concat f.check_box(:cost)
end

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_with('/posts', validators: validators) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '0') +
hidden_input_for_checkbox('post[cost]') +
form_field('input', id: 'post_cost', name: 'post[cost]', type: 'checkbox', value: '1')
end

Expand All @@ -153,7 +169,7 @@ def test_form_with_checkbox

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_with('/posts', validators: validators) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '0') +
hidden_input_for_checkbox('post[cost]') +
form_field('input', id: 'post_cost', name: 'post[cost]', type: 'checkbox', value: '1')
end

Expand All @@ -168,7 +184,7 @@ def test_form_with_check_box_ensure_no_validate_attribute

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_with('/posts', validators: validators) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '0') +
hidden_input_for_checkbox('post[cost]') +
form_field('input', id: 'post_cost', name: 'post[cost]', type: 'checkbox', value: '1')
end

Expand Down Expand Up @@ -397,7 +413,8 @@ def test_form_with_select_multiple

validators = { 'post[cost][]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_with('/posts', validators: validators) do
%(#{hidden_input_for_select('post[cost][]')}#{form_field('select', id: 'post_cost', name: 'post[cost][]', multiple: true)})
hidden_input('post[cost][]') +
form_field('select', id: 'post_cost', name: 'post[cost][]', multiple: true)
end

assert_dom_equal expected, output_buffer
Expand Down Expand Up @@ -473,7 +490,7 @@ def test_form_with_collection_check_boxes

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_with('/posts', validators: validators) do
form_field('input', name: 'post[cost][]', type: 'hidden', value: '')
hidden_input('post[cost][]')
end

assert_dom_equal expected, output_buffer
Expand All @@ -487,7 +504,7 @@ def test_form_with_collection_checkboxes

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_with('/posts', validators: validators) do
form_field('input', name: 'post[cost][]', type: 'hidden', value: '')
hidden_input('post[cost][]')
end

assert_dom_equal expected, output_buffer
Expand All @@ -500,7 +517,7 @@ def test_form_with_collection_check_boxes_with_validate_options
end

expected = whole_form_with('/posts', validators: {}) do
form_field('input', name: 'post[cost][]', type: 'hidden', value: '')
hidden_input('post[cost][]')
end

assert_dom_equal expected, output_buffer
Expand All @@ -513,7 +530,7 @@ def test_form_with_collection_radio_buttons

validators = { 'post[cost]' => { presence: [{ message: I18n.t('errors.messages.blank') }] } }
expected = whole_form_with('/posts', validators: validators) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '')
hidden_input('post[cost]')
end

assert_dom_equal expected, output_buffer
Expand All @@ -525,7 +542,7 @@ def test_form_with_collection_radio_buttons_with_validate_options
end

expected = whole_form_with('/posts', validators: {}) do
form_field('input', name: 'post[cost]', type: 'hidden', value: '')
hidden_input('post[cost]')
end

assert_dom_equal expected, output_buffer
Expand Down
3 changes: 2 additions & 1 deletion test/action_view/cases/test_legacy_form_for_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,8 @@ def test_select_multiple
end

expected = whole_form_for('/posts', 'new_post', 'new_post') do
%(#{hidden_input_for_select('post[cost][]')}#{form_field('select', id: 'post_cost', name: 'post[cost][]', multiple: true)})
hidden_input('post[cost][]') +
form_field('select', id: 'post_cost', name: 'post[cost][]', multiple: true)
end

assert_dom_equal expected, output_buffer
Expand Down
18 changes: 17 additions & 1 deletion test/action_view/cases/test_legacy_form_with_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,21 @@ def test_form_with_file_field
assert_dom_equal expected, output_buffer
end

if Rails.version >= '7.0'
def test_form_with_file_multiple_include_hidden
form_with(model: @post) do |f|
concat f.file_field(:cost, multiple: true, include_hidden: true)
end

expected = whole_form_with('/posts', file: true) do
hidden_input('post[cost][]') +
form_field('input', id: 'post_cost', name: 'post[cost][]', type: 'file', multiple: 'multiple')
end

assert_dom_equal expected, output_buffer
end
end

def test_form_with_check_box
form_with(model: @post) do |f|
concat f.check_box(:cost)
Expand Down Expand Up @@ -137,7 +152,8 @@ def test_form_with_select_multiple
end

expected = whole_form_with('/posts') do
%(#{hidden_input_for_select('post[cost][]')}#{form_field('select', name: 'post[cost][]', id: 'post_cost', multiple: true)})
hidden_input('post[cost][]') +
form_field('select', name: 'post[cost][]', id: 'post_cost', multiple: true)
end

assert_dom_equal expected, output_buffer
Expand Down
Loading