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}