Kavita/API.Tests/Entities/ComicInfoTests.cs
Joe Milazzo 8043650aa5
No more JWTs for Scripts + Polish (#4274)
Co-authored-by: Amelia <77553571+Fesaa@users.noreply.github.com>
2025-12-13 05:55:02 -08:00

118 lines
2.9 KiB
C#

using API.Data.Metadata;
using API.Entities.Enums;
using Xunit;
namespace API.Tests.Entities;
public class ComicInfoTests
{
#region ConvertAgeRatingToEnum
[Theory]
[InlineData("G", AgeRating.G)]
[InlineData("Everyone", AgeRating.Everyone)]
[InlineData("Teen", AgeRating.Teen)]
[InlineData("Adults Only 18+", AgeRating.AdultsOnly)]
[InlineData("Early Childhood", AgeRating.EarlyChildhood)]
[InlineData("Everyone 10+", AgeRating.Everyone10Plus)]
[InlineData("M", AgeRating.Mature)]
[InlineData("MA15+", AgeRating.Mature15Plus)]
[InlineData("Mature 17+", AgeRating.Mature17Plus)]
[InlineData("Rating Pending", AgeRating.RatingPending)]
[InlineData("X18+", AgeRating.X18Plus)]
[InlineData("Kids to Adults", AgeRating.KidsToAdults)]
[InlineData("NotValid", AgeRating.Unknown)]
[InlineData("PG", AgeRating.PG)]
[InlineData("R18+", AgeRating.R18Plus)]
public void ConvertAgeRatingToEnum_ShouldConvertCorrectly(string input, AgeRating expected)
{
Assert.Equal(expected, ComicInfo.ConvertAgeRatingToEnum(input));
}
[Fact]
public void ConvertAgeRatingToEnum_ShouldCompareCaseInsensitive()
{
Assert.Equal(AgeRating.RatingPending, ComicInfo.ConvertAgeRatingToEnum("rating pending"));
}
#endregion
#region CalculatedCount
[Fact]
public void CalculatedCount_ReturnsVolumeCount()
{
var ci = new ComicInfo()
{
Number = "5",
Volume = "10",
Count = 10
};
Assert.Equal(5, ci.CalculatedCount());
}
[Fact]
public void CalculatedCount_ReturnsNoCountWhenCountNotSet()
{
var ci = new ComicInfo()
{
Number = "5",
Volume = "10",
Count = 0
};
Assert.Equal(5, ci.CalculatedCount());
}
[Fact]
public void CalculatedCount_ReturnsNumberCount()
{
var ci = new ComicInfo()
{
Number = "5",
Volume = "",
Count = 10
};
Assert.Equal(5, ci.CalculatedCount());
}
[Fact]
public void CalculatedCount_ReturnsNumberCount_OnlyWholeNumber()
{
var ci = new ComicInfo()
{
Number = "5.7",
Volume = "",
Count = 10
};
Assert.Equal(5, ci.CalculatedCount());
}
#endregion
#region ASIN/ISBN/GTIN
[Theory]
[InlineData("0-306-40615-2")] // ISBN-10
[InlineData("978-0-306-40615-7")] // ISBN-13
[InlineData("99921-58-10-7")]
[InlineData("85-359-0277-5")]
public void IsValid(string code)
{
// Note: ASIN's starting with "B0" are not able to be converted to ISBN
Assert.Equal(code, ComicInfo.ParseGtin(code));
}
[Theory]
[InlineData("001234567890")]
[InlineData("9504000059437 ")]
public void IsInvalid(string code)
{
Assert.Equal(string.Empty, ComicInfo.ParseGtin(code));
}
#endregion
}