Answer: Example Apex test classes that demonstrate common SOQL patterns and safe query handling. These are minimal tests showing setup, query, and assertions.
@isTest
private class TestSemiJoin {
@isTest static void semiJoin_returnsAccountsWithLargeOpps() {
Account a = new Account(Name='Acme');
insert a;
Opportunity o = new Opportunity(Name='BigDeal', AccountId=a.Id, CloseDate=Date.today(), StageName='Prospecting', Amount=150000);
insert o;
List results = [SELECT Id FROM Account WHERE Id IN (SELECT AccountId FROM Opportunity WHERE Amount > 100000)];
System.assertEquals(1, results.size());
System.assertEquals(a.Id, results[0].Id);
}
}
@isTest
private class TestAggregateQuery {
@isTest static void aggregate_countPerAccount() {
Account a = new Account(Name='A'); insert a;
Opportunity o1 = new Opportunity(Name='O1', AccountId=a.Id, CloseDate=Date.today(), StageName='Closed Won', Amount=100);
Opportunity o2 = new Opportunity(Name='O2', AccountId=a.Id, CloseDate=Date.today(), StageName='Closed Won', Amount=200);
insert new List<Opportunity>{o1,o2};
List<AggregateResult> agg = [SELECT AccountId, COUNT(Id) cnt FROM Opportunity WHERE StageName = 'Closed Won' GROUP BY AccountId];
System.assertEquals(1, agg.size());
Integer cnt = (Integer)agg[0].get('cnt');
System.assertEquals(2, cnt);
}
}
@isTest
private class TestParentToChild {
@isTest static void parentToChild_subqueryReturnsChildren() {
Account a = new Account(Name='Parent'); insert a;
Contact c1 = new Contact(FirstName='Joe', LastName='Tester', AccountId=a.Id, Email='j@test.com');
Contact c2 = new Contact(FirstName='Ann', LastName='Smith', AccountId=a.Id, Email='a@test.com');
insert new List<Contact>{c1,c2};
Account acct = [SELECT Id, (SELECT Id, Email FROM Contacts WHERE Email != NULL) FROM Account WHERE Id = :a.Id];
System.assertEquals(2, acct.Contacts.size());
}
}
@isTest
private class TestTypeOfPolymorphic {
@isTest static void typeof_fetchesTypeSpecificFields() {
Account a = new Account(Name='AcctType'); insert a;
Opportunity opp = new Opportunity(Name='OppType', AccountId=a.Id, CloseDate=Date.today(), StageName='Prospecting'); insert opp;
Task t1 = new Task(Subject='T1', WhatId=a.Id, Status='Not Started');
Task t2 = new Task(Subject='T2', WhatId=opp.Id, Status='Not Started');
insert new List<Task>{t1,t2};
List<Task> tasks = [SELECT Id, TYPEOF What WHEN Account THEN Name WHEN Opportunity THEN Amount END FROM Task WHERE Id IN :new Set<Id>{t1.Id, t2.Id}];
for (Task t : tasks) {
SObject what = (SObject)t.getSObject('What');
if (what instanceof Account) {
Account aa = (Account)what;
System.assertEquals('AcctType', aa.Name);
} else if (what instanceof Opportunity) {
Opportunity oo = (Opportunity)what;
System.assertNotEquals(null, oo.Amount);
}
}
}
}
@isTest
private class TestSafeBindingAndNoRows {
@isTest static void safeBinding_handlesNoRows() {
// ensure no accounts match
List<Account> result = [SELECT Id FROM Account WHERE Name = 'NonExistingName'];
System.assertTrue(result.isEmpty());
// safe single fetch
List<Account> acctList = [SELECT Id FROM Account WHERE Name = 'NonExistingName' LIMIT 1];
if (acctList.isEmpty()) {
// handle not found safely
System.assertEquals(0, acctList.size());
}
}
}