Search Apps Documentation Source Content File Folder Download Copy Actions Download

query_test.gno

2.42 Kb ยท 76 lines
 1package blog
 2
 3import (
 4	"testing"
 5
 6	"gno.land/p/nt/uassert"
 7)
 8
 9func TestParseRenderOptions(t *testing.T) {
10	t.Run("default options with empty path", func(t *testing.T) {
11		opts := ParseRenderOptions("/blog")
12		uassert.Equal(t, "", opts.Sort)
13		uassert.Equal(t, "", opts.TimeFormat)
14		uassert.True(t, opts.Ascending)
15		uassert.True(t, opts.IsGrid)
16		uassert.False(t, opts.IsAlphabetical)
17		uassert.False(t, opts.IsLastUpdated)
18		uassert.False(t, opts.IsCommon)
19		uassert.False(t, opts.HasOrder)
20	})
21
22	t.Run("full options parsing", func(t *testing.T) {
23		url := "/blog?sort=alpha&order=desc&mode=list&time=full"
24		opts := ParseRenderOptions(url)
25		uassert.Equal(t, "alpha", opts.Sort)
26		uassert.Equal(t, "full", opts.TimeFormat)
27		uassert.False(t, opts.Ascending)
28		uassert.False(t, opts.IsGrid)
29		uassert.True(t, opts.IsAlphabetical)
30		uassert.False(t, opts.IsLastUpdated)
31		uassert.False(t, opts.IsCommon)
32		uassert.True(t, opts.HasOrder)
33	})
34}
35
36func TestToggle(t *testing.T) {
37	uassert.Equal(t, "asc", toggle("desc"))
38	uassert.Equal(t, "desc", toggle("asc"))
39	uassert.Equal(t, "desc", toggle("")) // fallback
40}
41
42func TestToggleTimeFormat(t *testing.T) {
43	uassert.Equal(t, "short", toggleTimeFormat("relative"))
44	uassert.Equal(t, "full", toggleTimeFormat("short"))
45	uassert.Equal(t, "relative", toggleTimeFormat("full"))
46	uassert.Equal(t, "short", toggleTimeFormat("")) // fallback
47}
48
49func TestGetSortHelpers(t *testing.T) {
50	base := "/blog?sort=recent&order=desc"
51
52	uassert.Equal(t, "/blog?mode=grid", GetGridFmtPath("/blog"))
53	uassert.Equal(t, "/blog?mode=list", GetListFmtPath("/blog"))
54
55	uassert.Equal(t, "/blog?order=asc&sort=recent", GetSortByPublishedPath(base, "desc"))
56	uassert.Equal(t, "/blog?order=asc&sort=update", GetSortByUpdatedPath(base, "desc"))
57	uassert.Equal(t, "/blog?order=asc&sort=alpha", GetSortByAlphabeticalPath(base, "desc"))
58	uassert.Equal(t, "/blog?order=asc&sort=common", GetSortByCommonPath(base, "desc"))
59}
60
61func TestTimeFormatAndRangeHelpers(t *testing.T) {
62	base := "/blog"
63
64	uassert.Equal(t, "/blog?time=full", GetTimeFmtPath(base, "full"))
65	uassert.Equal(t, "/blog?start=2024-01-01", GetTimeStartPath(base, "2024-01-01"))
66	uassert.Equal(t, "/blog?end=2025-01-01", GetTimeEndPath(base, "2025-01-01"))
67}
68
69func TestParseTimeRange(t *testing.T) {
70	path := "/blog?start=2024-01-01&end=2024-12-31"
71	start, end := parseTimeRange(path)
72	uassert.NotEqual(t, nil, start)
73	uassert.NotEqual(t, nil, end)
74
75	uassert.Equal(t, true, start.Before(*end))
76}