Files
seanime/internal/local/sync_test.go
2026-03-31 16:50:49 +02:00

128 lines
3.6 KiB
Go

package local
import (
"errors"
"fmt"
"seanime/internal/api/anilist"
"seanime/internal/extension"
"seanime/internal/platforms/anilist_platform"
"seanime/internal/testutil"
"seanime/internal/util"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func testSetupManager(t *testing.T) (Manager, *anilist.AnimeCollection, *anilist.MangaCollection) {
env := testutil.NewTestEnv(t)
logger := env.Logger()
database := env.MustNewDatabase(logger)
anilistClient := anilist.NewTestAnilistClient()
extensionBankRef := util.NewRef(extension.NewUnifiedBank())
anilistPlatform := anilist_platform.NewAnilistPlatform(util.NewRef[anilist.AnilistClient](anilistClient), extensionBankRef, logger, database)
animeCollection, err := anilistPlatform.GetAnimeCollection(t.Context(), true)
require.NoError(t, err)
mangaCollection, err := anilistPlatform.GetMangaCollection(t.Context(), true)
require.NoError(t, err)
manager := NewTestManager(t, database)
manager.SetAnimeCollection(animeCollection)
manager.SetMangaCollection(mangaCollection)
return manager, animeCollection, mangaCollection
}
func TestSync2(t *testing.T) {
manager, animeCollection, _ := testSetupManager(t)
err := manager.TrackAnime(130003) // Bocchi the rock
if err != nil && !errors.Is(err, ErrAlreadyTracked) {
require.NoError(t, err)
}
err = manager.TrackAnime(10800) // Chihayafuru
if err != nil && !errors.Is(err, ErrAlreadyTracked) {
require.NoError(t, err)
}
err = manager.TrackAnime(171457) // Make Heroine ga Oosugiru!
if err != nil && !errors.Is(err, ErrAlreadyTracked) {
require.NoError(t, err)
}
err = manager.TrackManga(101517) // JJK
if err != nil && !errors.Is(err, ErrAlreadyTracked) {
require.NoError(t, err)
}
err = manager.SynchronizeLocal()
require.NoError(t, err)
select {
case <-manager.GetSyncer().doneUpdatingLocalCollections:
util.Spew(manager.GetLocalAnimeCollection().MustGet())
util.Spew(manager.GetLocalMangaCollection().MustGet())
break
case <-time.After(10 * time.Second):
t.Log("Timeout")
break
}
anilist.PatchAnimeCollectionEntry(animeCollection, 130003, anilist.AnimeCollectionEntryPatch{
Status: new(anilist.MediaListStatusCompleted),
Progress: new(12), // Mock progress
})
fmt.Println("================================================================================================")
fmt.Println("================================================================================================")
err = manager.SynchronizeLocal()
require.NoError(t, err)
select {
case <-manager.GetSyncer().doneUpdatingLocalCollections:
util.Spew(manager.GetLocalAnimeCollection().MustGet())
util.Spew(manager.GetLocalMangaCollection().MustGet())
break
case <-time.After(10 * time.Second):
t.Log("Timeout")
break
}
}
func TestSync(t *testing.T) {
manager, _, _ := testSetupManager(t)
err := manager.TrackAnime(130003) // Bocchi the rock
if err != nil && !errors.Is(err, ErrAlreadyTracked) {
require.NoError(t, err)
}
err = manager.TrackAnime(10800) // Chihayafuru
if err != nil && !errors.Is(err, ErrAlreadyTracked) {
require.NoError(t, err)
}
err = manager.TrackAnime(171457) // Make Heroine ga Oosugiru!
if err != nil && !errors.Is(err, ErrAlreadyTracked) {
require.NoError(t, err)
}
err = manager.TrackManga(101517) // JJK
if err != nil && !errors.Is(err, ErrAlreadyTracked) {
require.NoError(t, err)
}
err = manager.SynchronizeLocal()
require.NoError(t, err)
select {
case <-manager.GetSyncer().doneUpdatingLocalCollections:
util.Spew(manager.GetLocalAnimeCollection().MustGet())
util.Spew(manager.GetLocalMangaCollection().MustGet())
break
case <-time.After(10 * time.Second):
t.Log("Timeout")
break
}
}