From 103b6acb9a9f635d7e4062c77a2f8dd0f37ef5c5 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Sat, 6 Jun 2026 16:53:08 +0200 Subject: [PATCH] test: add tests for browseURL helper --- templates/funcs_test.go | 84 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 templates/funcs_test.go diff --git a/templates/funcs_test.go b/templates/funcs_test.go new file mode 100644 index 0000000..2f584c8 --- /dev/null +++ b/templates/funcs_test.go @@ -0,0 +1,84 @@ +package templates + +import "testing" + +func TestBrowseURLPreservesAndOverridesParams(t *testing.T) { + t.Parallel() + + got, err := browseURL( + browseURLParams{ + Query: "full metal", + Type: "tv", + Status: "airing", + OrderBy: "score", + Sort: "desc", + Studio: 42, + SFW: true, + Genres: []int{1, 2}, + Page: 3, + }, + map[string]any{ + "status": "", + "sort": "asc", + "page": 4, + }, + ) + if err != nil { + t.Fatalf("browseURL error: %v", err) + } + + want := "/browse?genres=1&genres=2&order_by=score&page=4&q=full+metal&sfw=true&sort=asc&studio=42&type=tv" + if got != want { + t.Fatalf("unexpected url\nwant: %s\ngot: %s", want, got) + } +} + +func TestBrowseURLClearsAndEncodesValues(t *testing.T) { + t.Parallel() + + got, err := browseURL( + map[string]any{ + "Query": "K-On! & friends", + "Studio": 99, + "SFW": false, + "Genres": []int{7, 9}, + }, + map[string]any{ + "studio": "", + "genres": []int{5}, + }, + ) + if err != nil { + t.Fatalf("browseURL error: %v", err) + } + + want := "/browse?genres=5&q=K-On%21+%26+friends&sfw=false" + if got != want { + t.Fatalf("unexpected url\nwant: %s\ngot: %s", want, got) + } +} + +func TestBrowseURLSupportsNamedMapTypes(t *testing.T) { + t.Parallel() + + type namedMap map[string]any + + got, err := browseURL( + namedMap{ + "Query": "monster", + "Status": "airing", + "SFW": true, + }, + map[string]any{ + "status": "complete", + }, + ) + if err != nil { + t.Fatalf("browseURL error: %v", err) + } + + want := "/browse?q=monster&sfw=true&status=complete" + if got != want { + t.Fatalf("unexpected url\nwant: %s\ngot: %s", want, got) + } +}