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}