Search Apps Documentation Source Content File Folder Download Copy Actions Download

submit_test.gno

2.16 Kb ยท 96 lines
 1package forms
 2
 3import (
 4	"testing"
 5	"time"
 6
 7	"gno.land/p/nt/urequire"
 8)
 9
10func TestAnswerForm(t *testing.T) {
11	testing.SetRealm(testing.NewUserRealm("g1user"))
12
13	db := NewDB()
14
15	data := `[
16		{
17			"label": "Name",
18			"fieldType": "string",
19			"required": true
20		},
21		{
22			"label": "Age",
23			"fieldType": "number",
24			"required": false
25		},
26		{
27			"label": "Is this a test?",
28			"fieldType": "boolean",
29			"required": false
30		},
31		{
32			"label": "Favorite Food",
33			"fieldType": "[Pizza|Schnitzel|Burger]",
34			"required": true
35		},
36		{
37			"label": "Favorite Foods",
38			"fieldType": "{Pizza|Schnitzel|Burger}",
39			"required": true
40		}
41	]`
42
43	formID, err := db.CreateForm("Test Form", "Test Description", "", "", data)
44	if err != nil {
45		t.Error(err)
46	}
47	answers := `["Alex", 21, true, 0, [0, 1]]`
48	db.SubmitForm(formID, answers)
49
50	urequire.True(t, len(db.Answers) == 1, "Expected 1 answer, got", string(len(db.Answers)))
51	urequire.True(t, db.Answers[0].FormID == formID, "Expected form ID", formID, "got", db.Answers[0].FormID)
52	urequire.True(t, db.Answers[0].Answers == answers, "Expected answers", answers, "got", db.Answers[0].Answers)
53	urequire.True(t, err == nil, "Submit should not return an error")
54}
55
56func TestAnswerFormDates(t *testing.T) {
57	testing.SetRealm(testing.NewUserRealm("g1user"))
58	db := NewDB()
59
60	now := time.Now()
61	tomorrow := now.AddDate(0, 0, 1).Format("2006-01-02T15:04:05Z")
62	yesterday := now.AddDate(0, 0, -1).Format("2006-01-02T15:04:05Z")
63
64	data := `[
65		{
66			"label": "Name",
67			"fieldType": "string",
68			"required": true
69		}
70	]`
71	answers := `["Test"]`
72
73	urequire.PanicsWithMessage(t, "Form is closed", func() {
74		formID, err := db.CreateForm("Test Form", "Test Description", tomorrow, "", data)
75		if err != nil {
76			t.Error(err)
77		}
78		db.SubmitForm(formID, answers)
79	})
80
81	urequire.PanicsWithMessage(t, "Form is closed", func() {
82		formID, err := db.CreateForm("Test Form", "Test Description", "", yesterday, data)
83		if err != nil {
84			t.Error(err)
85		}
86		db.SubmitForm(formID, answers)
87	})
88
89	urequire.NotPanics(t, func() {
90		formID, err := db.CreateForm("Test Form", "Test Description", yesterday, tomorrow, data)
91		if err != nil {
92			panic(err)
93		}
94		db.SubmitForm(formID, answers)
95	})
96}