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
SFD SalesforceSFD Salesforce 

test case for email services for xml data with error

Hi all,

 

actually  i  tried to write the test case it shows an error is too many soql queries 101 .pls help me the given solution.

 

my test case and code:

 

global class Products implements Messaging.InboundEmailHandler {
private String parse(String toParse) {
DOM.Document doc = new DOM.Document();
try {
doc.load(toParse);
DOM.XMLNode root = doc.getRootElement();
return walkThrough(root);

} catch (System.XMLException e) { // invalid XML
return e.getMessage();
}
}
private String walkThrough(DOM.XMLNode node) {
String result = '\n';
if (node.getNodeType() == DOM.XMLNodeType.COMMENT) {
return 'Comment (' + node.getText() + ')';
}
if (node.getNodeType() == DOM.XMLNodeType.TEXT) {
return 'Text (' + node.getText() + ')';
}
if (node.getNodeType() == DOM.XMLNodeType.ELEMENT) {
result += 'Element: ' + node.getName();
if (node.getText().trim() != '') {
result += ', text=' + node.getText().trim();
}
if (node.getAttributeCount() > 0) {
for (Integer i = 0; i< node.getAttributeCount(); i++ ) {
result += ', attribute #' + i + ':' + node.getAttributeKeyAt(i) + '=' + node.getAttributeValue(node.getAttributeKeyAt(i), node.getAttributeKeyNsAt(i));
}
}
for (Dom.XMLNode child: node.getChildElements()) {
result += walkThrough(child);
}
return result;
}
return ''; //should never reach here
}

global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) {
Messaging.InboundEmailResult result = new Messaging.InboundEmailresult();

String myPlainText = '';
String subjectDetail = '';
String fromEmailId ='';
String myEmailIdBodyText = '';
String myStoreName= '';
String myDate ='';

String requestName='';
String limitDate='';
String client='';
String category='';
String title='';
String setbarcode='';
String commonbarcode='';
Integer reqQty=0;
String comment='';
String itemdescription='';
String itembarcode='';
String onesetcount='';
String mustcnt='';
String workPlainText = '';
String caption='';
String newline='\n';
String parseResult='';
String currentdata ='';

// read only XML Workorder portions
caption= '<WorkOrder>';
myPlainText = email.plainTextBody.substring(email.plainTextBody.indexOf(caption));
caption= '</WorkOrder>';
myPlainText = myPlainText.subString(0,myPlainText.indexOf(caption)+caption.length());


parseResult=parse(myPlainText);

caption= 'WHWorkOrder';
currentdata = parseResult.substring(parseResult.indexOf(caption));

 

// Add the email plain text into the local variable
// try {
caption= 'WHWorkOrder';
while (currentdata.indexOf(caption)!=-1) {

caption= 'RequestType';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
requestName = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'TermDate';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
limitDate = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'Client';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
client = myPlainText.subString(0,myPlainText.indexOf(newline));


caption= 'ItemType';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
category = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'Title';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
title = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'SetBarCode';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
setbarcode = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'CommonBarCode';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
commonbarcode = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'RequestedQuantity';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
reqQty = integer.valueOf(myPlainText.subString(0,myPlainText.indexOf(newline)));

caption= 'Comment';
myPlainText = currentdata.substring(currentdata.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
comment = myPlainText.subString(0,myPlainText.indexOf(newline));

List<WHSummary__c> whsummary =[select id from WHSummary__c where Name =:requestName];
if (whsummary.size()==0) {

if(whsummary.size()>0)
{
// instance of workorder
WHWorkOrder__c workorder=new WHWorkOrder__c();

// set field values
workorder.RequestType__c = whsummary[0].id;
workorder.termdate__c = date.parse(limitDate);
workorder.Title__c=title;
workorder.requestedquantity__c=reqQty;
workorder.Client__c = client;
Schema.DescribeFieldResult F = WHWorkOrder__c.itemtype__c.getDescribe();
List<Schema.PicklistEntry> P = F.getPicklistValues();
Boolean found=false;
for( Schema.PicklistEntry ff : P)
{
String tmp=ff.getValue();
if (tmp.equals(category)==true) {
workorder.itemtype__c = category;
found=true;
}
}
if (found==false) {

workorder.setbarcode__c=setbarcode;
workorder.commonbarcode__c=commonbarcode;
workorder.comment__c = comment;

// insert work order
insert workorder;

caption= 'WODetail';

workPlainText = currentdata.substring(currentdata.indexOf(caption));

caption= 'WHWorkOrder';
if (workPlainText.indexOf(caption)!=-1) {
workPlainText = workPlainText.substring(0,workPlainText.indexOf(caption));
currentdata = currentdata.subString(caption.length());
currentdata = currentdata.substring(currentdata.indexOf(caption));

} else {
currentdata = '';
}

caption= 'WODetail';
while (workPlainText.indexOf(caption)!=-1) {

caption= 'ArticleName';
myPlainText = workPlainText.substring(workPlainText.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
itemdescription = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'ArticleBarCode';
myPlainText = workPlainText.substring(workPlainText.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
itembarcode = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'Quantity';
myPlainText = workPlainText.substring(workPlainText.indexOf(caption));
caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
onesetcount = myPlainText.subString(0,myPlainText.indexOf(newline));

caption= 'QuantityRequired';
myPlainText = workPlainText.substring(workPlainText.indexOf(caption));

caption= 'text=';
myPlainText = myPlainText.substring(myPlainText.indexOf(caption));
myPlainText = myPlainText.subString(caption.length());
workPlainText = myPlainText;
if (myPlainText.indexOf(newline)!=-1) {
mustcnt = myPlainText.subString(0,myPlainText.indexOf(newline));
} else {
mustcnt = myPlainText;

}
caption= 'WODetail';

// instance of workorder
WODetail__c wodetail=new WODetail__c();
// set field values
wodetail.requestid__c = workorder.id;
wodetail.Name = itemdescription;
wodetail.quantity__c = integer.valueOf(onesetcount);
wodetail.articlebarcode__c = itembarcode;
wodetail.quantitymust__c = integer.valueOf(mustcnt);

// insert work order detail
insert wodetail;
if (workPlainText.length()==0) {
break;
}
// caption= 'ArticleName';
// throw new BooksSetOrderException('Parse result。 確認してください。 [' + workPlainText+ ']');

}
}
if (currentdata.length()==0) {
break;
}

// } catch (System.StringException e)
// {

// myPlainText = email.plainTextBody;
// System.debug('Error in email Processing: ' + 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 Force.com Email Service
return result;
}



//Test Case above Class


static testmethod void TestCase()
{
// 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
// String requestName='sdsd';
// List<WHSummary__c> m2=[select id from WHSummary__c where Name =:requestName];

WHSummary__c ws=new WHSummary__c();
ws.Name ='pradeep';
// m2.add(ws);
insert ws;
//m2.add(ws);
// insert m2
// set field values
WHWorkOrder__c workorder1=new WHWorkOrder__c();
workorder1.RequestType__c = '2434';
workorder1.termdate__c = date.parse('2/10/2012');
workorder1.Title__c='rakutenlogi';
// workorder1.requestedquantity__c=decimal.parse('10');
workorder1.Client__c = 'Rakuten';
insert workorder1;

// m2.add(workorder1);
// insert m2;
email.fromAddress ='pradeepkumarperla@rediffmail.com';
String contactEmail = 'bookssetorder@44rehu4s7x9jkrpnnw5xkjp68.1hmyfea0.1.apex.salesforce.com';

email.subject ='Test';
email.plainTextBody = '<WorkOrder>\n <WHWorkOrder>\n <RequestType>セット組み</RequestType>\n <TermDate>2012/10/29</TermDate>\n <Client>テスト商品</Client>\n <ItemType>GAME</ItemType>\n <Title>テスト商品</Title>\n <SetBarCode>2100010099204</SetBarCode> \n <CommonBarCode>10001045411694</CommonBarCode> \n <RequestedQuantity>20</RequestedQuantity>\n <Comment>23日着の新譜ですので、確保お願いします。</Comment>\n </WHWorkOrder>\n <WODetail>\n <ArticleName>テスト5</ArticleName>\n <ArticleBarCode>4988602160835</ArticleBarCode>\n <Quantity>3</Quantity>\n <QuantityRequired>10</QuantityRequired>\n </WODetail>\n</WorkOrder>';
// String requestName='';

// List<WHSummary__c > m2=new List<WHSummary__c>();
// WHSummary__c ws=new WHSummary__c();
// ws.Name ='pradeep';
//m2.add(ws);
// insert m2;
Products edr = new Products();

Test.startTest();

Messaging.InboundEmailResult result = edr.handleInboundEmail(email, env);


Test.stopTest();


}
}

 

cheers

Pradeep.P