fix in the order of sortings when grouping is activated.

This commit is contained in:
David Lebee 2019-04-22 20:18:38 -05:00
parent 39be955fcc
commit 99e623c93f
4 changed files with 68 additions and 4 deletions

View File

@ -52,6 +52,62 @@ namespace PoweredSoft.DynamicQuery.Test
});
}
[Fact]
public void A()
{
/*
MockContextFactory.SeedAndTestContextFor("GroupTests_A", TestSeeders.SeedTicketScenario, ctx =>
{
var a = ctx.Tickets
.OrderBy(t => t.Owner)
.ThenBy(t => t.Priority)
.Skip(0)
.Take(100)
.GroupBy(t => new
{
t.Owner,
t.Priority
})
.Select(t => new
{
t.Key.Owner,
t.Key.Priority,
Records = t.ToList()
})
.ToList();
int breakHere = 0;
});*/
MockContextFactory.SeedAndTestContextFor("GroupTests_A2", TestSeeders.SeedTicketScenario, ctx =>
{
var criteria = new QueryCriteria()
{
Groups = new List<IGroup>()
{
new Group { Path = "Owner" },
new Group { Path = "Priority" }
},
Page = 1,
PageSize = 100
};
var queryHandler = new QueryHandler();
var result = queryHandler.Execute(ctx.Tickets, criteria);
var groupedResult = result.GroupedResult();
var firstGroup = groupedResult.Groups.FirstOrDefault();
Assert.NotNull(firstGroup);
var secondGroup = groupedResult.Groups.Skip(1).FirstOrDefault();
Assert.NotNull(secondGroup);
var expected = ctx.Tickets.Select(t => t.TicketType).Distinct().Count();
var c = groupedResult.Groups.Select(t => t.GroupValue).Count();
Assert.Equal(expected, c);
});
}
[Fact]
public void GroupComplex()
{

View File

@ -97,6 +97,14 @@ namespace PoweredSoft.DynamicQuery.Test.Mock
{
MockContextFactory.TestContextFor(testName, ctx =>
{
var owners = new List<string>();
for(var i = 0; i < 20; i++)
{
var f = new Bogus.Faker("en");
owners.Add(f.Person.FullName);
}
var faker = new Bogus.Faker<Ticket>()
.RuleFor(t => t.TicketType, (f, u) => f.PickRandom("new", "open", "refused", "closed"))
.RuleFor(t => t.Title, (f, u) => f.Lorem.Sentence())
@ -104,8 +112,8 @@ namespace PoweredSoft.DynamicQuery.Test.Mock
.RuleFor(t => t.IsHtml, (f, u) => false)
.RuleFor(t => t.TagList, (f, u) => string.Join(",", f.Commerce.Categories(3)))
.RuleFor(t => t.CreatedDate, (f, u) => f.Date.Recent(100))
.RuleFor(t => t.Owner, (f, u) => f.Person.FullName)
.RuleFor(t => t.AssignedTo, (f, u) => f.Person.FullName)
.RuleFor(t => t.Owner, (f, u) => f.PickRandom(owners))
.RuleFor(t => t.AssignedTo, (f, u) => f.PickRandom(owners))
.RuleFor(t => t.TicketStatus, (f, u) => f.PickRandom(1, 2, 3))
.RuleFor(t => t.LastUpdateBy, (f, u) => f.Person.FullName)
.RuleFor(t => t.LastUpdateDate, (f, u) => f.Date.Soon(5))

View File

@ -37,7 +37,7 @@ namespace PoweredSoft.DynamicQuery
var aggregateResults = FetchAggregates<TSource>(finalGroups);
// sorting.
finalGroups.ForEach(fg => Criteria.Sorts.Insert(0, new Sort(fg.Path, fg.Ascending)));
finalGroups.ReversedForEach(fg => Criteria.Sorts.Insert(0, new Sort(fg.Path, fg.Ascending)));
// apply sorting and paging.
ApplySorting<TSource>();

View File

@ -44,7 +44,7 @@ namespace PoweredSoft.DynamicQuery
var aggregateResults = await FetchAggregatesAsync<TSource>(finalGroups, cancellationToken);
// sorting.
finalGroups.ForEach(fg => Criteria.Sorts.Insert(0, new Sort(fg.Path, fg.Ascending)));
finalGroups.ReversedForEach(fg => Criteria.Sorts.Insert(0, new Sort(fg.Path, fg.Ascending)));
// apply sorting and paging.
ApplySorting<TSource>();