require 'test_helper' require 'active_model' class BasicFieldsTest < ActiveSupport::TestCase BASIC_FIELDS = %w(email phone text password color file date datetime datetime_local number range search telephone time url week) def assigns {foo: resource} end def helpers mock_action_view do def foos_path '/foos' end end end def field_type_map Hash[BASIC_FIELDS.map {|f| [f, f]}].merge({ 'phone' => 'tel', 'telephone' => 'tel', 'datetime' => 'datetime-local', 'datetime_local' => 'datetime-local' }) end def label_html '' end test "all fields work" do BASIC_FIELDS.each do |type| fragment = -> (ctx) { express_form(:foo) { send(type, :bar) } } html = arbre(&fragment) assert_match(label_html, html) assert_match(/input.*type="#{field_type_map[type]}"/, html) # assert_match "#{type}_field(:foo, :bar, {})", arbre(&fragment) end end test "passing html options to fields work" do options = {style: 'width: 10em;'} ['email'].each do |type| html = arbre { express_form(:foo) { send(type, :bar, options) } } assert_match(label_html, html) assert_match(/input.*type="#{field_type_map[type]}"/, html) assert_match(/input.*style="width: 10em;"/, html) end end test "textarea uses rails text_area helper" do html = arbre { express_form(:foo) { textarea :bar } } assert_match(label_html, html) assert_match(/