From 3a11db6dd7f2d12748f602a82dd1ff5b704acf23 Mon Sep 17 00:00:00 2001 From: David Lebee Date: Mon, 22 Apr 2019 22:07:56 -0500 Subject: [PATCH] fixing issue with composite filter serialization --- .../Json/DynamicQueryJsonConverter.cs | 3 +- .../DeserializeTests.cs | 34 +++++++++++++++++++ .../PoweredSoft.DynamicQuery.Test.csproj | 1 + 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 PoweredSoft.DynamicQuery.Test/DeserializeTests.cs diff --git a/PoweredSoft.DynamicQuery.AspNetCore/Json/DynamicQueryJsonConverter.cs b/PoweredSoft.DynamicQuery.AspNetCore/Json/DynamicQueryJsonConverter.cs index b549e55..0ddff86 100644 --- a/PoweredSoft.DynamicQuery.AspNetCore/Json/DynamicQueryJsonConverter.cs +++ b/PoweredSoft.DynamicQuery.AspNetCore/Json/DynamicQueryJsonConverter.cs @@ -60,7 +60,8 @@ namespace PoweredSoft.DynamicQuery.AspNetCore.Json } var filterObj = ServiceProvider.GetService(isComposite ? typeof(ICompositeFilter) : typeof(ISimpleFilter)); - filterObj = jo.ToObject(filterObj.GetType()); + var filterType = filterObj.GetType(); + filterObj = jo.ToObject(filterType, serializer); return filterObj; } diff --git a/PoweredSoft.DynamicQuery.Test/DeserializeTests.cs b/PoweredSoft.DynamicQuery.Test/DeserializeTests.cs new file mode 100644 index 0000000..2010116 --- /dev/null +++ b/PoweredSoft.DynamicQuery.Test/DeserializeTests.cs @@ -0,0 +1,34 @@ +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using PoweredSoft.DynamicQuery.AspNetCore.Json; +using PoweredSoft.DynamicQuery.Core; +using System; +using System.Collections.Generic; +using System.Text; +using Xunit; + +namespace PoweredSoft.DynamicQuery.Test +{ + public class SerializationTests + { + [Fact] + public void QueryCriteria() + { + var json = @"{""page"":1,""pageSize"":20,""filters"":[{""type"":""composite"",""filters"":[{""path"":""title"",""value"":""Qui"",""type"":""StartsWith"",""and"":false}]}]}"; + + var serviceCollection = new ServiceCollection(); + serviceCollection.AddPoweredSoftDynamicQuery(); + var serviceProvider = serviceCollection.BuildServiceProvider(); + + var settings = new JsonSerializerSettings(); + settings.Converters.Add(new StringEnumConverter()); + settings.Converters.Add(new DynamicQueryJsonConverter(serviceProvider)); + + var data = JsonConvert.DeserializeObject(json, settings); + Assert.NotNull(data); + } + + + } +} diff --git a/PoweredSoft.DynamicQuery.Test/PoweredSoft.DynamicQuery.Test.csproj b/PoweredSoft.DynamicQuery.Test/PoweredSoft.DynamicQuery.Test.csproj index cdeffaa..6aaca8a 100644 --- a/PoweredSoft.DynamicQuery.Test/PoweredSoft.DynamicQuery.Test.csproj +++ b/PoweredSoft.DynamicQuery.Test/PoweredSoft.DynamicQuery.Test.csproj @@ -17,6 +17,7 @@ +