Hi Venkatesh Ganta 16,As you referred Name is the auto number field, I have updated the test class for that. Please refer to the below code, your code coverage will definitely improve. Please mark it as the best answer. Apex Class:
@RestResource (urlmapping = '/UpdateBill/*')
global without sharing class ApiUpdateClass{
@HttpPost
global static void updateBill(OrderInfo oInfo){
try{
List<OrderDetail> objOrderDetail = oInfo.orderDt;
Map<string,string> orderDetailMap=new Map<string,string>();
List<Delivery_Order__c> upodateableList = new List<Delivery_Order__c>();
if(objOrderDetail !=null && !objOrderDetail.isEmpty())
{
for(OrderDetail obj:objOrderDetail)
{
orderDetailMap.put(obj.doNumber,obj.billNumber);
}
List<Delivery_Order__c> objOrderList = new List<Delivery_Order__c>();
objOrderList = [Select id,Name,Bill_Number__c From Delivery_Order__c Where Name in :orderDetailMap.keySet()];
for(Delivery_Order__c obj:objOrderList)
{
if(orderDetailMap.containsKey(obj.Name))
{
obj.Bill_Number__c = orderDetailMap.get(obj.Name);
obj.Status__c ='Bill Generated';
upodateableList.add(obj);
}
}
if(!upodateableList.isEmpty())
{
database.update(upodateableList);
RestContext.response.responseBody = Blob.valueOf('{"success":"Update successfully"}');
}
}
else
{
RestContext.response.responseBody = Blob.valueOf('{"error":"There is something went wrong"}');
}
// RestContext.response.responseBody = Blob.valueOf('{"error":"'+objOrderDetailList+'"}');*/
}
catch(Exception e){
System.debug('error >> '+e.getMessage()+'at line >> '+e.getLineNumber());
}
}
global class OrderDetail{
global string billNumber;
global string doNumber;
}
global class OrderInfo{
global List<OrderDetail> orderDt { get; set; }
}
}
Test Class :
@isTest
public class ApiUpdateClass_Test {
public static testmethod void setup() {
Test.startTest();
RestRequest request = new RestRequest();
RestResponse res = new RestResponse();
request.requestUri ='https://uat-restexplorer.cs32.force.com/services/apexrest/UpdateBill';
request.httpMethod = 'POST';
request.addHeader('Content-Type', 'Test/xml');
RestContext.request = request;
RestContext.response = res;
ApiUpdateClass.OrderInfo oinfor = new ApiUpdateClass.OrderInfo();
ApiUpdateClass.OrderDetail od= new ApiUpdateClass.OrderDetail();
List<ApiUpdateClass.OrderDetail> OrderDetailList = new List<ApiUpdateClass.OrderDetail>();
Delivery_Order__c oderObj = new Delivery_Order__c();
oderObj.Bill_Number__c = '234';
// oderObj.Name = '123';
oderObj.Pincode__c= '123233';
oderObj.From_Address__c = 'Banipark,Jaipur-302016';
oderObj.To_Address__c='AJMER NH-8';
oderObj.Date_Of_Delivery__c = system.today();
oderObj.Status__c = 'Sent to Tally';
oderObj.GST__c = '24AAACC1206D1ZM';
insert oderObj;
oderObj = [Select id ,Name,Bill_Number__c,Pincode__c,From_Address__c,To_Address__c,Date_Of_Delivery__c,Status__c,GST__c from Delivery_Order__c where Bill_Number__c = '234' LIMIT 1 ];
System.debug('orderOBJ>>'+oderObj);
od.doNumber=oderObj.Name;
od.billNumber='234';
OrderDetailList.add(od);
oinfor.orderDt = OrderDetailList;
//Delivery_Order__c dod =ApiUpdateClass.updateBill(oinfor);
ApiUpdateClass.updateBill(oinfor);
System.assertEquals('234', od.billNumber);
Test.stopTest();
}
}
I hope you find the above solution helpful. If it does, please mark it as Best Answer to help others too.
Thanks and Regards,Suraj Tripathi
3 risposte