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
ronycronyc 

Need help on Test class

Hi team,

 

I have written 1 trigger which will send an email to the Account owner and the contact whenever a Visit(custom objct child of accnt) record is created.

 

This is the test class i have written and the code coverage shows 29 %. i am not sure how to include email services in the Test class . can you please help me out.

 

below is the trigger and test class I have written.

 

trigger Send_Email_Visit on Visit__c (after insert,after update) {
Set<Id> Poc1IdSet = new Set<Id>();
Set<Id> Loctn = new Set<ID>();
for(Visit__c Visit :Trigger.new){
Poc1IdSet.add(Visit.POC_1__c);
Loctn.add(Visit.Location__c);
List<String> List1 = new List<String>();
for(Account acc :[Select owner.Email from Account where Id in :Loctn]){
List1.add(acc.Owner.Email);
}   
Messaging.SingleEmailMessage MessageEmail = new Messaging.SingleEmailMessage();
if(Visit.Send_Email__c ==True && Visit.Portfolio__c =='Walmart'){
MessageEmail.setTemplateId('00Xd00000019U0mEAE');
MessageEmail.setTargetObjectId(Visit.POC_1__c);
MessageEmail.setWhatId(Visit.ID);
MessageEmail.setToAddresses (List1);
MessageEmail.setSaveAsActivity(False); 
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {MessageEmail}); 
}else if(Visit.Send_Email__c ==True && Visit.Portfolio__c =='AE'){
MessageEmail.setTemplateId('00Xd00000019paUEAQ');
MessageEmail.setTargetObjectId(Visit.POC_1__c);
MessageEmail.setWhatId(Visit.ID);
MessageEmail.setToAddresses (List1);
MessageEmail.setSaveAsActivity(False); 
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {MessageEmail});
 } else if(Visit.Send_Email__c ==True && Visit.Portfolio__c =='TRU'){
MessageEmail.setTemplateId('00Xd00000019qvBEAQ');
MessageEmail.setTargetObjectId(Visit.POC_1__c);
MessageEmail.setWhatId(Visit.ID);
MessageEmail.setToAddresses (List1);
MessageEmail.setSaveAsActivity(False);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {MessageEmail}); }
else if(Visit.Send_Email__c ==True && Visit.Portfolio__c =='GAPINC'){
MessageEmail.setTemplateId('00XJ0000000NNcVMAW');
MessageEmail.setTargetObjectId(Visit.POC_1__c);
MessageEmail.setWhatId(Visit.ID);
MessageEmail.setToAddresses (List1);
MessageEmail.setSaveAsActivity(False); 
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {MessageEmail}); } 
else if(Visit.Send_Email__c ==True && Visit.Portfolio__c =='Belk'){
MessageEmail.setTemplateId('00Xd00000019U0lEAE');
MessageEmail.setTargetObjectId(Visit.POC_1__c);
MessageEmail.setWhatId(Visit.ID);
MessageEmail.setToAddresses (List1);
MessageEmail.setSaveAsActivity(False); 
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {MessageEmail}); }
else {
}
}
}

 

Test class:

 

@istest
private class sendemailvisit 
{
static testmethod void insertvisitrecord()
{
Visit__c visit=new Visit__c();
visit.Location__c='001d000000HiIqd';
visit.Visit_Performed_By__c='005d0000001C6IE';
visit.Visit_Channel__c='Phone';
visit.Visit_Goal__c='Grow Applications';
visit.Primary_Visit_Focus__c='Recognition';
visit.Location_Manager_Level_of_Receptiveness__c='High';
visit.Recognition_ranking__c='High';
visit.Expectations_ranking__c='High';
visit.Accountability_ranking__c='High';
visit.Coaching_ranking__c='High';
visit.Collater_ranking__c='High';
visit.Communications_ranking__c='High';
visit.Training_ranking__c='High';
visit.X9_Was_this_a_planned_visiti__c='Scheduled';
visit.Send_Email__c=True;

insert visit;

if(Visit.Send_Email__c ==True && Visit.Portfolio__c =='Walmart'){

System.assertEquals(visit.Send_Email__c,True); 
}

}

 

please have a look into it and let me know how can I increase the test coverage.

 

Any Help on this will be highly appreciated.

AdrianCCAdrianCC

Hello,

 

I see you have some code branches depending on the Portfolio__c.

Duplicate your testmethod for each value of the Portfolio__c that you are checking in the trigger. This should help raise the coverage above 0.75

 

Happy Friday,

Adrian