package api import ( "testing" "github.com/jackc/pgx/v5/pgtype" ) func TestUUIDToString(t *testing.T) { var u pgtype.UUID if err := u.Scan("00112233-4455-6677-8899-aabbccddeeff"); err != nil { t.Fatalf("scan: %v", err) } got := uuidToString(u) want := "00112233-4455-6677-8899-aabbccddeeff" if got != want { t.Errorf("uuidToString = %q, want %q", got, want) } var zero pgtype.UUID if s := uuidToString(zero); s != "" { t.Errorf("uuidToString(invalid) = %q, want empty", s) } } func TestParseUUID(t *testing.T) { u, ok := parseUUID("00112233-4455-6677-8899-aabbccddeeff") if !ok || !u.Valid { t.Fatalf("parseUUID valid: ok=%v valid=%v", ok, u.Valid) } if _, ok := parseUUID("not-a-uuid"); ok { t.Error("parseUUID accepted garbage") } if _, ok := parseUUID(""); ok { t.Error("parseUUID accepted empty string") } } func TestYearFromDate(t *testing.T) { var d pgtype.Date if y := yearFromDate(d); y != 0 { t.Errorf("yearFromDate(invalid) = %d, want 0", y) } } func TestDurationMsToSec(t *testing.T) { cases := []struct { ms int32 want int }{ {0, 0}, {500, 1}, // rounds up {499, 0}, // rounds down {1500, 2}, // rounds up {60000, 60}, } for _, c := range cases { if got := durationMsToSec(c.ms); got != c.want { t.Errorf("durationMsToSec(%d) = %d, want %d", c.ms, got, c.want) } } } func TestCoverURLAndStreamURL(t *testing.T) { var u pgtype.UUID if err := u.Scan("00112233-4455-6677-8899-aabbccddeeff"); err != nil { t.Fatalf("scan: %v", err) } if got := coverURL(u); got != "/api/albums/00112233-4455-6677-8899-aabbccddeeff/cover" { t.Errorf("coverURL = %q", got) } if got := streamURL(u); got != "/api/tracks/00112233-4455-6677-8899-aabbccddeeff/stream" { t.Errorf("streamURL = %q", got) } }