Jelajahi Sumber

Support age in LocalizationManager.GetRatingLevel (#11367)

Niels van Velzen 1 tahun lalu
induk
melakukan
82e5f99f83

+ 7 - 0
Emby.Server.Implementations/Localization/LocalizationManager.cs

@@ -278,6 +278,13 @@ namespace Emby.Server.Implementations.Localization
                 return null;
             }
 
+            // Convert integers directly
+            // This may override some of the locale specific age ratings (but those always map to the same age)
+            if (int.TryParse(rating, out var ratingAge))
+            {
+                return ratingAge;
+            }
+
             // Fairly common for some users to have "Rated R" in their rating field
             rating = rating.Replace("Rated :", string.Empty, StringComparison.OrdinalIgnoreCase);
             rating = rating.Replace("Rated ", string.Empty, StringComparison.OrdinalIgnoreCase);

+ 16 - 0
tests/Jellyfin.Server.Implementations.Tests/Localization/LocalizationManagerTests.cs

@@ -127,6 +127,22 @@ namespace Jellyfin.Server.Implementations.Tests.Localization
             Assert.Equal(expectedLevel, level!);
         }
 
+        [Theory]
+        [InlineData("0", 0)]
+        [InlineData("1", 1)]
+        [InlineData("6", 6)]
+        [InlineData("12", 12)]
+        [InlineData("42", 42)]
+        [InlineData("9999", 9999)]
+        public async Task GetRatingLevel_GivenValidAge_Success(string value, int expectedLevel)
+        {
+            var localizationManager = Setup(new ServerConfiguration { MetadataCountryCode = "nl" });
+            await localizationManager.LoadAll();
+            var level = localizationManager.GetRatingLevel(value);
+            Assert.NotNull(level);
+            Assert.Equal(expectedLevel, level);
+        }
+
         [Fact]
         public async Task GetRatingLevel_GivenUnratedString_Success()
         {