From dfd2c781ffdbd8a74ad52a3161a7fb370a2e5ebd Mon Sep 17 00:00:00 2001 From: Aaron Smith Date: Mon, 15 Nov 2021 11:48:02 -0600 Subject: [PATCH] Make DataSourceResult generic and fix tests. --- src/DataSourceResult.cs | 9 +++++---- src/QueryableExtensions.cs | 14 +++++++------- .../Data/MockContext.cs | 12 ++++++------ test/Kendo.DynamicLinqCore.Tests/FilterTest.cs | 10 +++++----- .../Kendo.DynamicLinqCore.Tests.csproj | 2 +- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/DataSourceResult.cs b/src/DataSourceResult.cs index cdac7ae..8321aea 100644 --- a/src/DataSourceResult.cs +++ b/src/DataSourceResult.cs @@ -1,5 +1,6 @@ -using System; +using System; using System.Collections; +using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; @@ -10,17 +11,17 @@ namespace Kendo.DynamicLinqCore /// Describes the result of Kendo DataSource read operation. /// [KnownType("GetKnownTypes")] - public class DataSourceResult + public class DataSourceResult { /// /// Represents a single page of processed data. /// - public IEnumerable Data { get; set; } + public IEnumerable Data { get; set; } /// /// Represents a single page of processed grouped data. /// - public IEnumerable Groups { get; set; } + public IEnumerable Groups { get; set; } /// /// Represents a requested aggregates. diff --git a/src/QueryableExtensions.cs b/src/QueryableExtensions.cs index f927a48..f3a073e 100644 --- a/src/QueryableExtensions.cs +++ b/src/QueryableExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using System.Collections.Generic; using System.Reflection; @@ -20,7 +20,7 @@ public static class QueryableExtensions /// Specifies the current sort order. /// Specifies the current filter. /// A DataSourceResult object populated from the processed IQueryable. - public static DataSourceResult ToDataSourceResult(this IQueryable queryable, int take, int skip, IEnumerable sort, Filter filter) + public static DataSourceResult ToDataSourceResult(this IQueryable queryable, int take, int skip, IEnumerable sort, Filter filter) { return queryable.ToDataSourceResult(take, skip, sort, filter, null, null); } @@ -32,9 +32,9 @@ public static DataSourceResult ToDataSourceResult(this IQueryable queryabl /// The IQueryable which should be processed. /// The DataSourceRequest object containing take, skip, sort, filter, aggregates, and groups data. /// A DataSourceResult object populated from the processed IQueryable. - public static DataSourceResult ToDataSourceResult(this IQueryable queryable, DataSourceRequest request) + public static DataSourceResult ToDataSourceResult(this IQueryable queryable, DataSourceRequest request) { - return queryable.ToDataSourceResult(request.Take, request.Skip, request.Sort, request.Filter, request.Aggregate, request.Group); + return queryable.ToDataSourceResult(request.Take, request.Skip, request.Sort, request.Filter, request.Aggregate, request.Group); } /// @@ -49,7 +49,7 @@ public static DataSourceResult ToDataSourceResult(this IQueryable queryabl /// Specifies the current aggregates. /// Specifies the current groups. /// A DataSourceResult object populated from the processed IQueryable. - public static DataSourceResult ToDataSourceResult(this IQueryable queryable, int take, int skip, IEnumerable sort, Filter filter, IEnumerable aggregates, IEnumerable group) + public static DataSourceResult ToDataSourceResult(this IQueryable queryable, int take, int skip, IEnumerable sort, Filter filter, IEnumerable aggregates, IEnumerable group) { var errors = new List(); @@ -86,7 +86,7 @@ public static DataSourceResult ToDataSourceResult(this IQueryable queryabl queryable = Page(queryable, take, skip); } - var result = new DataSourceResult + var result = new DataSourceResult { Total = total, Aggregates = aggregate @@ -124,7 +124,7 @@ public static DataSourceResult ToDataSourceResult(this IQueryable queryabl /// Specifies the current aggregates. /// Specifies the current groups. /// A DataSourceResult object populated from the processed IQueryable. - public static Task ToDataSourceResultAsync(this IQueryable queryable, int take, int skip, IEnumerable sort, Filter filter, IEnumerable aggregates = null, IEnumerable group = null) + public static Task> ToDataSourceResultAsync(this IQueryable queryable, int take, int skip, IEnumerable sort, Filter filter, IEnumerable aggregates = null, IEnumerable group = null) { return Task.Run(() => queryable.ToDataSourceResult(take, skip, sort, filter, aggregates, group)); } diff --git a/test/Kendo.DynamicLinqCore.Tests/Data/MockContext.cs b/test/Kendo.DynamicLinqCore.Tests/Data/MockContext.cs index d3092db..a29f119 100644 --- a/test/Kendo.DynamicLinqCore.Tests/Data/MockContext.cs +++ b/test/Kendo.DynamicLinqCore.Tests/Data/MockContext.cs @@ -42,7 +42,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) Weight = 48.5, Salary = 1000, Gender = Gender.F, - Birthday = new DateTime(2000,5,5), + Birthday = new DateTime(2000,5,5,0,0,0,DateTimeKind.Utc), CompanyId = Guid.Parse("c2cbfe28-f82a-4904-8075-bf98729d434f") }, new Employee { @@ -53,7 +53,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) Salary = 2500, Weight = 69.2, Gender = Gender.M, - Birthday = new DateTime(1986,10,10), + Birthday = new DateTime(1986,10,10, 0, 0, 0, DateTimeKind.Utc), CompanyId = Guid.Parse("c2cbfe28-f82a-4904-8075-bf98729d434f") }, new Employee { @@ -63,7 +63,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) Introduce = "I'm Kirin", Weight = 73.8, Gender = Gender.M, - Birthday = new DateTime(1984,7,8), + Birthday = new DateTime(1984,7,8, 0, 0, 0, DateTimeKind.Utc), CompanyId = Guid.Parse("5dd641dd-2ba4-4dfd-9572-81325ecd8940") }, new Employee { @@ -74,7 +74,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) Salary = 1750, Weight = 82.1, Gender = Gender.M, - Birthday = new DateTime(1976,11,6), + Birthday = new DateTime(1976,11,6, 0, 0, 0, DateTimeKind.Utc), CompanyId = Guid.Parse("80a6570c-ca98-4661-adde-e4d5a8637ee5") }, new Employee { @@ -85,7 +85,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) Salary = 6600, Weight = 52.9, Gender = Gender.P, - Birthday = new DateTime(2005,3,16), + Birthday = new DateTime(2005,3,16, 0, 0, 0, DateTimeKind.Utc), CompanyId = Guid.Parse("80a6570c-ca98-4661-adde-e4d5a8637ee5") }, new Employee { @@ -96,7 +96,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) Salary = 3000, Weight = 71.6, Gender = Gender.M, - Birthday = new DateTime(2003,1,22), + Birthday = new DateTime(2003,1,22, 0, 0, 0, DateTimeKind.Utc), CompanyId = Guid.Parse("80a6570c-ca98-4661-adde-e4d5a8637ee5") } ); diff --git a/test/Kendo.DynamicLinqCore.Tests/FilterTest.cs b/test/Kendo.DynamicLinqCore.Tests/FilterTest.cs index 5f7c64c..2715ac9 100644 --- a/test/Kendo.DynamicLinqCore.Tests/FilterTest.cs +++ b/test/Kendo.DynamicLinqCore.Tests/FilterTest.cs @@ -90,11 +90,11 @@ public void InputDataSourceRequest_ManyConditions_CheckResultCount() { // source string = {\"take\":10,\"skip\":0,\"filter\":{\"logic\":\"and\",\"filters\":[{\"logic\":\"or\",\"filters\":[{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1986-10-09T16:00:00.000Z\"},{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1976-11-05T16:00:00.000Z\"}]},{\"logic\":\"and\",\"filters\":[{\"field\":\"Salary\",\"operator\":\"gte\",\"value\":1000},{\"field\":\"Salary\",\"operator\":\"lte\",\"value\":6000}]}]}} - #if NETCOREAPP3_1 - var request = JsonSerializer.Deserialize("{\"take\":10,\"skip\":0,\"filter\":{\"logic\":\"and\",\"filters\":[{\"logic\":\"or\",\"filters\":[{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1986-10-09T16:00:00.000Z\"},{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1976-11-05T16:00:00.000Z\"}]},{\"logic\":\"and\",\"filters\":[{\"field\":\"Salary\",\"operator\":\"gte\",\"value\":1000},{\"field\":\"Salary\",\"operator\":\"lte\",\"value\":6000}]}]}}", jsonSerializerOptions); - #else - var request = JsonConvert.DeserializeObject("{\"take\":10,\"skip\":0,\"filter\":{\"logic\":\"and\",\"filters\":[{\"logic\":\"or\",\"filters\":[{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1986-10-09T16:00:00.000Z\"},{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1976-11-05T16:00:00.000Z\"}]},{\"logic\":\"and\",\"filters\":[{\"field\":\"Salary\",\"operator\":\"gte\",\"value\":1000},{\"field\":\"Salary\",\"operator\":\"lte\",\"value\":6000}]}]}}"); - #endif +#if NETCOREAPP3_1 + var request = JsonSerializer.Deserialize("{\"take\":10,\"skip\":0,\"filter\":{\"logic\":\"and\",\"filters\":[{\"logic\":\"or\",\"filters\":[{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1986-10-10T00:00:00.000Z\"},{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1976-11-06T00:00:00.000Z\"}]},{\"logic\":\"and\",\"filters\":[{\"field\":\"Salary\",\"operator\":\"gte\",\"value\":1000},{\"field\":\"Salary\",\"operator\":\"lte\",\"value\":6000}]}]}}", jsonSerializerOptions); +#else + var request = JsonConvert.DeserializeObject("{\"take\":10,\"skip\":0,\"filter\":{\"logic\":\"and\",\"filters\":[{\"logic\":\"or\",\"filters\":[{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1986-10-10T00:00:00.000Z\"},{\"field\":\"Birthday\",\"operator\":\"eq\",\"value\":\"1976-11-06T00:00:00.000Z\"}]},{\"logic\":\"and\",\"filters\":[{\"field\":\"Salary\",\"operator\":\"gte\",\"value\":1000},{\"field\":\"Salary\",\"operator\":\"lte\",\"value\":6000}]}]}}"); +#endif var result = _dbContext.Employee.AsQueryable().ToDataSourceResult(request); Assert.AreEqual(2, result.Total); diff --git a/test/Kendo.DynamicLinqCore.Tests/Kendo.DynamicLinqCore.Tests.csproj b/test/Kendo.DynamicLinqCore.Tests/Kendo.DynamicLinqCore.Tests.csproj index b071bff..71dc8a0 100644 --- a/test/Kendo.DynamicLinqCore.Tests/Kendo.DynamicLinqCore.Tests.csproj +++ b/test/Kendo.DynamicLinqCore.Tests/Kendo.DynamicLinqCore.Tests.csproj @@ -8,7 +8,7 @@ - +