Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
54 lines
1.7 KiB
Go
54 lines
1.7 KiB
Go
package playletser
|
|
|
|
import "testing"
|
|
|
|
func TestParseSeriesQueryMapsSwaggerOperateFilters(t *testing.T) {
|
|
tests := []struct {
|
|
slug string
|
|
wantFilter int
|
|
}{
|
|
{slug: "", wantFilter: seriesFilterLatest},
|
|
{slug: "latest", wantFilter: seriesFilterLatest},
|
|
{slug: "popular", wantFilter: seriesFilterHot},
|
|
{slug: "original", wantFilter: seriesFilterOrigin},
|
|
}
|
|
for _, tt := range tests {
|
|
q, ok := ParseSeriesQuery(tt.slug, "2")
|
|
if !ok {
|
|
t.Fatalf("ParseSeriesQuery(%q) rejected valid filter", tt.slug)
|
|
}
|
|
if q.OperateType != 2 || q.FilterType != tt.wantFilter || q.PageNum != 2 || q.PageSize != 25 {
|
|
t.Fatalf("ParseSeriesQuery(%q) = %#v", tt.slug, q)
|
|
}
|
|
}
|
|
if _, ok := ParseSeriesQuery("unknown", "1"); ok {
|
|
t.Fatal("unknown filter should be rejected")
|
|
}
|
|
}
|
|
|
|
func TestSeriesCanonicalPaths(t *testing.T) {
|
|
tests := []struct {
|
|
filter int
|
|
page int
|
|
want string
|
|
}{
|
|
{filter: seriesFilterLatest, page: 1, want: "/series"},
|
|
{filter: seriesFilterLatest, page: 3, want: "/series/page/3"},
|
|
{filter: seriesFilterHot, page: 1, want: "/series/popular"},
|
|
{filter: seriesFilterOrigin, page: 4, want: "/series/original/page/4"},
|
|
}
|
|
for _, tt := range tests {
|
|
got := seriesPageURL(tt.filter, tt.page)
|
|
if got != tt.want {
|
|
t.Fatalf("seriesPageURL(%d, %d) = %q, want %q", tt.filter, tt.page, got, tt.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestBuildSeriesFilterTabs(t *testing.T) {
|
|
tabs := BuildSeriesFilterTabs(OperateListQuery{OperateType: 2, FilterType: 2, PageNum: 1, PageSize: 25})
|
|
if len(tabs) != 3 || tabs[0].URL != "/series" || tabs[1].URL != "/series/popular" || !tabs[1].Active || tabs[2].URL != "/series/original" {
|
|
t.Fatalf("unexpected series tabs: %#v", tabs)
|
|
}
|
|
}
|