# Trigger Scenario 1

> Write the trigger to prevent the deletion of Account Record whose Active\_\_c = ‘Yes’ **\[Active\_\_c is custom picklist having Yes, No as Values\]** and show the error message as “You can not delete this Account, As this Account still active”.  
> Make sure create Trigger, TriggerHandlerClass and test class to verify trigger is working fine.

AccountTrigger.apxt

```javascript
trigger AccountTrigger on Account (after insert, before delete) {
    
    if(trigger.isBefore && trigger.isDelete){
        AccountTriggerController.beforeDelete(trigger.old);
    }
}
```

AccountTriggerController.apxc

```javascript
public with sharing class AccountTriggerController {
    public AccountTriggerController() {
    }
	
    public static void beforeDelete(List<Account> lstAccounts) {
        for(Account acc: lstAccounts){
            if(acc.Active__c == 'Yes'){
                System.debug('Account is active cannot be deleted: '+acc);
                acc.addError('You can not delete this Account, As this Account still active');
            }
        }
    }
}
```

AccountTriggerControllerTest.apxc

```javascript
@isTest
private class AccountTriggerControllerTest {
    @isTest
    static void testBeforeDelete() {
        
        List<Account> lstAccounts = [SELECT Id, Name, Active__c FROM Account ];
        
        Test.startTest();
        try {
            delete lstAccounts;
        } catch (Exception e) {
            String expectedErrorMessage = 'You can not delete this Account, As this Account still active';
            Assert.isTrue(e.getMessage().contains(expectedErrorMessage));
            system.debug('Error Message: '+e.getMessage());
        }
        Test.stopTest();
        
        List<Account> remainingAccounts = [SELECT Id FROM Account WHERE Id = :lstAccounts[0].Id];
        System.assertEquals(1, remainingAccounts.size());
    }
    
    @TestSetup
    static void makeData(){
        Account activeAccount = new Account(Name = 'Active Account', Active__c = 'Yes');
        insert activeAccount;
    }
}
```
