|
@@ -0,0 +1,70 @@
|
|
|
+using System.Text.Json;
|
|
|
+using System.Text.Json.Serialization;
|
|
|
+using MediaBrowser.Model.Entities;
|
|
|
+using Xunit;
|
|
|
+
|
|
|
+namespace Jellyfin.Model.Tests.Entities
|
|
|
+{
|
|
|
+ public class JsonLowerCaseConverterTests
|
|
|
+ {
|
|
|
+ private readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions()
|
|
|
+ {
|
|
|
+ Converters =
|
|
|
+ {
|
|
|
+ new JsonStringEnumConverter()
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ [Theory]
|
|
|
+ [InlineData(null, "{\"CollectionType\":null}")]
|
|
|
+ [InlineData(CollectionTypeOptions.Movies, "{\"CollectionType\":\"movies\"}")]
|
|
|
+ [InlineData(CollectionTypeOptions.MusicVideos, "{\"CollectionType\":\"musicvideos\"}")]
|
|
|
+ public void Serialize_CollectionTypeOptions_Correct(CollectionTypeOptions? collectionType, string expected)
|
|
|
+ {
|
|
|
+ Assert.Equal(expected, JsonSerializer.Serialize(new TestContainer(collectionType), _jsonOptions));
|
|
|
+ }
|
|
|
+
|
|
|
+ [Theory]
|
|
|
+ [InlineData("{\"CollectionType\":null}", null)]
|
|
|
+ [InlineData("{\"CollectionType\":\"movies\"}", CollectionTypeOptions.Movies)]
|
|
|
+ [InlineData("{\"CollectionType\":\"musicvideos\"}", CollectionTypeOptions.MusicVideos)]
|
|
|
+ public void Deserialize_CollectionTypeOptions_Correct(string json, CollectionTypeOptions? result)
|
|
|
+ {
|
|
|
+ var res = JsonSerializer.Deserialize<TestContainer>(json, _jsonOptions);
|
|
|
+ Assert.NotNull(res);
|
|
|
+ Assert.Equal(result, res!.CollectionType);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Theory]
|
|
|
+ [InlineData(null)]
|
|
|
+ [InlineData(CollectionTypeOptions.Movies)]
|
|
|
+ [InlineData(CollectionTypeOptions.MusicVideos)]
|
|
|
+ public void RoundTrip_CollectionTypeOptions_Correct(CollectionTypeOptions? value)
|
|
|
+ {
|
|
|
+ var res = JsonSerializer.Deserialize<TestContainer>(JsonSerializer.Serialize(new TestContainer(value), _jsonOptions), _jsonOptions);
|
|
|
+ Assert.NotNull(res);
|
|
|
+ Assert.Equal(value, res!.CollectionType);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Theory]
|
|
|
+ [InlineData("{\"CollectionType\":null}")]
|
|
|
+ [InlineData("{\"CollectionType\":\"movies\"}")]
|
|
|
+ [InlineData("{\"CollectionType\":\"musicvideos\"}")]
|
|
|
+ public void RoundTrip_String_Correct(string json)
|
|
|
+ {
|
|
|
+ var res = JsonSerializer.Serialize(JsonSerializer.Deserialize<TestContainer>(json, _jsonOptions), _jsonOptions);
|
|
|
+ Assert.Equal(json, res);
|
|
|
+ }
|
|
|
+
|
|
|
+ private class TestContainer
|
|
|
+ {
|
|
|
+ public TestContainer(CollectionTypeOptions? collectionType)
|
|
|
+ {
|
|
|
+ CollectionType = collectionType;
|
|
|
+ }
|
|
|
+
|
|
|
+ [JsonConverter(typeof(JsonLowerCaseConverter<CollectionTypeOptions?>))]
|
|
|
+ public CollectionTypeOptions? CollectionType { get; set; }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|