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
Akshay MhetreAkshay Mhetre 

How to write a test class for trigger having single email messaging

trigger sendEmailtoinitiator on Case (after update) {
    
    
    List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
    
    Map<Id, Case> objMap = new Map<Id, Case>([ SELECT Id, Allocated_By__r.Email FROM Case WHERE Id IN : Trigger.new ]);
    for (Case newCase : Trigger.new){
        if((newCase.RCU_Stage__c == 'RCU Completion'|| newCase.RCU_Stage__c == 'RCU Clear' || newCase.RCU_Stage__c == 'RCU Negative')  
             && newCase.RCU_completion_Status__c !=null && newCase.Completion_Submit__c == true ){
            
            Messaging.SingleEmailMessage mail =  new Messaging.SingleEmailMessage();
            
           
            String[] toAddresses = new String[] {(objMap.get(newCase.Id).Allocated_By__r.Email)};
            mail.setToAddresses(toAddresses);
            
           
            
            EmailTemplate et = [select id,Subject,Body from EmailTemplate where developername='CaseStageEmailAlert'];
            mail.setTemplateId(et.Id );
            mail.setWhatId(newCase.Id);
            mail.setSubject(et.Subject);
          
            mail.setPlainTextBody(et.Body);
           
          mail.setTreatBodiesAsTemplate(true);
            
            
            //adding email to master list
            mails.add(mail);
            
        }
    }
    
           
            Messaging.sendEmail(mails);
}
 
mukesh guptamukesh gupta
Hi Akshay,

Please use below code:-
 
@istest
public class SubmitCaseControllerTest{
static testMethod void SubmitCaseController(){

Allocated_By__c allocatedObj = new Allocated_By__c(Email = 'test@gmail.com');
insert allocatedObj;
     
    Account acc = new Account(name='Test Company Name',Billing_Account_Number__c='CONTROLLER');
     insert acc;
	Contact con = new Contact();
		con.FirstName='Test';
		con.LastName='Test';
		con.Accountid= acc.id;
		insert con;
     
	Case caseObj = new Case(
	Allocated_By__c = allocatedObj.Id,
    ContactId = con.Id,
    AccountId = acc.Id,
    Status = 'Working',
    Origin = 'Phone',
	RCU_Stage__c = 'RCU Clear' ,
	Completion_Submit__c  = true,
	RCU_completion_Status__c = ''); /////RCU_completion_Status__c  add you value 

	insert caseObj;

	caseObj.Origin = 'Web';

	update caseObj;

	 
}
}

if you need any assistanse, Please let me know!!

Kindly mark my solution as the best answer if it helps you.

Thanks
Mukesh