test_form_template.rb

 1# frozen_string_literal: true
 2
 3require "test_helper"
 4require "form_template"
 5
 6class FormTemplateTest < Minitest::Test
 7	def test_form_one_field
 8		template = FormTemplate.new(<<~TEMPLATE)
 9			form!
10			title "TITLE"
11			instructions "INSTRUCTIONS"
12			field(var: "thevar", label: "thelabel")
13		TEMPLATE
14		form = template.render
15		assert_equal :form, form.type
16		assert_equal "TITLE", form.title
17		assert_equal "INSTRUCTIONS", form.instructions
18		assert_equal 1, form.fields.length
19		assert_equal "thevar", form.fields[0].var
20		assert_equal "thelabel", form.fields[0].label
21	end
22
23	def test_form_two_fields
24		template = FormTemplate.new(<<~TEMPLATE)
25			form!
26			field(var: "thevar", label: "thelabel")
27			field(var: "thevar2", label: "thelabel2")
28		TEMPLATE
29		form = template.render
30		assert_equal 2, form.fields.length
31		assert_equal "thevar", form.fields[0].var
32		assert_equal "thelabel", form.fields[0].label
33		assert_equal "thevar2", form.fields[1].var
34		assert_equal "thelabel2", form.fields[1].label
35	end
36
37	def test_result_no_fields
38		template = FormTemplate.new(<<~TEMPLATE)
39			result!
40			title "TITLE"
41			instructions "INSTRUCTIONS"
42		TEMPLATE
43		form = template.render
44		assert_equal :result, form.type
45		assert_equal "TITLE", form.title
46		assert_equal "INSTRUCTIONS", form.instructions
47	end
48
49	def test_no_type
50		template = FormTemplate.new(<<~TEMPLATE)
51			title "TITLE"
52			instructions "INSTRUCTIONS"
53		TEMPLATE
54		assert_raises { template.render }
55	end
56
57	def test_custom_xml
58		template = FormTemplate.new(<<~TEMPLATE)
59			form!
60			xml.whoever @arg
61		TEMPLATE
62		form = template.render(arg: "abc")
63		assert_equal "abc", form.at("whoever").content
64	end
65end