I have an apex class(REST endpoint) for inserting multiple records into a salesforce object
@RestResource(urlMapping='/MultiTicket/*')
global with sharing class MultiTicketRestController{
global class RequestBody {
global List<Ticket__c> tickets;
}
@HttpPost
global static List<Ticket__c> createBulk(MultiTicketRestController.RequestBody req) {
for (Ticket__c ticket : req.tickets) {
List<Activity__c> activity;
List<Contact> contact;
List<Payment__c> payment;
List<User> user;
List<User> guide;
List<PriceType__c> priceType;
String activity_ID=ticket.Activity__c;
activity=[SELECT id from Activity__c where ExternalAID__c=:Integer.valueOf(activity_ID)];
ticket.Activity__c=activity.get(0).ID;
String payment_ID=ticket.Payment__c;
if(!String.isEmpty(payment_ID))
{payment=[SELECT id from Payment__c where External_Pay__c=:Integer.valueOf(payment_ID)];
ticket.Payment__c=payment.get(0).ID;}
else{ticket.Payment__c=null;}
String contact_ID=ticket.Contact__c;
contact=[SELECT id from Contact where ExternalCID__c=:Integer.valueOf(contact_ID)];
ticket.Contact__c=contact.get(0).ID;
String pricetype_ID=ticket.PriceType__c;
priceType=[SELECT id from PriceType__c where External_PriceType_ID__c=:Integer.valueOf(pricetype_ID)];
ticket.PriceType__c=priceType.get(0).ID;
String user_ID=ticket.User__c;
if(!String.isEmpty(user_ID))
{user=[SELECT id from User where External_UserID__c=:Integer.valueOf(user_ID)];
ticket.User__c=user.get(0).ID;}
else{ticket.User__c=null;}
String guide_ID=ticket.Guide__c;
if(!String.isEmpty(guide_ID))
{guide=[SELECT id from User where External_UserID__c=:Integer.valueOf(guide_ID)];
ticket.Guide__c=guide.get(0).ID;}
else{ticket.Guide__c=null;}
System.Debug(String.valueOf(activity_ID));
}
insert req.tickets;
return req.tickets;
}
}
I was trying to write a test class for this. My request is in the form of an XML or a JSON. So I am not able create ticket objects to test my class because the controller parses the raw json/xml input and puts it into ticket objects. How can I pass in a request to test this class. I am stuck!!
Sample request for endpoint:
{"req" : {"tickets": [
{
"External_TicketID__c" :"666",
"Date_Time__c: "2015-09-13T22:30:00.000Z",
"Payment__c":,
"Contact__c" :"3",
"Activity__c" :333,
"PriceType__c": 3,
"User__c":3,
"Guide__c":4,
"Price__c" :"12.50",
"Fees__c" :340,
"Status__c": "sale",
"Quantity__c": "2",
"Last_Transaction_No__c":123
},
{
"External_TicketID__c" :"777",
"Date_Time__c: "2015-09-13T22:30:00.000Z",
"Payment__c":,
"Contact__c" :"3",
"Activity__c" :333,
"PriceType__c": 3,
"User__c":3,
"Guide__c":,
"Price__c" :"12.50",
"Fees__c" :340,
"Status__c": "sale",
"Quantity__c": "2",
"Last_Transaction_No__c":123
}
]}}