Get naming correctly in unit tests, add some notes

Adjust numbers in unit tests to make sure they're values that can be passed to IsSeriesCompleted (TotalCount = External count unless comicinfo has more)
This commit is contained in:
Amelia 2025-06-25 15:58:38 +02:00
parent 7c910ce090
commit 64ca497bb6
3 changed files with 19 additions and 11 deletions

View file

@ -903,7 +903,7 @@ public class ExternalMetadataServiceTests : AbstractDbTest
} }
[Fact] [Fact]
public void IsSeriesCompleted_Volumes_IncludeSpecialsCheck() public void IsSeriesCompleted_Volumes_DecimalVolumes()
{ {
const string seriesName = "Test - Volume Complete"; const string seriesName = "Test - Volume Complete";
var series = new SeriesBuilder(seriesName) var series = new SeriesBuilder(seriesName)
@ -918,7 +918,7 @@ public class ExternalMetadataServiceTests : AbstractDbTest
.Build(); .Build();
var chapters = new List<Chapter>(); var chapters = new List<Chapter>();
// External metadata includes special (2.5) // External metadata includes decimal volume 2.5
var externalMetadata = new ExternalSeriesDetailDto { Chapters = 0, Volumes = 3 }; var externalMetadata = new ExternalSeriesDetailDto { Chapters = 0, Volumes = 3 };
var result = ExternalMetadataService.IsSeriesCompleted(series, chapters, externalMetadata, 2); var result = ExternalMetadataService.IsSeriesCompleted(series, chapters, externalMetadata, 2);
@ -958,8 +958,13 @@ public class ExternalMetadataServiceTests : AbstractDbTest
Assert.Equal(3, series.Metadata.TotalCount); Assert.Equal(3, series.Metadata.TotalCount);
} }
/// <remarks>
/// This unit test also illustrates the bug where you may get a false positive if you had Volumes 1,2, and 2.1. While
/// missing volume 3. With the external metadata expecting non-decimal volumes.
/// i.e. it would fail if we only had one decimal volume
/// </remarks>
[Fact] [Fact]
public void IsSeriesCompleted_Volumes_TooManySpecials() public void IsSeriesCompleted_Volumes_TooManyDecimalVolumes()
{ {
const string seriesName = "Test - Volume Complete"; const string seriesName = "Test - Volume Complete";
var series = new SeriesBuilder(seriesName) var series = new SeriesBuilder(seriesName)
@ -975,7 +980,7 @@ public class ExternalMetadataServiceTests : AbstractDbTest
.Build(); .Build();
var chapters = new List<Chapter>(); var chapters = new List<Chapter>();
// External metadata includes no special. There are 3 volumes. And we're missing volume 3 // External metadata includes no special or decimals. There are 3 volumes. And we're missing volume 3
var externalMetadata = new ExternalSeriesDetailDto { Chapters = 0, Volumes = 3 }; var externalMetadata = new ExternalSeriesDetailDto { Chapters = 0, Volumes = 3 };
var result = ExternalMetadataService.IsSeriesCompleted(series, chapters, externalMetadata, 2); var result = ExternalMetadataService.IsSeriesCompleted(series, chapters, externalMetadata, 2);
@ -986,12 +991,13 @@ public class ExternalMetadataServiceTests : AbstractDbTest
[Fact] [Fact]
public void IsSeriesCompleted_NoVolumes_GEQChapterCheck() public void IsSeriesCompleted_NoVolumes_GEQChapterCheck()
{ {
// We own 11 chapters, the external metadata expects 10
const string seriesName = "Test - Chapter MaxCount, no volumes"; const string seriesName = "Test - Chapter MaxCount, no volumes";
var series = new SeriesBuilder(seriesName) var series = new SeriesBuilder(seriesName)
.WithLibraryId(1) .WithLibraryId(1)
.WithMetadata(new SeriesMetadataBuilder() .WithMetadata(new SeriesMetadataBuilder()
.WithMaxCount(10) .WithMaxCount(11)
.WithTotalCount(8) .WithTotalCount(10)
.Build()) .Build())
.Build(); .Build();
@ -1001,8 +1007,8 @@ public class ExternalMetadataServiceTests : AbstractDbTest
var result = ExternalMetadataService.IsSeriesCompleted(series, chapters, externalMetadata, Parser.DefaultChapterNumber); var result = ExternalMetadataService.IsSeriesCompleted(series, chapters, externalMetadata, Parser.DefaultChapterNumber);
Assert.True(result); Assert.True(result);
Assert.Equal(10, series.Metadata.TotalCount); Assert.Equal(11, series.Metadata.TotalCount);
Assert.Equal(10, series.Metadata.MaxCount); Assert.Equal(11, series.Metadata.MaxCount);
} }
[Fact] [Fact]
@ -1012,8 +1018,8 @@ public class ExternalMetadataServiceTests : AbstractDbTest
var series = new SeriesBuilder(seriesName) var series = new SeriesBuilder(seriesName)
.WithLibraryId(1) .WithLibraryId(1)
.WithMetadata(new SeriesMetadataBuilder() .WithMetadata(new SeriesMetadataBuilder()
.WithMaxCount(8) .WithMaxCount(7)
.WithTotalCount(5) .WithTotalCount(10)
.Build()) .Build())
.Build(); .Build();

View file

@ -29,7 +29,9 @@ public sealed record ExternalSeriesDetailDto
public DateTime? StartDate { get; set; } public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; } public DateTime? EndDate { get; set; }
public int AverageScore { get; set; } public int AverageScore { get; set; }
/// <remarks>AniList returns the total count of unique chapters, includes 1.1 for example</remarks>
public int Chapters { get; set; } public int Chapters { get; set; }
/// <remarks>AniList returns the total count of unique volumes, includes 1.1 for example</remarks>
public int Volumes { get; set; } public int Volumes { get; set; }
public IList<SeriesRelationship>? Relations { get; set; } = []; public IList<SeriesRelationship>? Relations { get; set; } = [];
public IList<SeriesCharacter>? Characters { get; set; } = []; public IList<SeriesCharacter>? Characters { get; set; } = [];

View file

@ -1646,7 +1646,7 @@ public class ExternalMetadataService : IExternalMetadataService
return true; return true;
} }
// If volumes are collected, check if we reach the required volumes by including specials // If volumes are collected, check if we reach the required volumes by including specials, and decimal volumes
// //
// TODO BUG: If the series has specials, that are not included in the external count. But you do own them // TODO BUG: If the series has specials, that are not included in the external count. But you do own them
// This may mark the series as completed pre-maturely // This may mark the series as completed pre-maturely