67 lines
2.0 KiB
Go
67 lines
2.0 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestGenreTotalPrefersEmbysOwnCount(t *testing.T) {
|
|
if got := genreTotal(412, 48, 48, 48); got != 412 {
|
|
t.Fatalf("genreTotal = %d, want the reported 412", got)
|
|
}
|
|
}
|
|
|
|
func TestGenreTotalKeepsScrollingWhenNobodyCounted(t *testing.T) {
|
|
// A full page with no count: there may be more, so the total has to sit past what has
|
|
// been delivered or the television stops half way through the genre.
|
|
if got := genreTotal(0, 48, 48, 48); got <= 96 {
|
|
t.Fatalf("genreTotal = %d, want more than the 96 delivered", got)
|
|
}
|
|
}
|
|
|
|
func TestGenreTotalStopsOnAShortPage(t *testing.T) {
|
|
// A short page is the end of the genre. Claiming anything beyond it leaves the grid
|
|
// asking for a page that will never come.
|
|
if got := genreTotal(0, 48, 11, 48); got != 59 {
|
|
t.Fatalf("genreTotal = %d, want exactly the 59 delivered", got)
|
|
}
|
|
if got := genreTotal(0, 0, 0, 48); got != 0 {
|
|
t.Fatalf("genreTotal = %d, want 0 for a genre with nothing in it", got)
|
|
}
|
|
}
|
|
|
|
func TestQueryOffsetTreatsZeroAsAValueRatherThanAMissingOne(t *testing.T) {
|
|
cases := map[string]int{
|
|
"": 0,
|
|
"offset=0": 0,
|
|
"offset=48": 48,
|
|
"offset=-3": 0,
|
|
"offset=nonsense": 0,
|
|
}
|
|
for query, want := range cases {
|
|
r := httptest.NewRequest("GET", "/v1/genres/Comedy/items?"+query, nil)
|
|
if got := queryOffset(r, "offset"); got != want {
|
|
t.Errorf("queryOffset(%q) = %d, want %d", query, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGenreItemTypeSeparatesMoviesAndSeries(t *testing.T) {
|
|
cases := map[string]string{
|
|
"": "Movie,Series",
|
|
"movie": "Movie",
|
|
"Movie": "Movie",
|
|
"series": "Series",
|
|
" Series ": "Series",
|
|
}
|
|
for input, want := range cases {
|
|
got, ok := genreItemType(input)
|
|
if !ok || got != want {
|
|
t.Errorf("genreItemType(%q) = %q, %v; want %q, true", input, got, ok, want)
|
|
}
|
|
}
|
|
if got, ok := genreItemType("Episode"); ok || got != "" {
|
|
t.Fatalf("genreItemType(Episode) = %q, %v; want empty, false", got, ok)
|
|
}
|
|
}
|