2424 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2525**/
2626
27- @isTest
27+ @isTest( isParallel = true )
2828private class fflib_QueryFactoryTest {
2929
3030 @isTest
@@ -284,81 +284,37 @@ private class fflib_QueryFactoryTest {
284284
285285 @isTest
286286 static void addChildQueriesWithChildRelationship_success (){
287- Account acct = new Account ();
288- acct .Name = ' testchildqueriesacct' ;
289- insert acct ;
290- Contact cont = new Contact ();
291- cont .FirstName = ' test' ;
292- cont .LastName = ' test' ;
293- cont .AccountId = acct .Id ;
294- insert cont ;
295- Task tsk = new Task ();
296- tsk .WhoId = cont .Id ;
297- tsk .Subject = ' test' ;
298- tsk .ActivityDate = System .today ();
299- insert tsk ;
300-
301287 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
302- qf .selectField (' name' ).selectField (' Id' ).setCondition ( ' name like \' % test% \' ' ).addOrdering (' CreatedDate' ,fflib_QueryFactory .SortOrder .DESCENDING , true );
288+ qf .selectField (' name' ).selectField (' Id' ).setCondition (' name= \' test\' ' ).addOrdering (' CreatedDate' , fflib_QueryFactory .SortOrder .DESCENDING , true );
303289 Schema .DescribeSObjectResult descResult = Contact .SObjectType .getDescribe ();
304290 // explicitly assert object accessibility when creating the subselect
305291 qf .subselectQuery (' Tasks' , true ).selectField (' Id' ).selectField (' Subject' ).setCondition (' IsDeleted = false ' );
306292 List <fflib_QueryFactory > queries = qf .getSubselectQueries ();
307293 System .assert (queries != null );
308- List < Contact > contacts = Database . query ( qf . toSOQL ());
309- System . assert ( contacts != null && contacts . size () == 1 );
310- System . assert ( contacts [ 0 ]. Tasks . size () == 1 );
311- System . assert ( contacts [ 0 ]. Tasks [ 0 ]. Subject == ' test ' );
294+ System . assert (
295+ Pattern . matches ( ' SELECT.*(SELECT.*FROM Tasks WHERE.*).*FROM Contact WHERE.* ' , qf . toSOQL ()),
296+ ' Incorrect returned query '
297+ );
312298 }
313299
314300 @isTest
315301 static void addChildQueriesWithChildRelationshipNoAccessibleCheck_success (){
316- Account acct = new Account ();
317- acct .Name = ' testchildqueriesacct' ;
318- insert acct ;
319- Contact cont = new Contact ();
320- cont .FirstName = ' test' ;
321- cont .LastName = ' test' ;
322- cont .AccountId = acct .Id ;
323- insert cont ;
324- Task tsk = new Task ();
325- tsk .WhoId = cont .Id ;
326- tsk .Subject = ' test' ;
327- tsk .ActivityDate = System .today ();
328- insert tsk ;
329-
330302 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
331- qf .selectField (' name' ).selectField (' Id' ).setCondition ( ' name like \' % test% \' ' ).addOrdering (' CreatedDate' ,fflib_QueryFactory .SortOrder .DESCENDING , true );
303+ qf .selectField (' name' ).selectField (' Id' ).setCondition (' name= \' test\' ' ).addOrdering (' CreatedDate' , fflib_QueryFactory .SortOrder .DESCENDING , true );
332304 // explicitly assert object accessibility when creating the subselect
333305 qf .subselectQuery (' Tasks' ).selectField (' Id' ).selectField (' Subject' ).setCondition (' IsDeleted = false ' );
334306 List <fflib_QueryFactory > queries = qf .getSubselectQueries ();
335307 System .assert (queries != null );
336- String soql = qf .toSOQL ();
337- System .debug (soql );
338- List <Contact > contacts = Database .query (soql );
339- System .assert (contacts != null && contacts .size () == 1 );
340- System .assert (contacts [0 ].Tasks .size () == 1 );
341- System .assert (contacts [0 ].Tasks [0 ].Subject == ' test' );
308+ System .assert (
309+ Pattern .matches (' SELECT.*(SELECT.*FROM Tasks WHERE.*).*FROM Contact WHERE.*' , qf .toSOQL ()),
310+ ' Incorrect returned query'
311+ );
342312 }
343313
344314 @isTest
345315 static void addChildQueriesWithChildRelationshipObjCheckIsAccessible_success (){
346- Account acct = new Account ();
347- acct .Name = ' testchildqueriesacct' ;
348- insert acct ;
349- Contact cont = new Contact ();
350- cont .FirstName = ' test' ;
351- cont .LastName = ' test' ;
352- cont .AccountId = acct .Id ;
353- insert cont ;
354- Task tsk = new Task ();
355- tsk .WhoId = cont .Id ;
356- tsk .Subject = ' test' ;
357- tsk .ActivityDate = System .today ();
358- insert tsk ;
359-
360316 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
361- qf .selectField (' name' ).selectField (' Id' ).setCondition ( ' name like \' % test% \' ' ).addOrdering (' CreatedDate' ,fflib_QueryFactory .SortOrder .DESCENDING , true );
317+ qf .selectField (' name' ).selectField (' Id' ).setCondition (' name= \' test\' ' ).addOrdering (' CreatedDate' , fflib_QueryFactory .SortOrder .DESCENDING , true );
362318 Schema .DescribeSObjectResult descResult = Contact .SObjectType .getDescribe ();
363319 Schema .ChildRelationship relationship ;
364320 for (Schema .ChildRelationship childRow : descResult .getChildRelationships ()){
@@ -372,30 +328,16 @@ private class fflib_QueryFactoryTest {
372328 qf .subselectQuery (relationship , true ).selectField (' Id' ).selectField (' Subject' ).setCondition (' IsDeleted = false ' );
373329 List <fflib_QueryFactory > queries = qf .getSubselectQueries ();
374330 System .assert (queries != null );
375- List < Contact > contacts = Database . query ( qf . toSOQL ());
376- System . assert ( contacts != null && contacts . size () == 1 );
377- System . assert ( contacts [ 0 ]. Tasks . size () == 1 );
378- System . assert ( contacts [ 0 ]. Tasks [ 0 ]. Subject == ' test ' );
331+ System . assert (
332+ Pattern . matches ( ' SELECT.*(SELECT.*FROM Tasks WHERE.*).*FROM Contact WHERE.* ' , qf . toSOQL ()),
333+ ' Incorrect returned query '
334+ );
379335 }
380336
381337 @isTest
382338 static void addChildQueriesWithChildRelationshipObj_success (){
383- Account acct = new Account ();
384- acct .Name = ' testchildqueriesacct' ;
385- insert acct ;
386- Contact cont = new Contact ();
387- cont .FirstName = ' test' ;
388- cont .LastName = ' test' ;
389- cont .AccountId = acct .Id ;
390- insert cont ;
391- Task tsk = new Task ();
392- tsk .WhoId = cont .Id ;
393- tsk .Subject = ' test' ;
394- tsk .ActivityDate = System .today ();
395- insert tsk ;
396-
397339 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
398- qf .selectField (' name' ).selectField (' Id' ).setCondition ( ' name like \' %test%\' ' ).addOrdering (' CreatedDate' ,fflib_QueryFactory .SortOrder .DESCENDING , true );
340+ qf .selectField (' name' ).selectField (' Id' ).setCondition ( ' name= \' %test%\' ' ).addOrdering (' CreatedDate' ,fflib_QueryFactory .SortOrder .DESCENDING , true );
399341 Schema .DescribeSObjectResult descResult = Contact .SObjectType .getDescribe ();
400342 Schema .ChildRelationship relationship ;
401343 for (Schema .ChildRelationship childRow : descResult .getChildRelationships ()){
@@ -409,30 +351,16 @@ private class fflib_QueryFactoryTest {
409351 qf .subselectQuery (relationship ).selectField (' Id' ).selectField (' Subject' ).setCondition (' IsDeleted = false ' );
410352 List <fflib_QueryFactory > queries = qf .getSubselectQueries ();
411353 System .assert (queries != null );
412- List < Contact > contacts = Database . query ( qf . toSOQL ());
413- System . assert ( contacts != null && contacts . size () == 1 );
414- System . assert ( contacts [ 0 ]. Tasks . size () == 1 );
415- System . assert ( contacts [ 0 ]. Tasks [ 0 ]. Subject == ' test ' );
354+ System . assert (
355+ Pattern . matches ( ' SELECT.*(SELECT.*FROM Tasks WHERE.*).*FROM Contact WHERE.* ' , qf . toSOQL ()),
356+ ' Incorrect returned query '
357+ );
416358 }
417359
418360 @isTest
419361 static void addChildQueriesWithChildRelationshipNoAccessibleCheck_fail (){
420- Account acct = new Account ();
421- acct .Name = ' testchildqueriesacct' ;
422- insert acct ;
423- Contact cont = new Contact ();
424- cont .FirstName = ' test' ;
425- cont .LastName = ' test' ;
426- cont .AccountId = acct .Id ;
427- insert cont ;
428- Task tsk = new Task ();
429- tsk .WhoId = cont .Id ;
430- tsk .Subject = ' test' ;
431- tsk .ActivityDate = System .today ();
432- insert tsk ;
433-
434362 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
435- qf .selectField (' name' ).selectField (' Id' ).setCondition ( ' name like \' % test% \' ' ).addOrdering (' CreatedDate' ,fflib_QueryFactory .SortOrder .DESCENDING , true );
363+ qf .selectField (' name' ).selectField (' Id' ).setCondition ( ' name= \' test\' ' ).addOrdering (' CreatedDate' ,fflib_QueryFactory .SortOrder .DESCENDING , true );
436364 Schema .DescribeSObjectResult descResult = Contact .SObjectType .getDescribe ();
437365 // explicitly assert object accessibility when creating the subselect
438366 //
@@ -447,48 +375,21 @@ private class fflib_QueryFactoryTest {
447375
448376 @isTest
449377 static void addChildQueries_success (){
450- Account acct = new Account ();
451- acct .Name = ' testchildqueriesacct' ;
452- insert acct ;
453- Contact cont = new Contact ();
454- cont .FirstName = ' test' ;
455- cont .LastName = ' test' ;
456- cont .AccountId = acct .Id ;
457- insert cont ;
458- Task tsk = new Task ();
459- tsk .WhoId = cont .Id ;
460- tsk .Subject = ' test' ;
461- tsk .ActivityDate = System .today ();
462- insert tsk ;
463-
464378 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
465379 qf .selectField (' name' ).selectField (' Id' ).setCondition ( ' name like \' %test%\' ' ).addOrdering (' CreatedDate' ,fflib_QueryFactory .SortOrder .DESCENDING , true );
466380 Schema .DescribeSObjectResult descResult = Contact .SObjectType .getDescribe ();
467381 // explicitly assert object accessibility when creating the subselect
468382 qf .subselectQuery (Task .SObjectType , true ).selectField (' Id' ).selectField (' Subject' ).setCondition (' IsDeleted = false ' );
469383 List <fflib_QueryFactory > queries = qf .getSubselectQueries ();
470384 System .assert (queries != null );
471- List < Contact > contacts = Database . query ( qf . toSOQL ());
472- System . assert ( contacts != null && contacts . size () == 1 );
473- System . assert ( contacts [ 0 ]. Tasks . size () == 1 );
474- System . assert ( contacts [ 0 ]. Tasks [ 0 ]. Subject == ' test ' );
385+ System . assert (
386+ Pattern . matches ( ' SELECT.*(SELECT.*FROM Tasks WHERE.*).*FROM Contact WHERE.* ' , qf . toSOQL ()),
387+ ' Incorrect returned query '
388+ );
475389 }
476390
477391 @isTest
478392 static void addChildQuerySameRelationshipAgain_success (){
479- Account acct = new Account ();
480- acct .Name = ' testchildqueriesacct' ;
481- insert acct ;
482- Contact cont = new Contact ();
483- cont .FirstName = ' test' ;
484- cont .LastName = ' test' ;
485- cont .AccountId = acct .Id ;
486- insert cont ;
487- Task tsk = new Task ();
488- tsk .WhoId = cont .Id ;
489- tsk .Subject = ' test' ;
490- tsk .ActivityDate = System .today ();
491- insert tsk ;
492393 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
493394 qf .selectField (' name' );
494395 qf .selectField (' Id' );
@@ -514,14 +415,6 @@ private class fflib_QueryFactoryTest {
514415
515416 @isTest
516417 static void addChildQueries_invalidChildRelationship (){
517- Account acct = new Account ();
518- acct .Name = ' testchildqueriesacct' ;
519- insert acct ;
520- Contact cont = new Contact ();
521- cont .FirstName = ' test' ;
522- cont .LastName = ' test' ;
523- cont .AccountId = acct .Id ;
524- insert cont ;
525418 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
526419 qf .selectField (' name' );
527420 qf .selectField (' email' );
@@ -541,14 +434,6 @@ private class fflib_QueryFactoryTest {
541434
542435 @isTest
543436 static void addChildQueries_invalidChildRelationshipTooDeep (){
544- Account acct = new Account ();
545- acct .Name = ' testchildqueriesacct' ;
546- insert acct ;
547- Contact cont = new Contact ();
548- cont .FirstName = ' test' ;
549- cont .LastName = ' test' ;
550- cont .AccountId = acct .Id ;
551- insert cont ;
552437 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
553438 qf .selectField (' name' );
554439 qf .selectField (' email' );
@@ -572,7 +457,7 @@ private class fflib_QueryFactoryTest {
572457 static void checkFieldObjectReadSort_success (){
573458 fflib_QueryFactory qf = new fflib_QueryFactory (Contact .SObjectType );
574459 qf .assertIsAccessible ()
575- .setEnforceFLS (true )
460+ .setEnforceFLS (true )
576461 .selectField (' createdby.name' )
577462 .selectField (Contact .LastModifiedById )
578463 .selectFields (new List <SObjectField >{Contact .LastModifiedDate })
@@ -585,7 +470,7 @@ private class fflib_QueryFactoryTest {
585470 .addOrdering (new fflib_QueryFactory .Ordering (' Contact' ,' name' ,fflib_QueryFactory .SortOrder .ASCENDING ) )
586471 .addOrdering (Contact .LastModifiedDate ,fflib_QueryFactory .SortOrder .DESCENDING )
587472 .addOrdering (Contact .CreatedDate ,fflib_QueryFactory .SortOrder .DESCENDING , true );
588- Set <String > fields = qf .getSelectedFields ();
473+ Set <String > fields = qf .getSelectedFields ();
589474 fflib_QueryFactory .Ordering ordering = new fflib_QueryFactory .Ordering (' Contact' ,' name' ,fflib_QueryFactory .SortOrder .ASCENDING );
590475 System .assertEquals (' Name' ,ordering .getField ());
591476
0 commit comments