package handler import ( "path/filepath" "testing" "github.com/basketikun/infinite-canvas/config" ) func TestNormalizeReferenceMediaTypeSupportsAudio(t *testing.T) { tests := []struct { name string contentType string ext string wantMime string wantExt string }{ {name: "mp3 mime", contentType: "audio/mpeg", ext: ".bin", wantMime: "audio/mpeg", wantExt: ".mp3"}, {name: "wav ext fallback", contentType: "application/octet-stream", ext: ".wav", wantMime: "audio/wav", wantExt: ".wav"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mimeType, ext, ok := normalizeReferenceMediaType(tt.contentType, tt.ext) if !ok { t.Fatal("expected media type to be accepted") } if mimeType != tt.wantMime || ext != tt.wantExt { t.Fatalf("got (%q, %q), want (%q, %q)", mimeType, ext, tt.wantMime, tt.wantExt) } }) } } func TestReferenceMediaTypeMaxBytes(t *testing.T) { if got := referenceMediaTypeMaxBytes("audio/mpeg"); got != referenceAudioMaxBytes { t.Fatalf("audio max bytes = %d, want %d", got, referenceAudioMaxBytes) } if got := referenceMediaTypeMaxBytes("video/mp4"); got != referenceVideoMaxBytes { t.Fatalf("video max bytes = %d, want %d", got, referenceVideoMaxBytes) } if got := referenceMediaTypeMaxBytes("image/png"); got != referenceImageMaxBytes { t.Fatalf("image max bytes = %d, want %d", got, referenceImageMaxBytes) } } func TestReferenceMediaDirUsesAbsoluteSQLiteDataDir(t *testing.T) { previous := config.Cfg t.Cleanup(func() { config.Cfg = previous }) root := t.TempDir() config.Cfg = config.Config{StorageDriver: "sqlite", DatabaseDSN: filepath.Join(root, "infinite-canvas.db")} if got := referenceMediaDir(); got != filepath.Join(root, "reference-media") { t.Fatalf("referenceMediaDir = %q", got) } }