1. Task

image.png

  1. Trigger Code
trigger AccountTrigger on Account (before insert) {
		
    if (Trigger.isBefore && Trigger.isInsert) {
        AccountTriggerHandler.updateAccountRatingBasedOnIndustry(Trigger.new);
    }
    
}
  1. Apex Code
public class AccountTriggerHandler {
		
    public static void updateAccountRatingBasedOnIndustry(List<Account> accList) {
        	
        for (Account acc : accList) {
            if (acc.Industry == 'Media' || acc.Industry == 'Energy') {
                acc.Rating = 'Hot';
            }
        }
        
       
        
    }
    
}
  1. Apex Test Code :
@IsTest
public class AccountTriggerHandlerTest {

    @IsTest
    private static void updateAccountRatingBasedOnIndustryTest() {

        List<Account> accList = new List<Account>();

        for (Integer i = 0; i < 3; i++) {
            Account acc = new Account();
            acc.Name = 'Test ' + i;

            if (i == 0) {
                acc.Industry = 'Media';
            } else if (i == 1) {
                acc.Industry = 'Energy';
            } else {
                acc.Industry = 'Engineering';
            }

            accList.add(acc);

        }

        Test.StartTest();
        insert accList;

        for (Integer i = 0; i < 3; i++ ) {

            Account acc = [SELECT Id, Rating FROM Account WHERE Id = :accList[i].Id];

            if (i == 0) {
                System.assertEquals('Hot', acc.Rating, 'Rating must be Equal to HOT');
            } else if (i == 1) {
                System.assertEquals('Hot', acc.Rating, 'Rating must be Equal to HOT');
            } else {
                System.assertNotEquals('Hot', acc.Rating, 'Rating must be Equal to HOT');
            }

        }
        Test.StopTest();

    }

}