heartcombo--simple_form/test/inputs/datetime_input_test.rb

106 lines
4.0 KiB
Ruby
Raw Normal View History

# encoding: UTF-8
require 'test_helper'
# Tests for all different kinds of inputs.
class DateTimeInputTest < ActionView::TestCase
# DateTime input
test 'input should generate a datetime select by default for datetime attributes' do
with_input_for @user, :created_at, :datetime
1.upto(5) do |i|
assert_select "form select.datetime#user_created_at_#{i}i"
end
end
test 'input should be able to pass options to datetime select' do
with_input_for @user, :created_at, :datetime,
2013-01-28 21:02:59 +00:00
disabled: true, prompt: { year: 'ano', month: 'mês', day: 'dia' }
assert_select 'select.datetime[disabled=disabled]'
assert_select 'select.datetime option', 'ano'
assert_select 'select.datetime option', 'mês'
assert_select 'select.datetime option', 'dia'
end
test 'input should generate a date select for date attributes' do
with_input_for @user, :born_at, :date
assert_select 'select.date#user_born_at_1i'
assert_select 'select.date#user_born_at_2i'
assert_select 'select.date#user_born_at_3i'
assert_no_select 'select.date#user_born_at_4i'
end
test 'input should be able to pass options to date select' do
2013-01-28 21:02:59 +00:00
with_input_for @user, :born_at, :date, as: :date,
disabled: true, prompt: { year: 'ano', month: 'mês', day: 'dia' }
assert_select 'select.date[disabled=disabled]'
assert_select 'select.date option', 'ano'
assert_select 'select.date option', 'mês'
assert_select 'select.date option', 'dia'
end
test 'input should be able to pass :default to date select' do
2013-01-28 21:02:59 +00:00
with_input_for @user, :born_at, :date, default: Date.today
assert_select "select.date option[value=#{Date.today.year}][selected=selected]"
end
test 'input should generate a time select for time attributes' do
with_input_for @user, :delivery_time, :time
assert_select 'input[type=hidden]#user_delivery_time_1i'
assert_select 'input[type=hidden]#user_delivery_time_2i'
assert_select 'input[type=hidden]#user_delivery_time_3i'
assert_select 'select.time#user_delivery_time_4i'
assert_select 'select.time#user_delivery_time_5i'
end
test 'input should be able to pass options to time select' do
2013-01-28 21:02:59 +00:00
with_input_for @user, :delivery_time, :time, required: true,
disabled: true, prompt: { hour: 'hora', minute: 'minuto' }
assert_select 'select.time[disabled=disabled]'
assert_select 'select.time option', 'hora'
assert_select 'select.time option', 'minuto'
end
test 'label should use i18n to get target for date input type' do
store_translations(:en, date: { order: ['month', 'day', 'year'] }) do
with_input_for :project, :created_at, :date
assert_select 'label[for=project_created_at_2i]'
end
end
test 'label should use i18n to get target for datetime input type' do
store_translations(:en, date: { order: ['month', 'day', 'year'] }) do
with_input_for :project, :created_at, :datetime
assert_select 'label[for=project_created_at_2i]'
end
end
test 'label should use order to get target when date input type' do
with_input_for :project, :created_at, :date, order: ['month', 'year', 'day']
assert_select 'label[for=project_created_at_2i]'
end
test 'label should use order to get target when datetime input type' do
with_input_for :project, :created_at, :datetime, order: ['month', 'year', 'day']
assert_select 'label[for=project_created_at_2i]'
end
test 'label should point to first option when time input type' do
with_input_for :project, :created_at, :time
assert_select 'label[for=project_created_at_4i]'
end
test 'date time input should generate required html attribute' do
2013-01-28 21:02:59 +00:00
with_input_for @user, :delivery_time, :time, required: true
assert_select 'select.required'
assert_select 'select[required]'
end
test 'date time input has an aria-required html attribute' do
with_input_for @user, :delivery_time, :time, required: true
assert_select 'select.required'
assert_select 'select[aria-required=true]'
end
end