You need to sign in to do that
Don't have an account?
I'm not able to write test class for my class
Class -----------
global class MitratechCustomerSupport implements Messaging.InboundEmailHandler {
global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope env) {
Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
String threadIdentifire=email.FromAddress+'--'+email.subject+'--'+email.toAddresses;
String caseNum=email.subject.subString(email.subject.lastindexOf('-')+1,email.subject.Length());
String sourceIdStore='';
String s= '';
Case objCase = new Case();
EmailMessage objEmailMessage = new EmailMessage();
Messaging.InboundEmail.Header[] hd=email.headers;
if(!test.isRunningTest()){
for(Messaging.InboundEmail.Header hdValue: hd){
s = s+String.valueOf(hdValue);
}
}
Id caseId=[SELECT Id FROM Case WHERE CaseNumber=:caseNum.trim()][0].Id;
if( caseId!=NULL){
try{
//Verify OTP
if(s.contains('Forwarding Confirmation')){
objCase.Subject = email.subject;
objCase.Origin = 'Email';
objCase.Status = 'New';
Insert objCase;
}
else{
//Insert Inbound Email Message
objEmailMessage.ToAddress = String.join( email.toAddresses, ',');
objEmailMessage.FromAddress = email.FromAddress;
objEmailMessage.FromName = email.FromName;
objEmailMessage.Subject = email.subject;
objEmailMessage.HtmlBody = email.htmlBody;
objEmailMessage.Incoming= true;
objEmailMessage.TextBody = email.plainTextBody;
objEmailMessage.RelatedToId =caseId;
//objEmailMessage.ThreadIdentifier=threadIdentifire;
//objEmailMessage.MessageIdentifier=threadIdentifire;
insert objEmailMessage;
for(Case cs:[SELECT SourceId FROM Case WHERE id=:caseId]){
sourceIdStore=cs.SourceId;
}
If(String.isBlank(sourceIdStore)){
objCase.SourceId =objEmailMessage.Id;
}
objCase.Id=caseId;
update objCase;
}
}
Catch(Exception ex){
system.debug('Exception Message'+ex.getMessage());
}
}
result.success = true;
return result;
}
}
Test Class-----
@isTest
public class MitratechCustomerSupportTest {
@isTest
public static void runTest(){
Case c = new Case(subject = 'TEST',Status ='New', Priority = 'Medium', Origin = 'Email');
insert c;
c = [select id, casenumber from Case where id = :c.id];
Messaging.InboundEmail email = new Messaging.InboundEmail() ;
Messaging.InboundEnvelope env = new Messaging.InboundEnvelope();
email.subject = 'blah blah blah '+'-'+c.casenumber;
email.fromAddress = 'someaddress@email.com';
email.plainTextBody = 'email body\n2225256325\nTitle';
MitratechCustomerSupport testInbound=new MitratechCustomerSupport ();
testInbound.handleInboundEmail(email, env);
}
}
Can you kindly describe the issue you are getting after wrting the test class?
Thanks