Files
minstrel/internal/api/convert_test.go
T

76 lines
1.7 KiB
Go

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