47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package api
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"net/http"
|
||
|
|
"net/http/httptest"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/ponzischeme89/memby/server/internal/store"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestSubtitleFixAvailableNeedsAUsableReference(t *testing.T) {
|
||
|
|
server := &Server{store: &store.Store{}}
|
||
|
|
english := playableSubtitle{ID: "1", Language: "eng", URL: "https://emby/subtitle/1.srt"}
|
||
|
|
italian := playableSubtitle{ID: "2", Language: "ita", URL: "https://emby/subtitle/2.srt"}
|
||
|
|
|
||
|
|
if server.subtitleFixAvailable([]playableSubtitle{english}) {
|
||
|
|
t.Fatal("one subtitle cannot be checked against itself")
|
||
|
|
}
|
||
|
|
if !server.subtitleFixAvailable([]playableSubtitle{english, italian}) {
|
||
|
|
t.Fatal("two readable text tracks should make timing repair available")
|
||
|
|
}
|
||
|
|
if (&Server{}).subtitleFixAvailable([]playableSubtitle{english, italian}) {
|
||
|
|
t.Fatal("a gateway with no store cannot keep the repaired copy")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestSubtitleFixHandlerRejectsAnUnnamedTrack(t *testing.T) {
|
||
|
|
server := &Server{store: &store.Store{}}
|
||
|
|
request := httptest.NewRequest(
|
||
|
|
http.MethodPost,
|
||
|
|
"/v1/items/42/subtitles/fix",
|
||
|
|
strings.NewReader(`{"subtitleId":" "}`),
|
||
|
|
)
|
||
|
|
request.SetPathValue("id", "42")
|
||
|
|
recorder := httptest.NewRecorder()
|
||
|
|
|
||
|
|
server.handleSubtitleFix(recorder, request, store.Session{})
|
||
|
|
|
||
|
|
if recorder.Code != http.StatusBadRequest {
|
||
|
|
t.Fatalf("status = %d, want 400", recorder.Code)
|
||
|
|
}
|
||
|
|
if !strings.Contains(recorder.Body.String(), "no subtitle was named") {
|
||
|
|
t.Fatalf("body = %q", recorder.Body.String())
|
||
|
|
}
|
||
|
|
}
|