Skip to content

Commit b1a8c73

Browse files
author
Chris Santero
committed
add test for sorting by resource with int key
1 parent 2c22cd9 commit b1a8c73

1 file changed

Lines changed: 44 additions & 14 deletions

File tree

JSONAPI.Tests/ActionFilters/DefaultSortingTransformerTests.cs

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,17 @@ private class Dummy
2626
public DateTime BirthDate { get; set; }
2727
}
2828

29+
private class Dummy2
30+
{
31+
public int Id { get; set; }
32+
33+
public string Name { get; set; }
34+
}
35+
2936
private IList<Dummy> _fixtures;
3037
private IQueryable<Dummy> _fixturesQuery;
38+
private IList<Dummy2> _fixtures2;
39+
private IQueryable<Dummy2> _fixtures2Query;
3140

3241
[TestInitialize]
3342
public void SetupFixtures()
@@ -45,25 +54,39 @@ public void SetupFixtures()
4554
new Dummy {Id = "9", FirstName = "William", LastName = "Harrison", BirthDate = new DateTime(1773, 2, 9)}
4655
};
4756
_fixturesQuery = _fixtures.AsQueryable();
57+
58+
_fixtures2 = new List<Dummy2>
59+
{
60+
new Dummy2 {Id = 45, Name = "France"},
61+
new Dummy2 {Id = 52, Name = "Spain"},
62+
new Dummy2 {Id = 33, Name = "Mongolia"},
63+
};
64+
_fixtures2Query = _fixtures2.AsQueryable();
4865
}
4966

5067
private DefaultSortingTransformer GetTransformer()
5168
{
52-
var pluralizationService = new PluralizationService(new Dictionary<string, string>
53-
{
54-
{"Dummy", "Dummies"}
55-
});
56-
var registrar = new ResourceTypeRegistrar(new DefaultNamingConventions(pluralizationService));
57-
var registration = registrar.BuildRegistration(typeof (Dummy));
69+
var registrar = new ResourceTypeRegistrar(new DefaultNamingConventions(new PluralizationService()));
5870
var registry = new ResourceTypeRegistry();
59-
registry.AddRegistration(registration);
71+
registry.AddRegistration(registrar.BuildRegistration(typeof(Dummy), "dummies"));
72+
registry.AddRegistration(registrar.BuildRegistration(typeof(Dummy2), "dummy2s"));
6073
return new DefaultSortingTransformer(registry);
6174
}
6275

63-
private Dummy[] GetArray(string uri)
76+
private TFixture[] GetArray<TFixture>(string uri, IQueryable<TFixture> fixturesQuery)
6477
{
6578
var request = new HttpRequestMessage(HttpMethod.Get, uri);
66-
return GetTransformer().Sort(_fixturesQuery, request).ToArray();
79+
return GetTransformer().Sort(fixturesQuery, request).ToArray();
80+
}
81+
82+
private Dummy[] GetDummyArray(string uri)
83+
{
84+
return GetArray<Dummy>(uri, _fixturesQuery);
85+
}
86+
87+
private Dummy2[] GetDummy2Array(string uri)
88+
{
89+
return GetArray<Dummy2>(uri, _fixtures2Query);
6790
}
6891

6992
private void RunTransformAndExpectFailure(string uri, string expectedMessage)
@@ -81,28 +104,28 @@ private void RunTransformAndExpectFailure(string uri, string expectedMessage)
81104
[TestMethod]
82105
public void Sorts_by_attribute_ascending()
83106
{
84-
var array = GetArray("http://api.example.com/dummies?sort=first-name");
107+
var array = GetDummyArray("http://api.example.com/dummies?sort=first-name");
85108
array.Should().BeInAscendingOrder(d => d.FirstName);
86109
}
87110

88111
[TestMethod]
89112
public void Sorts_by_attribute_descending()
90113
{
91-
var array = GetArray("http://api.example.com/dummies?sort=-first-name");
114+
var array = GetDummyArray("http://api.example.com/dummies?sort=-first-name");
92115
array.Should().BeInDescendingOrder(d => d.FirstName);
93116
}
94117

95118
[TestMethod]
96119
public void Sorts_by_two_ascending_attributes()
97120
{
98-
var array = GetArray("http://api.example.com/dummies?sort=last-name,first-name");
121+
var array = GetDummyArray("http://api.example.com/dummies?sort=last-name,first-name");
99122
array.Should().ContainInOrder(_fixtures.OrderBy(d => d.LastName + d.FirstName));
100123
}
101124

102125
[TestMethod]
103126
public void Sorts_by_two_descending_attributes()
104127
{
105-
var array = GetArray("http://api.example.com/dummies?sort=-last-name,-first-name");
128+
var array = GetDummyArray("http://api.example.com/dummies?sort=-last-name,-first-name");
106129
array.Should().ContainInOrder(_fixtures.OrderByDescending(d => d.LastName + d.FirstName));
107130
}
108131

@@ -147,8 +170,15 @@ public void Returns_400_if_the_same_property_is_specified_more_than_once()
147170
[TestMethod]
148171
public void Can_sort_by_DateTimeOffset()
149172
{
150-
var array = GetArray("http://api.example.com/dummies?sort=birth-date");
173+
var array = GetDummyArray("http://api.example.com/dummies?sort=birth-date");
151174
array.Should().BeInAscendingOrder(d => d.BirthDate);
152175
}
176+
177+
[TestMethod]
178+
public void Can_sort_by_resource_with_integer_key()
179+
{
180+
var array = GetDummy2Array("http://api.example.com/dummy2s?sort=name");
181+
array.Should().BeInAscendingOrder(d => d.Name);
182+
}
153183
}
154184
}

0 commit comments

Comments
 (0)