mirror of
https://github.com/5rahim/seanime
synced 2026-04-18 22:24:55 +02:00
128 lines
3.6 KiB
Go
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
|
|
}
|
|
|
|
}
|