arnaucube
arnaucube/configsPublic Self-hosted repository
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}