Background Prefetching for Kavita+ (#2707)

This commit is contained in:
Joe Milazzo 2024-02-10 09:43:17 -06:00 committed by GitHub
parent f616b99585
commit 5dc5029a75
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
35 changed files with 3300 additions and 100 deletions

View file

@ -1392,4 +1392,96 @@ public class SeriesServiceTests : AbstractDbTest
}
#endregion
#region DeleteMultipleSeries
[Fact]
public async Task DeleteMultipleSeries_ShouldDeleteSeries()
{
await ResetDb();
var lib1 = new LibraryBuilder("Test LIb")
.WithSeries(new SeriesBuilder("Test Series")
.WithMetadata(new SeriesMetadata()
{
AgeRating = AgeRating.Everyone
})
.WithVolume(new VolumeBuilder("0")
.WithChapter(new ChapterBuilder("1").WithFile(
new MangaFileBuilder($"{DataDirectory}1.zip", MangaFormat.Archive)
.WithPages(1)
.Build()
).Build())
.Build())
.Build())
.WithSeries(new SeriesBuilder("Test Series Prequels").Build())
.WithSeries(new SeriesBuilder("Test Series Sequels").Build())
.WithAppUser(new AppUserBuilder("majora2007", string.Empty).Build())
.Build();
_context.Library.Add(lib1);
var lib2 = new LibraryBuilder("Test LIb 2", LibraryType.Book)
.WithSeries(new SeriesBuilder("Test Series 2").Build())
.WithSeries(new SeriesBuilder("Test Series Prequels 2").Build())
.WithSeries(new SeriesBuilder("Test Series Prequels 2").Build())// TODO: Is this a bug
.WithAppUser(new AppUserBuilder("majora2007", string.Empty).Build())
.Build();
_context.Library.Add(lib2);
await _context.SaveChangesAsync();
var series1 = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(1,
SeriesIncludes.Related | SeriesIncludes.ExternalRatings);
// Add relations
var addRelationDto = CreateRelationsDto(series1);
addRelationDto.Adaptations.Add(4); // cross library link
await _seriesService.UpdateRelatedSeries(addRelationDto);
// Setup External Metadata stuff
series1.ExternalSeriesMetadata ??= new ExternalSeriesMetadata();
series1.ExternalSeriesMetadata.ExternalRatings = new List<ExternalRating>()
{
new ExternalRating()
{
SeriesId = 1,
Provider = ScrobbleProvider.Mal,
AverageScore = 1
}
};
series1.ExternalSeriesMetadata.ExternalRecommendations = new List<ExternalRecommendation>()
{
new ExternalRecommendation()
{
SeriesId = 2,
Name = "Series 2",
Url = "",
CoverUrl = ""
},
new ExternalRecommendation()
{
SeriesId = 0, // Causes a FK constraint
Name = "Series 2",
Url = "",
CoverUrl = ""
}
};
series1.ExternalSeriesMetadata.ExternalReviews = new List<ExternalReview>()
{
new ExternalReview()
{
Body = "",
Provider = ScrobbleProvider.Mal,
BodyJustText = ""
}
};
await _context.SaveChangesAsync();
// Ensure we can delete the series
Assert.True(await _seriesService.DeleteMultipleSeries(new[] {1, 2}));
Assert.Null(await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(1));
Assert.Null(await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(2));
}
#endregion
}