function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
chanti kchanti k 

How to write a test class to the below trigger ?

Hi ,

in this trigger i have all are number datat tyype fileds.
trigger ParentCaseGBOAge on Case ( after update) 
{

    Set<Id> recordIds = new Set<Id>();
    Set<Id> parentIds = new Set <Id>();
       
    for (case c : Trigger.new)
        
        if( AvoidRecursion.isFirstRun())
    {
        if ( c.RecordTypeId == Schema.Sobjecttype.case.getRecordTypeInfosByName().get('GBOCase').getRecordTypeId() && c.parentid == null && c.status == 'Closed')
             {
             parentIds.add(c.id);
             }
    }
    system.debug('@@@@'+ParentIds.size());
    if (parentIds.isEmpty() == false) 
      {
     
        //List <case> caseparent = [Select id, Parent_BDT_Case_Age__c,Parent_COM_Case_Age__c,Parent_LSR_Case_Age__c, Parent_PDT_Case_Age__c   from case where id in :ParentIds ];
        Map<ID,Case> ResultMap = new Map <ID,Case> ([Select id, Parent_BDT_Case_Age__c,Parent_COM_Case_Age__c,Parent_LSR_Case_Age__c, Parent_PDT_Case_Age__c   from case where id in :ParentIds ]);
       // Map<ID,Case> ResultMap = new Map <ID,Case> ();
        AggregateResult[] groupedResults = [select max(ParentID) ParentID, sum(BDT_Case_Age__c)childsum1, sum(COM_Case_Age__c) childsum2, sum(PDT_Case_Age__c) childsum3, sum(LSR_Case_Age__c) childsum4 from case  where parentid in :ParentIds or Id in:ParentIds];    
        for (AggregateResult Ar : groupedResults)
         {
           ID resultID = (ID)Ar.get('ParentID');
           case cupd = ResultMap.get(resultID);
           cupd.Parent_BDT_Case_Age__c = (Decimal) Ar.get('childsum1');
         cupd.Parent_COM_Case_Age__c = (Decimal) Ar.get('childsum2');            
           cupd.Parent_PDT_Case_Age__c = (Decimal) Ar.get('childsum3');
           cupd.Parent_LSR_Case_Age__c = (Decimal) Ar.get('childsum4');
           //Resultmap.remove(resultID);
           ResultMap.put(resultID,cupd); 
           system.debug('$$$$$$' + ResultMap.values());  
           system.debug('^^^^'+cupd.Parent_BDT_Case_Age__c);  
        }   
      
              
  
        if(ResultMap.values().size() > 0)
        {  
           List <Case> CasestobeUpdated = new List <Case>();
            for (Case cu : [Select id, Parent_BDT_Case_Age__c,Parent_COM_Case_Age__c,Parent_LSR_Case_Age__c, Parent_PDT_Case_Age__c   from case where id in :ResultMap.keySet()]  )
            {
                cu.Parent_BDT_Case_Age__c = ResultMap.get(cu.id).Parent_BDT_Case_Age__c;
                cu.Parent_COM_Case_Age__c = ResultMap.get(cu.id).Parent_COM_Case_Age__c;
                cu.Parent_PDT_Case_Age__c = ResultMap.get(cu.id).Parent_PDT_Case_Age__c;
                cu.Parent_LSR_Case_Age__c = ResultMap.get(cu.id).Parent_LSR_Case_Age__c;
                CasestobeUpdated.add(cu);
            }
           
            update CasestobeUpdated;
         
         //  upsert ResultMap.values() ID ;
         //   system.debug('$$$$$ '+ResultMap.size());
        }   

    }
}
chnati
Cheers!!
GauravGargGauravGarg

Hi Chanti,

Who is the Parent object for Case object. 

Thanks,

Gaurav

AshokaAshoka
Hi Chanti,

You can write your test class for this trigger like this

@isTest
public class ParentCaseGBOAgeTest{
public static testmethod void casemethod(){
Test.startTest();
// Create you record type test record
// Create your case test record with all the field you used in your trigger
// Insert this case
// Then update this case with one field
// Check assert with case id 
Test.stopTest();
}


Hope this will help you. 

Thanks
Ashoka