From d2b39c0087e3da6898367dc2b74401f314662fb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 28 Jul 2020 19:14:13 +0300 Subject: [PATCH] #4337 added initial implementation points. --- ...ureManagementApplicationContractsModule.cs | 6 +++ .../StringValueTypeJsonConverter.cs | 29 ++++++++++++ .../FeatureAppService_Tests.cs | 1 - .../StringValueJsonConverter_Tests.cs | 46 +++++++++++++++++++ 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/StringValueTypeJsonConverter.cs create mode 100644 modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/StringValueJsonConverter_Tests.cs diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationContractsModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationContractsModule.cs index 8b71e3f85b..37b49f2d8a 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationContractsModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationContractsModule.cs @@ -1,4 +1,5 @@ using Volo.Abp.Application; +using Volo.Abp.Json.Newtonsoft; using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; @@ -16,6 +17,11 @@ namespace Volo.Abp.FeatureManagement { options.FileSets.AddEmbedded(); }); + + Configure(options => + { + options.Converters.Add(); + }); } } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/StringValueTypeJsonConverter.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/StringValueTypeJsonConverter.cs new file mode 100644 index 0000000000..5c14675b5c --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/StringValueTypeJsonConverter.cs @@ -0,0 +1,29 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Validation.StringValues; + +namespace Volo.Abp.FeatureManagement +{ + public class StringValueTypeJsonConverter : JsonConverter, ITransientDependency + { + public override bool CanWrite => false; + + public override bool CanConvert(Type objectType) + { + return objectType == typeof(IStringValueType); + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + throw new NotImplementedException("This method should not be called to write (since CanWrite is false)."); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + //TODO: Deserialize! + return null; + } + } +} diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs index b86e6be013..b257f873cd 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using NSubstitute; diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/StringValueJsonConverter_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/StringValueJsonConverter_Tests.cs new file mode 100644 index 0000000000..e7017db80e --- /dev/null +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/StringValueJsonConverter_Tests.cs @@ -0,0 +1,46 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Shouldly; +using Volo.Abp.Json; +using Volo.Abp.Validation.StringValues; +using Xunit; + +namespace Volo.Abp.FeatureManagement +{ + public class StringValueJsonConverter_Tests : FeatureManagementApplicationTestBase + { + private readonly IJsonSerializer _jsonSerializer; + + public StringValueJsonConverter_Tests() + { + _jsonSerializer = GetRequiredService(); + } + + [Fact(Skip = "StringValueTypeJsonConverter is not implemented yet!")] + public void Should_Serialize_And_Deserialize() + { + var featureListDto = new FeatureListDto + { + Features = new List + { + new FeatureDto + { + ValueType = new FreeTextStringValueType + { + Validator = new BooleanValueValidator() + } + } + + //TODO: Add more to test + } + }; + + var serialized = _jsonSerializer.Serialize(featureListDto); + + var featureListDto2 = _jsonSerializer.Deserialize(serialized); + + featureListDto2.Features[0].ValueType.ShouldBeOfType(); + featureListDto2.Features[0].ValueType.Validator.ShouldBeOfType(); + } + } +}