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
Procurement ExecutiveProcurement 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
Ugur KayaUgur Kaya
Looks like you do not have that specific org-wide email address defined in the system, try using something that already exists.