You need to sign in to do that
Don't have an account?
Procurement Executive
test class on CampaignEmailUtility
Apex Class:-
/**
* Created by usman on 1/30/2020.
*/
global class CampaignEmailUtility{
public static void createListEmail(String fuStageId){
Campaign_Follow_Up_Stage__c objCFUS = CampaignEmailUtility.getFollowUpStage(fuStageId);
if(objCFUS != null) {
OrgWideEmailAddress owdEmail = CampaignEmailUtility.getEmailById(objCFUS.Campaign__r.From_Email_Id__c);
EmailTemplate objEmailTemplate = CampaignEmailUtility.getEmailTemplateById(objCFUS.Email_Template_Id__c);
ListEmail objLeadEmail = new ListEmail(
Status='draft',
CampaignId = objCFUS.Campaign__c,
FromAddress = owdEmail.Address,//'awsqualitytech@gmail.com',
FromName = owdEmail.DisplayName,//'Chris Taylor',
HtmlBody = objEmailTemplate.HtmlValue,
Name = objEmailTemplate.Subject,
Subject = objEmailTemplate.Subject,
TextBody = objEmailTemplate.Body
);
insert objLeadEmail;
CampaignEmailUtility.createListEmailRecipientSource(objLeadEmail.Id, objCFUS.Campaign__c);
}
}
public static OrgWideEmailAddress getEmailById(String oId){
return [select Id,Address,DisplayName from OrgWideEmailAddress WHERE Id = :oId limit 1];
}
public static EmailTemplate getEmailTemplateById(String templateId){
list<EmailTemplate> objEmailTemplates = [SELECT Body,BrandTemplateId,Description,DeveloperName,Encoding,
EnhancedLetterheadId,FolderId,FolderName,HtmlValue,Id,IsActive,
Markup,Name,NamespacePrefix,OwnerId,RelatedEntityType,Subject,
TemplateStyle,TemplateType,TimesUsed,UiType
FROM EmailTemplate WHERE Id=:templateId];
if(objEmailTemplates != null){
return objEmailTemplates.get(0);
}
return null;
}
public static Campaign_Follow_Up_Stage__c getFollowUpStage(String fuStageId){
list<Campaign_Follow_Up_Stage__c> objFollowUpStage = [SELECT Id,Campaign__r.From_Email__c,Campaign__r.From_Email_Id__c,Campaign__c,Email_Template_Id__c,
Follow_Up_Days__c,Follow_Up_Time__c
FROM Campaign_Follow_Up_Stage__c
WHERE Id=:fuStageId];
if(objFollowUpStage != null){
return objFollowUpStage.get(0);
}
return null;
}
public static void createListEmailRecipientSource(String listEmailId, String campgainId){
ListEmailRecipientSource objLERS = new ListEmailRecipientSource(
ListEmailId = listEmailId,
SourceListId = campgainId,
SourceType = 'IncludeList'
);
insert objLERS;
//To DO Remove schedule per time in follow up object
if(objLERS.Id != null && listEmailId != null){
CampaignEmailUtility.schdeuleEmailList(listEmailId);
}
}
public static void schdeuleEmailList(String listEmailId){
ListEmail objListEmail = new ListEmail(
Id = listEmailId,
Status = 'Scheduled'
);
update objListEmail;
}
public static list<OrgWideEmailAddress> getAllOrgWideEmailAddress(){
return [SELECT Id,Address,DisplayName,IsAllowAllProfiles from OrgWideEmailAddress];
}
}
Test Class:-
@isTest(seeAllData = true)
Public class CampaignEmailUtility_test{
static testmethod void CampaignEmailUtility_TestMethod(){
Campaign objcmp =new Campaign();
objcmp .Name='Test Campaign';
objcmp .IsActive=true;
objcmp .Type='Email';
objcmp .Status='Planned';
objcmp.From_Email_Id__c = 'awsqualitytech@gmail.com';
insert objcmp;
Campaign_Follow_Up_Stage__c objCmpFlStg = new Campaign_Follow_Up_Stage__c();
objCmpFlStg.Name = 'Stage 1';
objCmpFlStg.Campaign__c = objcmp.id;
objCmpFlStg.Email_Template_Id__c = '00X1F000001UleG';
objCmpFlStg.Follow_Up_Date__c = system.today();
objCmpFlStg.Follow_Up_Days__c = 5;
//objCmpFlStg .Follow_Up_Time__c=17:30;
objCmpFlStg .Local_Schedule_Date_Time__c = System.Now();
//objCmpFlStg .Schedule_time__c
objCmpFlStg.Send_To_Prospects__c = 'All';
objCmpFlStg.Status__c = 'Planned';
objCmpFlStg.Time_Zone__c = 'PST';
insert objCmpFlStg;
Campaign_Follow_Up_Stage__c objCmpFlStg1 = new Campaign_Follow_Up_Stage__c();
objCmpFlStg1 .Campaign__c = objcmp.id;
objCmpFlStg1 .Email_Template_Id__c = '00X1F000001UleG';
objCmpFlStg1 .Follow_Up_Date__c = system.today();
objCmpFlStg1 .Follow_Up_Days__c = 5;
//objCmpFlStg .Follow_Up_Time__c=17:30;
objCmpFlStg1 .Local_Schedule_Date_Time__c = System.Now().addMinutes(3);
//objCmpFlStg .Schedule_time__c
objCmpFlStg1 .Send_To_Prospects__c = 'All';
objCmpFlStg1 .Status__c = 'Completed';
objCmpFlStg1 .Time_Zone__c = 'PST';
insert objCmpFlStg1 ;
//OrgWideEmailAddress oWEA = [select Id,Address,DisplayName from OrgWideEmailAddress];
OrgWideEmailAddress owEA = new OrgWideEmailAddress();
owEA.Address = objcmp.From_Email_Id__c;
owEA.DisplayName = objcmp.Name;
User usr = [Select id,Email from User where Id = :UserInfo.getUserId()];
System.RunAs(usr)
{
EmailTemplate validEmailTemplate = new EmailTemplate();
validEmailTemplate.isActive = true;
validEmailTemplate.Name = 'name';
validEmailTemplate.DeveloperName = 'Abhi';
validEmailTemplate.TemplateType = 'text';
validEmailTemplate.HtmlValue = 'text';
validEmailTemplate.Subject = 'name';
validEmailTemplate.Body= 'Abhi';
validEmailTemplate.FolderId = UserInfo.getUserId();
insert validEmailTemplate;
list<EmailTemplate> objEmailTemplates = [SELECT Body,BrandTemplateId,Description,DeveloperName,Encoding,
EnhancedLetterheadId,FolderId,FolderName,HtmlValue,Id,
Markup,Name,NamespacePrefix,OwnerId,RelatedEntityType,Subject,
TemplateStyle,TemplateType,TimesUsed,UiType
FROM EmailTemplate WHERE Id=:validEmailTemplate.ID LIMIT 1];
// insert validEmailTemplate;
ListEmail objLeadEmail = new ListEmail(
Status='draft',
CampaignId = objCmpFlStg.Campaign__c,
FromAddress = oWEA.Address,
FromName = 'Chris Taylor',
HtmlBody = objEmailTemplates[0].HtmlValue,
Name = objEmailTemplates[0].Subject,
Subject = objEmailTemplates[0].Subject,
TextBody = objEmailTemplates[0].Body);
insert objLeadEmail;
Test.startTest();
CampaignEmailUtility cEU = new CampaignEmailUtility();
CampaignEmailUtility.getFollowUpStage(objCmpFlStg.id);
CampaignEmailUtility.getEmailTemplateById(validEmailTemplate.id);
CampaignEmailUtility.createListEmailRecipientSource(objLeadEmail.id,objcmp.id);
CampaignEmailUtility.createListEmail(objCmpFlStg.Id);
//CampaignEmailUtility.schdeuleEmailList(objLeadEmail.id);
CampaignEmailUtility.getAllOrgWideEmailAddress();
Test.stopTest();
}
}
}
Error :-
System.QueryException: List has no rows for assignment to SObject
Stack TraceClass.CampaignEmailUtility.getEmailById: line 27, column 1
Class.CampaignEmailUtility.createListEmail: line 9, column 1
Class.CampaignEmailUtility_test.CampaignEmailUtility_TestMethod: line 90, column 1
/**
* Created by usman on 1/30/2020.
*/
global class CampaignEmailUtility{
public static void createListEmail(String fuStageId){
Campaign_Follow_Up_Stage__c objCFUS = CampaignEmailUtility.getFollowUpStage(fuStageId);
if(objCFUS != null) {
OrgWideEmailAddress owdEmail = CampaignEmailUtility.getEmailById(objCFUS.Campaign__r.From_Email_Id__c);
EmailTemplate objEmailTemplate = CampaignEmailUtility.getEmailTemplateById(objCFUS.Email_Template_Id__c);
ListEmail objLeadEmail = new ListEmail(
Status='draft',
CampaignId = objCFUS.Campaign__c,
FromAddress = owdEmail.Address,//'awsqualitytech@gmail.com',
FromName = owdEmail.DisplayName,//'Chris Taylor',
HtmlBody = objEmailTemplate.HtmlValue,
Name = objEmailTemplate.Subject,
Subject = objEmailTemplate.Subject,
TextBody = objEmailTemplate.Body
);
insert objLeadEmail;
CampaignEmailUtility.createListEmailRecipientSource(objLeadEmail.Id, objCFUS.Campaign__c);
}
}
public static OrgWideEmailAddress getEmailById(String oId){
return [select Id,Address,DisplayName from OrgWideEmailAddress WHERE Id = :oId limit 1];
}
public static EmailTemplate getEmailTemplateById(String templateId){
list<EmailTemplate> objEmailTemplates = [SELECT Body,BrandTemplateId,Description,DeveloperName,Encoding,
EnhancedLetterheadId,FolderId,FolderName,HtmlValue,Id,IsActive,
Markup,Name,NamespacePrefix,OwnerId,RelatedEntityType,Subject,
TemplateStyle,TemplateType,TimesUsed,UiType
FROM EmailTemplate WHERE Id=:templateId];
if(objEmailTemplates != null){
return objEmailTemplates.get(0);
}
return null;
}
public static Campaign_Follow_Up_Stage__c getFollowUpStage(String fuStageId){
list<Campaign_Follow_Up_Stage__c> objFollowUpStage = [SELECT Id,Campaign__r.From_Email__c,Campaign__r.From_Email_Id__c,Campaign__c,Email_Template_Id__c,
Follow_Up_Days__c,Follow_Up_Time__c
FROM Campaign_Follow_Up_Stage__c
WHERE Id=:fuStageId];
if(objFollowUpStage != null){
return objFollowUpStage.get(0);
}
return null;
}
public static void createListEmailRecipientSource(String listEmailId, String campgainId){
ListEmailRecipientSource objLERS = new ListEmailRecipientSource(
ListEmailId = listEmailId,
SourceListId = campgainId,
SourceType = 'IncludeList'
);
insert objLERS;
//To DO Remove schedule per time in follow up object
if(objLERS.Id != null && listEmailId != null){
CampaignEmailUtility.schdeuleEmailList(listEmailId);
}
}
public static void schdeuleEmailList(String listEmailId){
ListEmail objListEmail = new ListEmail(
Id = listEmailId,
Status = 'Scheduled'
);
update objListEmail;
}
public static list<OrgWideEmailAddress> getAllOrgWideEmailAddress(){
return [SELECT Id,Address,DisplayName,IsAllowAllProfiles from OrgWideEmailAddress];
}
}
Test Class:-
@isTest(seeAllData = true)
Public class CampaignEmailUtility_test{
static testmethod void CampaignEmailUtility_TestMethod(){
Campaign objcmp =new Campaign();
objcmp .Name='Test Campaign';
objcmp .IsActive=true;
objcmp .Type='Email';
objcmp .Status='Planned';
objcmp.From_Email_Id__c = 'awsqualitytech@gmail.com';
insert objcmp;
Campaign_Follow_Up_Stage__c objCmpFlStg = new Campaign_Follow_Up_Stage__c();
objCmpFlStg.Name = 'Stage 1';
objCmpFlStg.Campaign__c = objcmp.id;
objCmpFlStg.Email_Template_Id__c = '00X1F000001UleG';
objCmpFlStg.Follow_Up_Date__c = system.today();
objCmpFlStg.Follow_Up_Days__c = 5;
//objCmpFlStg .Follow_Up_Time__c=17:30;
objCmpFlStg .Local_Schedule_Date_Time__c = System.Now();
//objCmpFlStg .Schedule_time__c
objCmpFlStg.Send_To_Prospects__c = 'All';
objCmpFlStg.Status__c = 'Planned';
objCmpFlStg.Time_Zone__c = 'PST';
insert objCmpFlStg;
Campaign_Follow_Up_Stage__c objCmpFlStg1 = new Campaign_Follow_Up_Stage__c();
objCmpFlStg1 .Campaign__c = objcmp.id;
objCmpFlStg1 .Email_Template_Id__c = '00X1F000001UleG';
objCmpFlStg1 .Follow_Up_Date__c = system.today();
objCmpFlStg1 .Follow_Up_Days__c = 5;
//objCmpFlStg .Follow_Up_Time__c=17:30;
objCmpFlStg1 .Local_Schedule_Date_Time__c = System.Now().addMinutes(3);
//objCmpFlStg .Schedule_time__c
objCmpFlStg1 .Send_To_Prospects__c = 'All';
objCmpFlStg1 .Status__c = 'Completed';
objCmpFlStg1 .Time_Zone__c = 'PST';
insert objCmpFlStg1 ;
//OrgWideEmailAddress oWEA = [select Id,Address,DisplayName from OrgWideEmailAddress];
OrgWideEmailAddress owEA = new OrgWideEmailAddress();
owEA.Address = objcmp.From_Email_Id__c;
owEA.DisplayName = objcmp.Name;
User usr = [Select id,Email from User where Id = :UserInfo.getUserId()];
System.RunAs(usr)
{
EmailTemplate validEmailTemplate = new EmailTemplate();
validEmailTemplate.isActive = true;
validEmailTemplate.Name = 'name';
validEmailTemplate.DeveloperName = 'Abhi';
validEmailTemplate.TemplateType = 'text';
validEmailTemplate.HtmlValue = 'text';
validEmailTemplate.Subject = 'name';
validEmailTemplate.Body= 'Abhi';
validEmailTemplate.FolderId = UserInfo.getUserId();
insert validEmailTemplate;
list<EmailTemplate> objEmailTemplates = [SELECT Body,BrandTemplateId,Description,DeveloperName,Encoding,
EnhancedLetterheadId,FolderId,FolderName,HtmlValue,Id,
Markup,Name,NamespacePrefix,OwnerId,RelatedEntityType,Subject,
TemplateStyle,TemplateType,TimesUsed,UiType
FROM EmailTemplate WHERE Id=:validEmailTemplate.ID LIMIT 1];
// insert validEmailTemplate;
ListEmail objLeadEmail = new ListEmail(
Status='draft',
CampaignId = objCmpFlStg.Campaign__c,
FromAddress = oWEA.Address,
FromName = 'Chris Taylor',
HtmlBody = objEmailTemplates[0].HtmlValue,
Name = objEmailTemplates[0].Subject,
Subject = objEmailTemplates[0].Subject,
TextBody = objEmailTemplates[0].Body);
insert objLeadEmail;
Test.startTest();
CampaignEmailUtility cEU = new CampaignEmailUtility();
CampaignEmailUtility.getFollowUpStage(objCmpFlStg.id);
CampaignEmailUtility.getEmailTemplateById(validEmailTemplate.id);
CampaignEmailUtility.createListEmailRecipientSource(objLeadEmail.id,objcmp.id);
CampaignEmailUtility.createListEmail(objCmpFlStg.Id);
//CampaignEmailUtility.schdeuleEmailList(objLeadEmail.id);
CampaignEmailUtility.getAllOrgWideEmailAddress();
Test.stopTest();
}
}
}
Error :-
System.QueryException: List has no rows for assignment to SObject
Stack TraceClass.CampaignEmailUtility.getEmailById: line 27, column 1
Class.CampaignEmailUtility.createListEmail: line 9, column 1
Class.CampaignEmailUtility_test.CampaignEmailUtility_TestMethod: line 90, column 1
Ugur Kaya
Looks like you do not have that specific org-wide email address defined in the system, try using something that already exists.