diff --git a/test/test_form_for_helper.rb b/test/test_form_for_helper.rb new file mode 100644 index 0000000..909e8a3 --- /dev/null +++ b/test/test_form_for_helper.rb @@ -0,0 +1,83 @@ +require 'minitest/autorun' +require 'prism' + +class FormForHelperTest < Minitest::Test + FakeModel = Struct.new(:id, :title) do + def persisted? + !id.nil? + end + end + + HelpersWithCsrf = Struct.new(:csrf_token) + + def render(source, helpers = nil) + Prism::Template.render(source, {}, nil, helpers) + end + + def test_form_for_new_record_uses_post + html = render(<<~ERB) + <% form_for(FormForHelperTest::FakeModel.new, url: "/posts") do |f| %> + <%== f.text_field(:title) %> + <% end %> + ERB + assert_includes html, '
' + end + + def test_form_for_persisted_record_defaults_to_patch_via_method_override + html = render(<<~ERB) + <% form_for(FormForHelperTest::FakeModel.new(1, "hi"), url: "/posts/1") do |f| %> + <%== f.submit %> + <% end %> + ERB + assert_includes html, '