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}