You need to sign in to do that
Don't have an account?
SFDC_Richie
Test Class for QuickAction.QuickActionDefaultsHandler
Hello folks,
I am trying to use an default email template for the case email publisher.
I found the QuickActionDefaultsHandler Interface which can also be used with Lightning and Lightning Email templates.
Here is my working code so far:
I am struggeling to get the test class to work. So far I have the following test class but I don't know how to configure it properly:
Any help on how to get the right test class with the required coverage would be quite helpful. Thanks for your help!
I am trying to use an default email template for the case email publisher.
I found the QuickActionDefaultsHandler Interface which can also be used with Lightning and Lightning Email templates.
Here is my working code so far:
/// https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_interface_QuickAction_QuickActionDefaultsHandler.htm public class IS24_CaseEmailDefault implements QuickAction.QuickActionDefaultsHandler { public void onInitDefaults( QuickAction.QuickActionDefaults[] actionDefaults ) { for (QuickAction.QuickActionDefaults actionDefault : actionDefaults) { System.debug(actionDefault); if ( actionDefault instanceof QuickAction.SendEmailQuickActionDefaults ) { if ( actionDefault.getTargetSObject().getSObjectType() == EmailMessage.sObjectType ) { QuickAction.SendEmailQuickActionDefaults sendEmailDefaults = (QuickAction.SendEmailQuickActionDefaults) actionDefault; EmailMessage emailMessage = (EmailMessage) sendEmailDefaults.getTargetSObject(); // TODO update values on EmailMessage or call methods on sendEmailDefaults object ID templateId = getTemplateId( 'Test_Template1 ); if ( String.isNotBlank( templateId ) ) { sendEmailDefaults.setTemplateId( templateId ); sendEmailDefaults.setInsertTemplateBody( true ); // apply template above original email content sendEmailDefaults.setIgnoreTemplateSubject( false ); // overwrite subject, use template subject } } } } } private ID getTemplateId( String templateName ) { ID templateId = null; List<EmailTemplate> templates = new List<EmailTemplate>([SELECT id FROM EmailTemplate WHERE developerName = :templateName LIMIT 1 ]); if ( templates.size() > 0 ) { templateId = templates[0].id; } else { System.debug( LoggingLevel.ERROR, 'Unable to locate email template using name "' + templateName + '"' ); } return templateId; } }
I am struggeling to get the test class to work. So far I have the following test class but I don't know how to configure it properly:
@isTest private class IS24_CaseEmailDefaultTest{ Static testMethod void onInitDefaults() { Case newCase = new Case(); newCase.Subject = 'Test Case'; newCase.Description = 'Test Case'; newCase.Type = 'CARE'; insert newCase; QuickAction.SendEmailQuickActionDefaults sendEmailDefaults = Test.newSendEmailQuickActionDefaults(newCase.Id, null); Test.startTest(); IS24_CaseEmailDefault cntl = new IS24_CaseEmailDefault(); sendEmailDefaults.setTemplateId('Test_Template1'); //cntl.onInitDefaults(templateId); Test.stopTest(); EmailMessage emailMessage = (EmailMessage) sendEmailDefaults.getTargetSObject(); System.assertNotEquals(null, emailMessage); } }
Any help on how to get the right test class with the required coverage would be quite helpful. Thanks for your help!