Browse Source

Fix migration with special Rating (#11541)

Cody Robibero 1 year ago
parent
commit
efba619acb

+ 11 - 3
Emby.Server.Implementations/Localization/LocalizationManager.cs

@@ -321,7 +321,11 @@ namespace Emby.Server.Implementations.Localization
             // Try splitting by : to handle "Germany: FSK-18"
             if (rating.Contains(':', StringComparison.OrdinalIgnoreCase))
             {
-                return GetRatingLevel(rating.AsSpan().RightPart(':').ToString());
+                var ratingLevelRightPart = rating.AsSpan().RightPart(':');
+                if (ratingLevelRightPart.Length != 0)
+                {
+                    return GetRatingLevel(ratingLevelRightPart.ToString());
+                }
             }
 
             // Handle prefix country code to handle "DE-18"
@@ -332,8 +336,12 @@ namespace Emby.Server.Implementations.Localization
                 // Extract culture from country prefix
                 var culture = FindLanguageInfo(ratingSpan.LeftPart('-').ToString());
 
-                // Check rating system of culture
-                return GetRatingLevel(ratingSpan.RightPart('-').ToString(), culture?.TwoLetterISOLanguageName);
+                var ratingLevelRightPart = ratingSpan.RightPart('-');
+                if (ratingLevelRightPart.Length != 0)
+                {
+                    // Check rating system of culture
+                    return GetRatingLevel(ratingLevelRightPart.ToString(), culture?.TwoLetterISOLanguageName);
+                }
             }
 
             return null;

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

@@ -1,5 +1,6 @@
 using System;
 using System.Linq;
+using System.Runtime.InteropServices;
 using System.Threading.Tasks;
 using Emby.Server.Implementations.Localization;
 using MediaBrowser.Controller.Configuration;
@@ -157,6 +158,20 @@ namespace Jellyfin.Server.Implementations.Tests.Localization
             Assert.Null(localizationManager.GetRatingLevel("n/a"));
         }
 
+        [Theory]
+        [InlineData("-NO RATING SHOWN-")]
+        [InlineData(":NO RATING SHOWN:")]
+        public async Task GetRatingLevel_Split_Success(string value)
+        {
+            var localizationManager = Setup(new ServerConfiguration()
+            {
+                UICulture = "en-US"
+            });
+            await localizationManager.LoadAll();
+
+            Assert.Null(localizationManager.GetRatingLevel(value));
+        }
+
         [Theory]
         [InlineData("Default", "Default")]
         [InlineData("HeaderLiveTV", "Live TV")]