You need to sign in to do that
Don't have an account?
NK@BIT
Test class for Email Service apex class
I want to write test class for this Email Service apex class
global class ResourceToLeave implements Messaging.InboundEmailHandler {
global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email,
Messaging.InboundEnvelope env){
// Create an InboundEmailResult object for returning the result of the
// Apex Email Service
Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
String[] emailBody = email.plainTextBody.split('\n', 0);
String startdate = emailBody[0].substring(10);
String[] tempStr = startdate.split('/');
Integer d = Integer.valueOf(tempStr[0]);
Integer m = Integer.valueOf(tempStr[1]);
Integer y = Integer.valueOf(tempStr[2]);
Date sdt = Date.newInstance(y,m,d);
String enddate = emailBody[1].substring(8);
String[] tempStr1 = enddate.split('/');
Integer dd = Integer.valueOf(tempStr1[0]);
Integer mm = Integer.valueOf(tempStr1[1]);
Integer yy = Integer.valueOf(tempStr1[2]);
Date edt = Date.newInstance(yy,mm,dd);
// New Leave object to be created
Leave__c[] leave = new Leave__c[0];
// Try to look up any contacts based on the email from address
// If there is more than one contact with the same email address,
// an exception will be thrown and the catch statement will be called.
try {
Resource__c[] resource = [SELECT Id, Name FROM Resource__c WHERE Name = :email.subject LIMIT 1];
Resource__c res;
if(resource.size()>0)
{
res=resource[0];
}
// Add a new Task to the contact record we just found above.
leave.add(new Leave__c(Resource__c=res.Id,
Start_Date__c=sdt,
End_Date__c=edt
));
// Insert the new Leave
insert leave;
System.debug('New Leave Object: ' + leave );
}
// If an exception occurs when the query accesses
// the contact record, a QueryException is called.
// The exception is written to the Apex debug log.
catch (System.QueryException e) {
System.debug('Query Issue: ' + e);
}
// Set the result to true. No need to send an email back to the user
// with an error message
result.success = true;
// Return the result for the Apex Email Service
return result;
}
}
global class ResourceToLeave implements Messaging.InboundEmailHandler {
global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email,
Messaging.InboundEnvelope env){
// Create an InboundEmailResult object for returning the result of the
// Apex Email Service
Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
String[] emailBody = email.plainTextBody.split('\n', 0);
String startdate = emailBody[0].substring(10);
String[] tempStr = startdate.split('/');
Integer d = Integer.valueOf(tempStr[0]);
Integer m = Integer.valueOf(tempStr[1]);
Integer y = Integer.valueOf(tempStr[2]);
Date sdt = Date.newInstance(y,m,d);
String enddate = emailBody[1].substring(8);
String[] tempStr1 = enddate.split('/');
Integer dd = Integer.valueOf(tempStr1[0]);
Integer mm = Integer.valueOf(tempStr1[1]);
Integer yy = Integer.valueOf(tempStr1[2]);
Date edt = Date.newInstance(yy,mm,dd);
// New Leave object to be created
Leave__c[] leave = new Leave__c[0];
// Try to look up any contacts based on the email from address
// If there is more than one contact with the same email address,
// an exception will be thrown and the catch statement will be called.
try {
Resource__c[] resource = [SELECT Id, Name FROM Resource__c WHERE Name = :email.subject LIMIT 1];
Resource__c res;
if(resource.size()>0)
{
res=resource[0];
}
// Add a new Task to the contact record we just found above.
leave.add(new Leave__c(Resource__c=res.Id,
Start_Date__c=sdt,
End_Date__c=edt
));
// Insert the new Leave
insert leave;
System.debug('New Leave Object: ' + leave );
}
// If an exception occurs when the query accesses
// the contact record, a QueryException is called.
// The exception is written to the Apex debug log.
catch (System.QueryException e) {
System.debug('Query Issue: ' + e);
}
// Set the result to true. No need to send an email back to the user
// with an error message
result.success = true;
// Return the result for the Apex Email Service
return result;
}
}
http://wiki.developerforce.com/page/Code_Sample_-_Testing_Email_Services_with_Inbound_Attachments
I have written few lines please help me completing this test class..
Please tell me how to test that Resource__c object and Leave__c object in apex class..
@isTest
public class ResourceLeaveTest
{
public static testMethod void ResourceLeave()
{
// Create a new email and envelope object
Messaging.InboundEmail email = new Messaging.InboundEmail();
Messaging.InboundEnvelope env = new Messaging.InboundEnvelope();
// Set up your data if you need to
// Create the email body
email.plainTextBody = 'StartDate:01/01/2014\nEndDate:05/01/2014';
email.fromAddress ='test@test.com';
email.subject = 'Dummy Account Name 123';
ResourceToLeave catcher = new ResourceToLeave();
Messaging.InboundEmailResult result = catcher.handleInboundEmail(email, env);
System.assertEquals( result.success ,true);
}
}