Salesforce apex Inboung email test class

 Main class : 


global class EmailCatcherHandler implements Messaging.InboundEmailHandler {

      global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) {

          Messaging.InboundEmailResult result = new Messaging.InboundEmailresult();

          

          string emailBody = email.subject;

          System.debug('email.subject --- '+email.subject);

          list<string> emailSplits = emailBody.split('-');

          string caseNum = emailSplits[1];

          caseNum = caseNum.trim();

          Case caseRecord = [Select id from Case where caseNumber =: caseNum];

          

          Task tObj = new Task();

          tObj.Subject = emailSplits[0];

          tObj.Status = 'Completed';

          tobj.ActivityDate= System.today();

          tObj.whatId = caseRecord.Id;

          tobj.Description = email.PlainTextBody.length() > 255 ? email.PlainTextBody.substring(0,244) : email.PlainTextBody;

          insert tObj;

          

          return result;

      }

  }


===============================================


test class :


@isTest

public class EmailCatcherHandlerTest {

    @isTest 

    static void TestinBoundEmail(){

          Account a= New Account(Acc_FundingStatus__c='Fund',Name='Person Account Org',RecordTypeId=Schema.SObjectType.Account.getRecordTypeInfosByName().get('Organisation').getRecordTypeId());

          insert a;

          Entitlement ent = new Entitlement(Name='Testing', AccountId=a.Id, 

          StartDate=Date.valueof(System.now().addDays(-2)), EndDate=Date.valueof(System.now().addYears(2)));

          insert ent;

          case c= new case(Type='Claims',Origin='Email',Resolver_Group__c='Claims',Case_Sub_Type__c='Claims Query',Priority='Medium',Status='New',AccountId=a.Id);

          insert c;

          Case caseObject = [SELECT id,CaseNumber FROM Case WHERE Id = :c.Id];

          Messaging.InboundEmail email = new Messaging.InboundEmail() ;

          Messaging.InboundEnvelope env = new Messaging.InboundEnvelope();

          List<string> emails = new List<string>{'testbandi@test.com','testbandi123@test.com'};

          email.subject = 'Create notification-'+caseObject.CaseNumber;

          email.fromAddress = 'someaddress@test.com';

          email.toAddresses = emails;

          email.plainTextBody = 'email body';

          EmailCatcherHandler  testInbound=new EmailCatcherHandler ();

          testInbound.handleInboundEmail(email, env);

   }

}

Comments

Popular posts from this blog

How to get sessionid and salesforce org base url in salesforce

salesforce - sf - sfdx - cli - commands

Multi currency in Salesforce - Revenue Cloud Advance - Revenue Lifecycle Management