@@ -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