fix: update watchlist service tests
This commit is contained in:
@@ -123,10 +123,10 @@ func (h *Handler) HandleWatchPage(w http.ResponseWriter, r *http.Request) {
|
||||
for i := start; i <= maxCount; i++ {
|
||||
epStr := strconv.Itoa(i)
|
||||
meta, err := h.svc.GetEpisodeMetadata(r.Context(), id, epStr)
|
||||
|
||||
|
||||
title := fmt.Sprintf("Episode %d", i)
|
||||
imgURL := ""
|
||||
|
||||
|
||||
if err == nil && meta != nil {
|
||||
if info, ok := meta["episodeInfo"].(map[string]any); ok {
|
||||
if thumbs, ok := info["thumbnails"].([]any); ok && len(thumbs) > 0 {
|
||||
|
||||
@@ -35,14 +35,14 @@ type SkipSegment struct {
|
||||
}
|
||||
|
||||
type WatchPageData struct {
|
||||
MalID int
|
||||
Title string
|
||||
CurrentEpisode string
|
||||
StartTimeSeconds float64
|
||||
CurrentStatus string
|
||||
InitialMode string
|
||||
AvailableModes []string
|
||||
ModeSources map[string]ModeSource
|
||||
Segments []SkipSegment
|
||||
FallbackEpisodes map[string]int
|
||||
MalID int
|
||||
Title string
|
||||
CurrentEpisode string
|
||||
StartTimeSeconds float64
|
||||
CurrentStatus string
|
||||
InitialMode string
|
||||
AvailableModes []string
|
||||
ModeSources map[string]ModeSource
|
||||
Segments []SkipSegment
|
||||
FallbackEpisodes map[string]int
|
||||
}
|
||||
|
||||
@@ -32,12 +32,9 @@ func TestAddEntry_RejectsInvalidAnimeID(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
q := &fakeQuerier{}
|
||||
svc := NewService(q, nil)
|
||||
svc := NewService(q, nil, nil)
|
||||
|
||||
err := svc.AddEntry(context.Background(), "user-1", AddRequest{
|
||||
AnimeID: 0,
|
||||
Status: "watching",
|
||||
})
|
||||
err := svc.AddToWatchlist(context.Background(), "user-1", 0, "watching")
|
||||
|
||||
if err != ErrInvalidAnimeID {
|
||||
t.Fatalf("expected ErrInvalidAnimeID, got %v", err)
|
||||
@@ -52,12 +49,9 @@ func TestAddEntry_RejectsInvalidStatus(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
q := &fakeQuerier{}
|
||||
svc := NewService(q, nil)
|
||||
svc := NewService(q, nil, nil)
|
||||
|
||||
err := svc.AddEntry(context.Background(), "user-1", AddRequest{
|
||||
AnimeID: 1,
|
||||
Status: "invalid",
|
||||
})
|
||||
err := svc.AddToWatchlist(context.Background(), "user-1", 1, "invalid")
|
||||
|
||||
if err != ErrInvalidStatus {
|
||||
t.Fatalf("expected ErrInvalidStatus, got %v", err)
|
||||
|
||||
@@ -43,7 +43,7 @@ func (e *Episode) GetFallbackImage(animeID int) string {
|
||||
// MAL URLs usually follow this format, and it redirects to the slug version
|
||||
episodeURL := fmt.Sprintf("https://myanimelist.net/anime/%d/_/episode/%d", animeID, episodeNum)
|
||||
fallbackURL := scrapeAnimeImageFromEpisodePage(episodeURL, episodeNum)
|
||||
|
||||
|
||||
if fallbackURL != "" {
|
||||
return fallbackURL
|
||||
}
|
||||
@@ -79,7 +79,7 @@ func scrapeAnimeImageFromEpisodePage(episodeURL string, episodeNum int) string {
|
||||
|
||||
html := string(body)
|
||||
|
||||
// MAL sometimes redirects to a URL with a slug.
|
||||
// MAL sometimes redirects to a URL with a slug.
|
||||
// The JSON object is very likely to be present in the full page.
|
||||
// We extract the object {} containing "episode_number":X
|
||||
episodeStr := strconv.Itoa(episodeNum)
|
||||
@@ -90,7 +90,7 @@ func scrapeAnimeImageFromEpisodePage(episodeURL string, episodeNum int) string {
|
||||
objPattern = regexp.MustCompile(`\{[^}]*"episode_number":\s*` + episodeStr + `[^}]*\}`)
|
||||
match = objPattern.FindString(html)
|
||||
}
|
||||
|
||||
|
||||
if match != "" {
|
||||
thumbRe := regexp.MustCompile(`"thumbnail":\s*"([^"]+)"`)
|
||||
thumbMatch := thumbRe.FindStringSubmatch(match)
|
||||
|
||||
Reference in New Issue
Block a user