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) } }