mdalert_test.gno
5.97 Kb ยท 185 lines
1package mdalert_test
2
3import (
4 "testing"
5
6 "gno.land/p/nt/mdalert"
7)
8
9func TestAlertString(t *testing.T) {
10 tests := []struct {
11 name string
12 expected string
13 alert mdalert.Alert
14 }{
15 {
16 name: "alert",
17 expected: "> [!INFO] Title\n> Message\n",
18 alert: mdalert.New(mdalert.TypeInfo, "Title", "Message", false),
19 },
20 {
21 name: "alert with empty title",
22 expected: "> [!INFO]\n> Message\n",
23 alert: mdalert.New(mdalert.TypeInfo, "", "Message", false),
24 },
25 {
26 name: "alert multiline",
27 expected: "> [!INFO]\n> Line1\n> Line2\n",
28 alert: mdalert.New(mdalert.TypeInfo, "", "Line1\nLine2", false),
29 },
30 {
31 name: "folded alert",
32 expected: "> [!INFO]- Title\n> Message\n",
33 alert: mdalert.New(mdalert.TypeInfo, "Title", "Message", true),
34 },
35 {
36 name: "empty alert",
37 },
38 }
39
40 for _, tt := range tests {
41 t.Run(tt.name, func(t *testing.T) {
42 got := tt.alert.String()
43 if got != tt.expected {
44 t.Errorf("Got: %q\nWant: %q", got, tt.expected)
45 }
46 })
47 }
48}
49
50func TestHelpers(t *testing.T) {
51 tests := []struct {
52 name string
53 expected string
54 fn func() string
55 }{
56 // CAUTION
57 {"caution", "> [!CAUTION] Title\n> Message\n", func() string {
58 return mdalert.Caution("Title", "Message")
59 }},
60 {"caution with empty title", "> [!CAUTION]\n> Message\n", func() string {
61 return mdalert.Caution("", "Message")
62 }},
63 {"caution multiline", "> [!CAUTION] Title\n> Line1\n> Line2\n", func() string {
64 return mdalert.Caution("Title", "Line1\nLine2")
65 }},
66 {"caution formatted", "> [!CAUTION] Title\n> Message\n", func() string {
67 return mdalert.Cautionf("Title", "%s", "Message")
68 }},
69 {"caution formatted with empty title", "> [!CAUTION]\n> Message\n", func() string {
70 return mdalert.Cautionf("", "%s", "Message")
71 }},
72 {"caution formatted multiline", "> [!CAUTION] Title\n> Line1\n> Line2\n", func() string {
73 return mdalert.Cautionf("Title", "%s\n%s", "Line1", "Line2")
74 }},
75
76 // INFO
77 {"info", "> [!INFO] Title\n> Message\n", func() string {
78 return mdalert.Info("Title", "Message")
79 }},
80 {"info with empty title", "> [!INFO]\n> Message\n", func() string {
81 return mdalert.Info("", "Message")
82 }},
83 {"info multiline", "> [!INFO] Title\n> Line1\n> Line2\n", func() string {
84 return mdalert.Info("Title", "Line1\nLine2")
85 }},
86 {"info formatted", "> [!INFO] Title\n> Message\n", func() string {
87 return mdalert.Infof("Title", "%s", "Message")
88 }},
89 {"info formatted with empty title", "> [!INFO]\n> Message\n", func() string {
90 return mdalert.Infof("", "%s", "Message")
91 }},
92 {"info formatted multiline", "> [!INFO] Title\n> Line1\n> Line2\n", func() string {
93 return mdalert.Infof("Title", "%s\n%s", "Line1", "Line2")
94 }},
95
96 // NOTE
97 {"note", "> [!NOTE] Title\n> Message\n", func() string {
98 return mdalert.Note("Title", "Message")
99 }},
100 {"note with empty title", "> [!NOTE]\n> Message\n", func() string {
101 return mdalert.Note("", "Message")
102 }},
103 {"note multiline", "> [!NOTE] Title\n> Line1\n> Line2\n", func() string {
104 return mdalert.Note("Title", "Line1\nLine2")
105 }},
106 {"note formatted", "> [!NOTE] Title\n> Message\n", func() string {
107 return mdalert.Notef("Title", "%s", "Message")
108 }},
109 {"note formatted with empty title", "> [!NOTE]\n> Message\n", func() string {
110 return mdalert.Notef("", "%s", "Message")
111 }},
112 {"note formatted multiline", "> [!NOTE] Title\n> Line1\n> Line2\n", func() string {
113 return mdalert.Notef("Title", "%s\n%s", "Line1", "Line2")
114 }},
115
116 // SUCCESS
117 {"success", "> [!SUCCESS] Title\n> Message\n", func() string {
118 return mdalert.Success("Title", "Message")
119 }},
120 {"success with empty title", "> [!SUCCESS]\n> Message\n", func() string {
121 return mdalert.Success("", "Message")
122 }},
123 {"success multiline", "> [!SUCCESS] Title\n> Line1\n> Line2\n", func() string {
124 return mdalert.Success("Title", "Line1\nLine2")
125 }},
126 {"success formatted", "> [!SUCCESS] Title\n> Message\n", func() string {
127 return mdalert.Successf("Title", "%s", "Message")
128 }},
129 {"success formatted with empty title", "> [!SUCCESS]\n> Message\n", func() string {
130 return mdalert.Successf("", "%s", "Message")
131 }},
132 {"success formatted multiline", "> [!SUCCESS] Title\n> Line1\n> Line2\n", func() string {
133 return mdalert.Successf("Title", "%s\n%s", "Line1", "Line2")
134 }},
135
136 // TIP
137 {"tip", "> [!TIP] Title\n> Message\n", func() string {
138 return mdalert.Tip("Title", "Message")
139 }},
140 {"tip with empty title", "> [!TIP]\n> Message\n", func() string {
141 return mdalert.Tip("", "Message")
142 }},
143 {"tip multiline", "> [!TIP] Title\n> Line1\n> Line2\n", func() string {
144 return mdalert.Tip("Title", "Line1\nLine2")
145 }},
146 {"tip formatted", "> [!TIP] Title\n> Message\n", func() string {
147 return mdalert.Tipf("Title", "%s", "Message")
148 }},
149 {"tip formatted with empty title", "> [!TIP]\n> Message\n", func() string {
150 return mdalert.Tipf("", "%s", "Message")
151 }},
152 {"tip formatted multiline", "> [!TIP] Title\n> Line1\n> Line2\n", func() string {
153 return mdalert.Tipf("Title", "%s\n%s", "Line1", "Line2")
154 }},
155
156 // WARNING
157 {"warning", "> [!WARNING] Title\n> Message\n", func() string {
158 return mdalert.Warning("Title", "Message")
159 }},
160 {"warning with empty title", "> [!WARNING]\n> Message\n", func() string {
161 return mdalert.Warning("", "Message")
162 }},
163 {"warning multiline", "> [!WARNING] Title\n> Line1\n> Line2\n", func() string {
164 return mdalert.Warning("Title", "Line1\nLine2")
165 }},
166 {"warning formatted", "> [!WARNING] Title\n> Message\n", func() string {
167 return mdalert.Warningf("Title", "%s", "Message")
168 }},
169 {"warning formatted with empty title", "> [!WARNING]\n> Message\n", func() string {
170 return mdalert.Warningf("", "%s", "Message")
171 }},
172 {"warning formatted multiline", "> [!WARNING] Title\n> Line1\n> Line2\n", func() string {
173 return mdalert.Warningf("Title", "%s\n%s", "Line1", "Line2")
174 }},
175 }
176
177 for _, tt := range tests {
178 t.Run(tt.name, func(t *testing.T) {
179 got := tt.fn()
180 if got != tt.expected {
181 t.Errorf("Got: %q\nWant: %q", got, tt.expected)
182 }
183 })
184 }
185}