You need to sign in to do that
Don't have an account?

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:
Helper Code:
Thank you so much.
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.
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
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