You need to sign in to do that
Don't have an account?
enahij
Test class for sending emails with attachement
Hello, can you please help me a test class for this class.
I tried to write one but I always have 0% coverage.
Any help or suggestions please.
public without sharing class SendEmaile {
public class Params {
@InvocableVariable
public String template;
@InvocableVariable
public String orgWideEmailAddress;
@InvocableVariable
public String toAddress;
@InvocableVariable
public Id contactId;
@InvocableVariable
public Id recordId;
@InvocableVariable
public Id relatedId;
@InvocableVariable
public Boolean sendAttachment;
}
@InvocableMethod
public static void sendEmail(List<Params> requests) {
try {
Params request = (requests.size() == 1) ? requests[0] : null;
if (request != null) {
// Get Content Document Ids
Set<String> contentDocumentIds = new Set<String>();
List<ContentDocumentLink> cdls = [SELECT ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId = :request.recordId];
for (ContentDocumentLink doc : cdls) {
contentDocumentIds.add(doc.ContentDocumentId);
}
EK_Parameter__mdt noReplyEmail = EK_Parameter__mdt.getInstance('Facture');
// Get Email Template
Id templateId = [SELECT Id FROM EmailTemplate WHERE DeveloperName = 'Interv'].Id;
// New email message
Messaging.SingleEmailMessage mail = Messaging.renderStoredEmailTemplate(templateId, null, request.relatedId);
// Set OrgWideEmailAddress Id
Id orgWideEmailAddressId = [SELECT Id FROM OrgWideEmailAddress WHERE Address =: noReplyEmail.Value__c LIMIT 1].Id;
if (orgWideEmailAddressId != null) {
mail.setOrgWideEmailAddressId(orgWideEmailAddressId);
}
// Set Email Properties
mail.toAddresses = new String[]{request.toAddress};
mail.setTargetObjectId(request.contactId);
mail.setWhatId(request.relatedId);
mail.setTreatTargetObjectAsRecipient(false);
mail.setTreatBodiesAsTemplate(false);
// Set Email Attachments
if (request.sendAttachment == true) {
List<ContentVersion> contentVersionFile = [SELECT VersionData, Title, FileType FROM ContentVersion WHERE ContentDocumentId IN :contentDocumentIds AND IsLatest = true];
List<Messaging.EmailFileAttachment> emailFileAttachments = new List<Messaging.EmailFileAttachment>();
for (ContentVersion cv : contentVersionFile) {
Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment();
efa.setFileName(cv.Title + '.' + cv.FileType);
efa.setBody(cv.VersionData);
emailFileAttachments.add(efa);
}
if (!emailFileAttachments.isEmpty()) {
mail.setFileAttachments(emailFileAttachments);
}
}
// Send Email
Messaging.SingleEmailMessage[] messages = new List<Messaging.SingleEmailMessage>{mail};
if (!Test.isRunningTest()) {
Messaging.SendEmailResult[] results = Messaging.sendEmail(messages);
if (results[0].success) {
System.debug('The email was sent successfully.');
} else {
System.debug('The email failed to send: ' + results[0].errors[0].message);
}
}
}
} catch (Exception e) {
throw new SendEmailException(e.getMessage(), e);
}
}
/**
* EXCEPTIONS
*/
public class SendEmailException extends Exception { }
}
I tried to write one but I always have 0% coverage.
Any help or suggestions please.
public without sharing class SendEmaile {
public class Params {
@InvocableVariable
public String template;
@InvocableVariable
public String orgWideEmailAddress;
@InvocableVariable
public String toAddress;
@InvocableVariable
public Id contactId;
@InvocableVariable
public Id recordId;
@InvocableVariable
public Id relatedId;
@InvocableVariable
public Boolean sendAttachment;
}
@InvocableMethod
public static void sendEmail(List<Params> requests) {
try {
Params request = (requests.size() == 1) ? requests[0] : null;
if (request != null) {
// Get Content Document Ids
Set<String> contentDocumentIds = new Set<String>();
List<ContentDocumentLink> cdls = [SELECT ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId = :request.recordId];
for (ContentDocumentLink doc : cdls) {
contentDocumentIds.add(doc.ContentDocumentId);
}
EK_Parameter__mdt noReplyEmail = EK_Parameter__mdt.getInstance('Facture');
// Get Email Template
Id templateId = [SELECT Id FROM EmailTemplate WHERE DeveloperName = 'Interv'].Id;
// New email message
Messaging.SingleEmailMessage mail = Messaging.renderStoredEmailTemplate(templateId, null, request.relatedId);
// Set OrgWideEmailAddress Id
Id orgWideEmailAddressId = [SELECT Id FROM OrgWideEmailAddress WHERE Address =: noReplyEmail.Value__c LIMIT 1].Id;
if (orgWideEmailAddressId != null) {
mail.setOrgWideEmailAddressId(orgWideEmailAddressId);
}
// Set Email Properties
mail.toAddresses = new String[]{request.toAddress};
mail.setTargetObjectId(request.contactId);
mail.setWhatId(request.relatedId);
mail.setTreatTargetObjectAsRecipient(false);
mail.setTreatBodiesAsTemplate(false);
// Set Email Attachments
if (request.sendAttachment == true) {
List<ContentVersion> contentVersionFile = [SELECT VersionData, Title, FileType FROM ContentVersion WHERE ContentDocumentId IN :contentDocumentIds AND IsLatest = true];
List<Messaging.EmailFileAttachment> emailFileAttachments = new List<Messaging.EmailFileAttachment>();
for (ContentVersion cv : contentVersionFile) {
Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment();
efa.setFileName(cv.Title + '.' + cv.FileType);
efa.setBody(cv.VersionData);
emailFileAttachments.add(efa);
}
if (!emailFileAttachments.isEmpty()) {
mail.setFileAttachments(emailFileAttachments);
}
}
// Send Email
Messaging.SingleEmailMessage[] messages = new List<Messaging.SingleEmailMessage>{mail};
if (!Test.isRunningTest()) {
Messaging.SendEmailResult[] results = Messaging.sendEmail(messages);
if (results[0].success) {
System.debug('The email was sent successfully.');
} else {
System.debug('The email failed to send: ' + results[0].errors[0].message);
}
}
}
} catch (Exception e) {
throw new SendEmailException(e.getMessage(), e);
}
}
/**
* EXCEPTIONS
*/
public class SendEmailException extends Exception { }
}
Try Below Test Class 87%Coverage Pleae Mark It As Best Answer If It Helps
Thank You!