瀏覽代碼

Add whitespace handling and tests

crobibero 4 年之前
父節點
當前提交
b2662894cf

+ 1 - 1
MediaBrowser.Common/Json/Converters/JsonCommaDelimitedArrayConverter.cs

@@ -35,7 +35,7 @@ namespace MediaBrowser.Common.Json.Converters
                 var entries = new T[stringEntries.Length];
                 var entries = new T[stringEntries.Length];
                 for (var i = 0; i < stringEntries.Length; i++)
                 for (var i = 0; i < stringEntries.Length; i++)
                 {
                 {
-                    entries[i] = (T)_typeConverter.ConvertFrom(stringEntries[i]);
+                    entries[i] = (T)_typeConverter.ConvertFrom(stringEntries[i].Trim());
                 }
                 }
 
 
                 return entries;
                 return entries;

+ 27 - 0
tests/Jellyfin.Common.Tests/Json/JsonCommaDelimitedArrayTests.cs

@@ -21,6 +21,19 @@ namespace Jellyfin.Common.Tests.Json
             Assert.Equal(desiredValue.Value, value?.Value);
             Assert.Equal(desiredValue.Value, value?.Value);
         }
         }
 
 
+        [Fact]
+        public static void Deserialize_String_Space_Valid_Success()
+        {
+            var desiredValue = new GenericBodyModel<string>
+            {
+                Value = new[] { "a", "b", "c" }
+            };
+
+            var options = new JsonSerializerOptions();
+            var value = JsonSerializer.Deserialize<GenericBodyModel<string>>(@"{ ""Value"": ""a, b, c"" }", options);
+            Assert.Equal(desiredValue.Value, value?.Value);
+        }
+
         [Fact]
         [Fact]
         public static void Deserialize_GenericCommandType_Valid_Success()
         public static void Deserialize_GenericCommandType_Valid_Success()
         {
         {
@@ -35,6 +48,20 @@ namespace Jellyfin.Common.Tests.Json
             Assert.Equal(desiredValue.Value, value?.Value);
             Assert.Equal(desiredValue.Value, value?.Value);
         }
         }
 
 
+        [Fact]
+        public static void Deserialize_GenericCommandType_Space_Valid_Success()
+        {
+            var desiredValue = new GenericBodyModel<GeneralCommandType>
+            {
+                Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
+            };
+
+            var options = new JsonSerializerOptions();
+            options.Converters.Add(new JsonStringEnumConverter());
+            var value = JsonSerializer.Deserialize<GenericBodyModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp, MoveDown"" }", options);
+            Assert.Equal(desiredValue.Value, value?.Value);
+        }
+
         [Fact]
         [Fact]
         public static void Deserialize_String_Array_Valid_Success()
         public static void Deserialize_String_Array_Valid_Success()
         {
         {