@@ -144,7 +144,7 @@ private with sharing class fflib_SObjectSelectorTest
144144 return ; // Abort the test if unable to create a user with low enough acess
145145 System .runAs (testUser )
146146 {
147- Testfflib_SObjectSelector selector = new Testfflib_SObjectSelector (false , false , false );
147+ Testfflib_SObjectSelector selector = new Testfflib_SObjectSelector (false , false , false , true );
148148 try
149149 {
150150 List <Account > result = (List <Account >) selector .selectSObjectsById (idSet );
@@ -205,16 +205,50 @@ private with sharing class fflib_SObjectSelectorTest
205205 }
206206 }
207207
208+
209+ @isTest
210+ static void testWithoutSorting ()
211+ {
212+ // Given
213+ Testfflib_SObjectSelector selector = new Testfflib_SObjectSelector (false , false , false , false );
214+ fflib_QueryFactory qf = selector .newQueryFactory ();
215+
216+ Set <String > expectedSelectFields = new Set <String >{ ' Name' , ' Id' , ' AccountNumber' , ' AnnualRevenue' };
217+ if (UserInfo .isMultiCurrencyOrganization ())
218+ {
219+ expectedSelectFields .add (' CurrencyIsoCode' );
220+ }
221+
222+ // When
223+ String soql = qf .toSOQL ();
224+
225+ // Then
226+ Pattern soqlPattern = Pattern .compile (' SELECT (.*) FROM Account ORDER BY Name DESC NULLS FIRST , AnnualRevenue ASC NULLS FIRST ' );
227+ Matcher soqlMatcher = soqlPattern .matcher (soql );
228+ soqlMatcher .matches ();
229+
230+ List <String > actualSelectFields = soqlMatcher .group (1 ).deleteWhiteSpace ().split (' ,' );
231+ System .assertEquals (expectedSelectFields , new Set <String >(actualSelectFields ));
232+ }
233+
234+ private static void assertEqualsSelectFields (String expectedSelectFields , String actualSelectFields )
235+ {
236+ Set <String > expected = new Set <String >(expectedSelectFields .deleteWhiteSpace ().split (' ,' ));
237+ Set <String > actual = new Set <String >(actualSelectFields .deleteWhiteSpace ().split (' ,' ));
238+
239+ System .assertEquals (expected , actual );
240+ }
241+
208242 private class Testfflib_SObjectSelector extends fflib_SObjectSelector
209243 {
210244 public Testfflib_SObjectSelector ()
211245 {
212246 super ();
213247 }
214248
215- public Testfflib_SObjectSelector (Boolean includeFieldSetFields , Boolean enforceCRUD , Boolean enforceFLS )
249+ public Testfflib_SObjectSelector (Boolean includeFieldSetFields , Boolean enforceCRUD , Boolean enforceFLS , Boolean sortSelectFields )
216250 {
217- super (includeFieldSetFields , enforceCRUD , enforceFLS );
251+ super (includeFieldSetFields , enforceCRUD , enforceFLS , sortSelectFields );
218252 }
219253
220254 public List <Schema .SObjectField > getSObjectFieldList ()
0 commit comments