-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathOrderByExtensionsTests.cs
102 lines (89 loc) · 3.29 KB
/
OrderByExtensionsTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using FluentAssertions;
using Our.Umbraco.GraphQL.Types;
using Xunit;
namespace Our.Umbraco.GraphQL.Tests.Types
{
public class OrderByExtensionsTests
{
[Fact]
public void OrderBy_WithSingleOrderByAsc_OrdersByAsc()
{
var collection = new[]
{
new Item { Name = "c"},
new Item { Name = "b" },
new Item { Name = "n"},
new Item { Name = "a"},
};
var result = collection.OrderBy(new[]
{
new OrderBy("Name", SortOrder.Ascending, x => ((Item) x.Source).Name)
});
result.Should().BeInAscendingOrder(x => x.Name);
}
[Fact]
public void OrderBy_WithSingleOrderByDesc_OrdersByDesc()
{
var collection = new[]
{
new Item { Name = "c"},
new Item { Name = "b" },
new Item { Name = "n"},
new Item { Name = "a"},
};
var result = collection.OrderBy(new[]
{
new OrderBy("Name", SortOrder.Descending, x => ((Item) x.Source).Name)
});
result.Should().BeInDescendingOrder(x => x.Name);
}
[Fact]
public void OrderBy_WithMultipleOrderByAscending_OrdersByFirstThenNext()
{
var collection = new[]
{
new Item { Id = new Id("1"), Name = "c", Stock = 1 },
new Item { Id = new Id("2"), Name = "b", Stock = 2 },
new Item { Id = new Id("3"), Name = "n", Stock = 1 },
new Item { Id = new Id("4"), Name = "a", Stock = 4 },
};
var result = collection.OrderBy(new[]
{
new OrderBy("Stock", SortOrder.Ascending, x => ((Item) x.Source).Stock),
new OrderBy("Name", SortOrder.Ascending, x => ((Item) x.Source).Name),
});
result.Should().SatisfyRespectively(
x => x.Name.Should().Be("c"),
x => x.Name.Should().Be("n"),
x => x.Name.Should().Be("b"),
x => x.Name.Should().Be("a"));
}
[Fact]
public void OrderBy_WithMultipleOrderByAscendingThenDescending_OrdersByFirstThenNext()
{
var collection = new[]
{
new Item { Id = new Id("1"), Name = "c", Stock = 1 },
new Item { Id = new Id("2"), Name = "b", Stock = 2 },
new Item { Id = new Id("3"), Name = "n", Stock = 1 },
new Item { Id = new Id("4"), Name = "a", Stock = 4 },
};
var result = collection.OrderBy(new[]
{
new OrderBy("Stock", SortOrder.Ascending, x => ((Item) x.Source).Stock),
new OrderBy("Name", SortOrder.Descending, x => ((Item) x.Source).Name),
});
result.Should().SatisfyRespectively(
x => x.Name.Should().Be("n"),
x => x.Name.Should().Be("c"),
x => x.Name.Should().Be("b"),
x => x.Name.Should().Be("a"));
}
private class Item
{
public Id Id { get; set; }
public string Name { get; set; }
public int Stock { get; set; }
}
}
}