configs/server-dockers/jellyfin-news/jellyfin_test.go
server-dockers/jellyfin-news/jellyfin_test.goRaw
1package main
2
3import (
4 "context"
5 "io"
6 "net/http"
7 "strings"
8 "testing"
9 "time"
10)
11
12type roundTripFunc func(*http.Request) (*http.Response, error)
13
14func (f roundTripFunc) RoundTrip(r *http.Request) (*http.Response, error) { return f(r) }
15
16func TestAddedBetween(t *testing.T) {
17 httpClient := &http.Client{Transport: roundTripFunc(func(r *http.Request) (*http.Response, error) {
18 if r.Header.Get("X-Emby-Token") != "secret" {
19 t.Error("missing API key")
20 }
21 if r.URL.Query().Get("IncludeItemTypes") != "Movie,Episode" {
22 t.Error("wrong item filter")
23 }
24 body := `{"Items":[
25 {"Id":"new","Type":"Movie","Name":"New","DateCreated":"2026-08-24T10:00:00Z"},
26 {"Id":"old","Type":"Movie","Name":"Old","DateCreated":"2026-08-17T09:00:00Z"}
27 ],"TotalRecordCount":2}`
28 return &http.Response{StatusCode: http.StatusOK, Body: io.NopCloser(strings.NewReader(body)), Header: make(http.Header)}, nil
29 })}
30 c, err := New("http://jellyfin.test", "secret", "", httpClient)
31 if err != nil {
32 t.Fatal(err)
33 }
34 start := time.Date(2026, 8, 18, 0, 0, 0, 0, time.UTC)
35 end := time.Date(2026, 8, 25, 0, 0, 0, 0, time.UTC)
36 items, err := c.AddedBetween(context.Background(), start, end)
37 if err != nil {
38 t.Fatal(err)
39 }
40 if len(items) != 1 || items[0].Name != "New" {
41 t.Fatalf("items = %#v", items)
42 }
43}