diff --git a/tests/Jellyfin.Plugin.Multilang.Tests/ProviderHttpTests.cs b/tests/Jellyfin.Plugin.Multilang.Tests/ProviderHttpTests.cs new file mode 100644 index 0000000..0e98338 --- /dev/null +++ b/tests/Jellyfin.Plugin.Multilang.Tests/ProviderHttpTests.cs @@ -0,0 +1,36 @@ +using System.Net; +using Jellyfin.Plugin.Multilang.Services.Providers; + +namespace Jellyfin.Plugin.Multilang.Tests; + +public sealed class ProviderHttpTests +{ + [Theory] + [InlineData(HttpStatusCode.TooManyRequests)] + [InlineData(HttpStatusCode.RequestTimeout)] + [InlineData(HttpStatusCode.InternalServerError)] + [InlineData(HttpStatusCode.BadGateway)] + [InlineData(HttpStatusCode.ServiceUnavailable)] + [InlineData(HttpStatusCode.GatewayTimeout)] + public void ClassifyMarksRateLimitTimeoutAndServerErrorsRetryable(HttpStatusCode statusCode) + { + Assert.Equal(ProviderFailureKind.Retryable, ProviderHttp.Classify(statusCode)); + } + + [Theory] + [InlineData(HttpStatusCode.BadRequest)] + [InlineData(HttpStatusCode.Unauthorized)] + [InlineData(HttpStatusCode.Forbidden)] + [InlineData(HttpStatusCode.NotFound)] + [InlineData(HttpStatusCode.UnprocessableEntity)] + public void ClassifyMarksClientErrorsTerminal(HttpStatusCode statusCode) + { + Assert.Equal(ProviderFailureKind.Terminal, ProviderHttp.Classify(statusCode)); + } + + [Fact] + public void ClassifyMarksSuccessTerminal() + { + Assert.Equal(ProviderFailureKind.Terminal, ProviderHttp.Classify(HttpStatusCode.OK)); + } +}