From b4ecb13581e69b34a7e450d4a9968142bf73e297 Mon Sep 17 00:00:00 2001 From: svenrog Date: Tue, 7 May 2024 14:13:45 +0200 Subject: [PATCH] Added missing support for storing enumerables. --- .../Values/EnumerableValueWriter.cs | 24 +++++++++++++++++++ .../GenericLinkInitializationModule.cs | 1 + .../SerializationTests.cs | 9 +++---- 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 src/Geta.Optimizely.GenericLinks/Converters/Values/EnumerableValueWriter.cs diff --git a/src/Geta.Optimizely.GenericLinks/Converters/Values/EnumerableValueWriter.cs b/src/Geta.Optimizely.GenericLinks/Converters/Values/EnumerableValueWriter.cs new file mode 100644 index 0000000..2eb3a9d --- /dev/null +++ b/src/Geta.Optimizely.GenericLinks/Converters/Values/EnumerableValueWriter.cs @@ -0,0 +1,24 @@ +// Copyright (c) Geta Digital. All rights reserved. +// Licensed under Apache-2.0. See the LICENSE file in the project root for more information + +using System; +using System.Text.Json; + +namespace Geta.Optimizely.GenericLinks.Converters.Values +{ + public class EnumerableValueWriter : ILinkDataValueWriter + { + public bool CanWrite(Type type) + { + if (typeof(Enum).IsAssignableFrom(type)) + return true; + + return false; + } + + public void Write(Utf8JsonWriter writer, object value) + { + writer.WriteNumberValue((int)value); + } + } +} diff --git a/src/Geta.Optimizely.GenericLinks/Initialization/GenericLinkInitializationModule.cs b/src/Geta.Optimizely.GenericLinks/Initialization/GenericLinkInitializationModule.cs index ff56ded..f93c668 100644 --- a/src/Geta.Optimizely.GenericLinks/Initialization/GenericLinkInitializationModule.cs +++ b/src/Geta.Optimizely.GenericLinks/Initialization/GenericLinkInitializationModule.cs @@ -125,5 +125,6 @@ private static void TryAddJsonValueWriters(IServiceCollection services) services.TryAddEnumerable(ServiceDescriptor.Singleton()); services.TryAddEnumerable(ServiceDescriptor.Singleton()); services.TryAddEnumerable(ServiceDescriptor.Singleton()); + services.TryAddEnumerable(ServiceDescriptor.Singleton()); } } diff --git a/tests/Geta.Optimizely.GenericLinks.Tests/SerializationTests.cs b/tests/Geta.Optimizely.GenericLinks.Tests/SerializationTests.cs index 4501983..5100918 100644 --- a/tests/Geta.Optimizely.GenericLinks.Tests/SerializationTests.cs +++ b/tests/Geta.Optimizely.GenericLinks.Tests/SerializationTests.cs @@ -49,7 +49,7 @@ public void AttributeConverters_can_Convert() subject = new JsonAttributeConverter(); Assert.True(subject.CanConvert(typeof(DialogContentOptions))); - Assert.Contains("test", subject.Convert(new DialogContentOptions { BaseClass = "test" })); + Assert.Contains("test", subject.Convert(new DialogContentOptions { BaseClass = "test" })); } [Fact] @@ -277,7 +277,7 @@ public void SystemTextLinkDataConverter_can_Write() jsonWriter.Flush(); memoryStream.Flush(); memoryStream.Seek(0, SeekOrigin.Begin); - + using var reader = new StreamReader(memoryStream, leaveOpen: true); var json = reader.ReadToEnd(); @@ -371,7 +371,7 @@ private static SystemTextLinkDataConverter CreateSystemTextLinkDataCo where TLinkData : LinkData, new() { var serviceCollection = new ServiceCollection(); - + serviceCollection.AddSingleton(); serviceCollection.AddSingleton(CreateLinkModelConverter()); serviceCollection.AddSingleton(); @@ -380,6 +380,7 @@ private static SystemTextLinkDataConverter CreateSystemTextLinkDataCo serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); var serviceProvider = serviceCollection.BuildServiceProvider(); var factory = new SystemTextLinkDataJsonConverterFactory(serviceProvider); @@ -430,5 +431,5 @@ private static IEnumerable CreateAttributeConverters yield return new JsonAttributeConverter(); } - + }