- Trigger Code
trigger AccountTrigger on Account (after insert, before update, after update, before Delete) {
if ((Trigger.isDelete) && (Trigger.isBefore)) {
AccountTriggerHandler.preventAccountDeletionIfActive(Trigger.old);
}
}
- Apex Code
public class AccountTriggerHandler {
public static void preventAccountDeletionIfActive(List<Account> accList) {
for (Account acc : accList) {
if (acc.Active__c == 'Yes') {
acc.addError('Active Account cannot be deleted.');
}
}
}
}
- Test Class Code
@isTest
public class AccountTriggerHandlerTest {
@isTest
private static void preventAccountDeletionIfActiveTest() {
List<Account> accList = new List<Account> ();
for (Integer i = 0; i < 3; i++) {
Account acc = new Account(Name = 'Account', Active__c = 'Yes');
accList.add(acc);
}
Test.StartTest();
insert accList;
try {
delete accList;
System.assert(false, 'Expected a DMLException but none was thrown.');
} catch (Exception e) {
System.assertEquals(true, e.getMessage().contains('Active Account cannot be deleted.'), e.getMessage());
}
Test.StopTest();
}
}