
Hi,
I am not able to understand how can i write the test class for the following trigger. The functionality of the trigger is described below.
trigger triggerOnRegionOrRevenueChange on Lead (after Insert,after Update) {
if(Trigger.NEW != null && Trigger.NEW.Size() > 0){
if(Trigger.isUpdate){
if((Trigger.NEW[0].Region__c != Trigger.OLD[0].Region__c) || (Trigger.NEW[0].Revenue__c!= Trigger.OLD[0].Revenue__c) ){
AggregateResult[] groupedResults = [SELECT Region__c, SUM(Revenue__c) FROM Lead GROUP BY Region__c];
List<Campaign> campaigns = new List<Campaign>();
for (AggregateResult ar : groupedResults) {
System.debug('Campaign ID' + ar.get('Region__c'));
System.debug('Average amount' + ar.get('expr0'));
campaigns.add(new campaign(Name = 'Camp-'+ar.get('Region__c'),Region__c= (String)ar.get('Region__c'),revenue__c= String.valueOf(ar.get('expr0')) ));
}
insert campaigns;
System.debug('>> Inserted Campaigns '+campaigns);
}
if(Trigger.isInsert){
AggregateResult[] groupedResults = [SELECT Region__c, SUM(Revenue__c) FROM Lead GROUP BY Region__c];
List<Campaign> campaigns = new List<Campaign>();
for (AggregateResult ar : groupedResults) {
System.debug('Campaign ID' + ar.get('Region__c'));
System.debug('Average amount' + ar.get('expr0'));
campaigns.add(new campaign(Name = 'Camp-'+ar.get('Region__c'),Region__c= (String)ar.get('Region__c'),revenue__c= String.valueOf(ar.get('expr0')) ));
}
insert campaigns;
System.debug('>> Inserted Campaigns '+campaigns);
}
}
}
To create a test for a trigger, you need to create an Apex test class. Here is a basic one to get you started. You will need to set the fields and values appropriate to your trigger. public class Test_Triggers {
static testMethod void test_Task()
{
Lead l = new Lead(LastName='Tester', Email='
tester@nowhere.com');
l.Status = 'Open';
insert l;
}
}