# frozen_string_literal: true
require "test_helper"
require "form_template"
class FormTemplateTest < Minitest::Test
def test_form_one_field
template = FormTemplate.new(<<~TEMPLATE)
form!
title "TITLE"
instructions "INSTRUCTIONS"
field(var: "thevar", label: "thelabel")
TEMPLATE
form = template.render
assert_equal :form, form.type
assert_equal "TITLE", form.title
assert_equal "INSTRUCTIONS", form.instructions
assert_equal 1, form.fields.length
assert_equal "thevar", form.fields[0].var
assert_equal "thelabel", form.fields[0].label
end
def test_form_two_fields
template = FormTemplate.new(<<~TEMPLATE)
form!
field(var: "thevar", label: "thelabel")
field(var: "thevar2", label: "thelabel2")
TEMPLATE
form = template.render
assert_equal 2, form.fields.length
assert_equal "thevar", form.fields[0].var
assert_equal "thelabel", form.fields[0].label
assert_equal "thevar2", form.fields[1].var
assert_equal "thelabel2", form.fields[1].label
end
def test_result_no_fields
template = FormTemplate.new(<<~TEMPLATE)
result!
title "TITLE"
instructions "INSTRUCTIONS"
TEMPLATE
form = template.render
assert_equal :result, form.type
assert_equal "TITLE", form.title
assert_equal "INSTRUCTIONS", form.instructions
end
def test_no_type
template = FormTemplate.new(<<~TEMPLATE)
title "TITLE"
instructions "INSTRUCTIONS"
TEMPLATE
assert_raises { template.render }
end
def test_custom_xml
template = FormTemplate.new(<<~TEMPLATE)
form!
xml.whoever @arg
TEMPLATE
form = template.render(arg: "abc")
assert_equal "abc", form.at("whoever").content
end
end