Skip to content

Commit 26fca1d

Browse files
Merge pull request apex-enterprise-patterns#223 from wimvelzeboer/feature/UnitTestWithoutDML
Feature/unit test without dml
2 parents a09da29 + e993494 commit 26fca1d

File tree

1 file changed

+28
-143
lines changed

1 file changed

+28
-143
lines changed

sfdx-source/apex-common/test/classes/fflib_QueryFactoryTest.cls

Lines changed: 28 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
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 )
2828
private 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

Comments
 (0)