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
Suman Humane 5Suman Humane 5 

Apex test classes to check a trigger that calculates number of child records for object in a lookup relationship

Hi everyone,
I am pretty new to Salesforce Development. I have a simple requirement for where in I need to update a field with the count of child records associated with that object. Since the relationship is that of a look up relationship, I had to achieve this with a trigger. I was able to achieve the requirement. But what I am not able to write is test class for it. Can you please help? 
Here is the trigger and helper code :
Trigger:
trigger UpdtNumofsessions on Session__c (after insert, after update, after delete, after undelete) {
   venueupdatetriggerhandler venupdate = new venueupdatetriggerhandler();
    
    if(trigger.isinsert && trigger.isafter){
        venupdate.OnAfterInsert(trigger.new);
    }
   
    if(trigger.isupdate && trigger.isafter){
        venupdate.OnAfterUpdate(trigger.new);
    }
    
    if(trigger.isdelete && trigger.isafter){
        venupdate.OnAfterDelete(trigger.old);
    }
    
    if(trigger.isundelete && trigger.isafter){
        venupdate.OnAfterInsert(trigger.old);
    }
}

Helper Code:
 
public with sharing class venueupdatetriggerhandler {
 // update the number of sessions on venue when new session records are inserted from trigger
  public void OnAfterInsert(List<session__c> newRecords){
    updatenumberofsessions(newRecords); 
  }
  // update the primary country when records are updated from trigger  
  public void OnAfterUpdate(List<session__c> updatedRecords){
    updatenumberofsessions(updatedRecords); 
  }
 
    public void OnafterDelete(List <session__c> oldRecords){
        updatenumberofsessions(oldRecords);
    }
    
    public void OnafterUndelete(List<Session__c> oldRecords){
        updatenumberofsessions(oldRecords);
    }
  // updates the sales order with the primary purchased country for the item
    private void updatenumberofsessions(List<Session__c> newRecords){
  // create a list to hold session records whose venue is not null
     List<id> ses = new list <id>();
        for (session__c s:newRecords){
            if(s.venue__C!=null){
                ses.add(s.venue__C);
            }
            
       // list to query all the venue records in the database which is a part of the LIST 'ses'     
       list<venue__C> ven =[select id, no_of_sessions__C,(select id from sessions__r) from venue__C where id in:ses];    
  
            //loops over the query result set of venue and updates the no. of sessions field with the count of the related session records
            for(venue__c v:ven){
                v.no_of_sessions__c=v.sessions__r.size();
                }
            Update ven;
    } 
    }
    
}

Thank you so much.
Best Answer chosen by Suman Humane 5
$hwet@$hwet@
Hi Suman,

Please find below the test class for the same. I haven't put any assert statements in it. Kindly update the code with assert statements.

@isTest
private class venueupdatetriggerhandlerTest{
     static testmethod void TestRecordCreate(){
     
            venue__c Ven = new venue__c();
            Ven.Name = 'test1';
            insert Ven;
            Session__c sesstest = new   Session__c();
            sesstest .Name = 'test2';
            sesstest .venue__c = Ven.id;
            insert sesstest ;
            
        }
         static testmethod void TestRecordUpdate(){
            List<venue__c> Ven = new List<venue__c>();
            venue__c Ven1 = new venue__c();
            Ven1 .Name = 'test1';
            Ven.add(Ven1);
            venue__c Ven2 = new venue__c();
            Ven2.Name = 'test2';
            Ven.add(Ven2);
            insert Ven;
            
            Session__c sesstest = new   Session__c();
            sesstest .Name = 'test2';
            sesstest .venue__c = Ven1.id;
            insert sesstest ;
            sesstest .venue__c = Ven2.id;
            update sesstest;
            
            
        }
        static testmethod void TestRecordAfterDelete(){
            List<venue__c> Ven = new List<venue__c>();
            venue__c Ven1 = new venue__c();
            Ven1 .Name = 'test1';
            Ven.add(Ven1);
            venue__c Ven2 = new venue__c();
            Ven2.Name = 'test2';
            Ven.add(Ven2);
            insert Ven;
            
            Session__c sesstest = new   Session__c();
            sesstest .Name = 'test2';
            sesstest .venue__c = Ven1.id;
            insert sesstest ;
            Delete sesstest;
            
            
        }
        static testmethod void TestRecordAfterUndelete(){
            List<venue__c> Ven = new List<venue__c>();
            venue__c Ven1 = new venue__c();
            Ven1 .Name = 'test1';
            Ven.add(Ven1);
            venue__c Ven2 = new venue__c();
            Ven2.Name = 'test2';
            Ven.add(Ven2);
            insert Ven;
            
            Session__c sesstest = new   Session__c();
            sesstest .Name = 'test2';
            sesstest .venue__c = Ven1.id;
            insert sesstest ;
            Delete sesstest;
            Undelete sesstest;
            
            
        }
        
 }

Regards,
Shweta

All Answers

$hwet@$hwet@
Hi Suman,

Please find below the test class for the same. I haven't put any assert statements in it. Kindly update the code with assert statements.

@isTest
private class venueupdatetriggerhandlerTest{
     static testmethod void TestRecordCreate(){
     
            venue__c Ven = new venue__c();
            Ven.Name = 'test1';
            insert Ven;
            Session__c sesstest = new   Session__c();
            sesstest .Name = 'test2';
            sesstest .venue__c = Ven.id;
            insert sesstest ;
            
        }
         static testmethod void TestRecordUpdate(){
            List<venue__c> Ven = new List<venue__c>();
            venue__c Ven1 = new venue__c();
            Ven1 .Name = 'test1';
            Ven.add(Ven1);
            venue__c Ven2 = new venue__c();
            Ven2.Name = 'test2';
            Ven.add(Ven2);
            insert Ven;
            
            Session__c sesstest = new   Session__c();
            sesstest .Name = 'test2';
            sesstest .venue__c = Ven1.id;
            insert sesstest ;
            sesstest .venue__c = Ven2.id;
            update sesstest;
            
            
        }
        static testmethod void TestRecordAfterDelete(){
            List<venue__c> Ven = new List<venue__c>();
            venue__c Ven1 = new venue__c();
            Ven1 .Name = 'test1';
            Ven.add(Ven1);
            venue__c Ven2 = new venue__c();
            Ven2.Name = 'test2';
            Ven.add(Ven2);
            insert Ven;
            
            Session__c sesstest = new   Session__c();
            sesstest .Name = 'test2';
            sesstest .venue__c = Ven1.id;
            insert sesstest ;
            Delete sesstest;
            
            
        }
        static testmethod void TestRecordAfterUndelete(){
            List<venue__c> Ven = new List<venue__c>();
            venue__c Ven1 = new venue__c();
            Ven1 .Name = 'test1';
            Ven.add(Ven1);
            venue__c Ven2 = new venue__c();
            Ven2.Name = 'test2';
            Ven.add(Ven2);
            insert Ven;
            
            Session__c sesstest = new   Session__c();
            sesstest .Name = 'test2';
            sesstest .venue__c = Ven1.id;
            insert sesstest ;
            Delete sesstest;
            Undelete sesstest;
            
            
        }
        
 }

Regards,
Shweta
This was selected as the best answer
Suman Humane 5Suman Humane 5
Thanks Shweta. I will try this and let you know.