End Point URL: https://api.androidhive.info/contacts/
First add above URL in Remote Site Settings.
Apex Class
public class JsonDataInsert {
public static HttpResponse jsonData() {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.androidhive.info/contacts/');
request.setMethod('GET');
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
EmployeeRecordsList employeeRecords = (EmployeeRecordsList)
JSON.deserialize(response.getBody(),EmployeeRecordsList.class);
//JSON.deserializeUntyped(jsonString)
List<Employee__c> empobj = new List<Employee__c>();
for (DeclareEmployee c: employeeRecords.contacts) {
Employee__c e = new Employee__c ();
e.id__c = c.id;
e.Name = c.name;
e.Email__c = c.email;
e.Gender__c = c.gender;
e.Address__c = c.address;
e.Phone__c = c.phone.mobile;
e.Home_Phone__c = c.phone.home;
e.Office_Phone__c = c.phone.office;
empobj.add(e);
}
insert empobj;
}
return response;
}
public class EmployeeRecordsList {
List<DeclareEmployee> contacts;
}
public class DeclareEmployee {
String id;
String name;
String email;
String address;
String gender;
DeclarePhone phone;
}
public class DeclarePhone {
String mobile;
String office;
String home;
}
}
Test Class
@isTest
public class JsonDataInsertTest {
@isTest static void testingTheCallout() {
Test.startTest();
Test.setMock(HttpCalloutMock.class, new MockHttpResponseGeneratorClass ());
JsonDataInsert.jsonData ();
List<Employee__c> empobj = [select id,Name from Employee__c];
system.assertEquals(true, !empobj.isEmpty());
Test.stopTest();
}
}
Mock Test Class
@isTest
global class MockHttpResponseGeneratorClass implements HttpCalloutMock{
global HTTPResponse respond(HTTPRequest req) {
string body = '{"contacts":[{"id":"c200000","name":"Ravi Tamada",
"email":"ravi@gmail.com","address":"xx-xx-xxxx,x - street, x - country",
"gender":"male","phone":{"mobile":"+91 0000000000","home":"00 000000",
"office":"00 000000"}},{"id":"c201","name":"Johnny Depp","email":"johnny_depp@gmail.com",
"address":"xx-xx-xxxx,x - street, x - country","gender":"male","phone":
{"mobile":"+91 0000000000","home":"00 000000","office":"00 000000"}},
{"id":"c202","name":"Leonardo Dicaprio","email":"leonardo_dicaprio@gmail.com",
"address":"xx-xx-xxxx,x - street, x - country","gender":"male",
"phone":{"mobile":"+91 0000000000","home":"00 000000","office":"00 000000"}},
{"id":"c203","name":"John Wayne","email":"john_wayne@gmail.com",
"address":"xx-xx-xxxx,x - street, x - country","gender":"male",
"phone":{"mobile":"+91 0000000000","home":"00 000000","office":"00 000000"}},
{"id":"c204","name":"Angelina Jolie","email":"angelina_jolie@gmail.com",
"address":"xx-xx-xxxx,x - street, x - country","gender":"female",
"phone":{"mobile":"+91 0000000000","home":"00 000000","office":"00 000000"}},{"id":"c205",
"name":"Dido","email":"dido@gmail.com","address":"xx-xx-xxxx,x - street,
x - country","gender":"female","phone":{"mobile":"+91 0000000000",
"home":"00 000000","office":"00 000000"}},{"id":"c206","name":"Adele",
"email":"adele@gmail.com","address":"xx-xx-xxxx,x - street, x - country",
"gender":"female","phone":{"mobile":"+91 0000000000","home":"00 000000",
"office":"00 000000"}},{"id":"c207","name":"Hugh Jackman","email":"hugh_jackman@gmail.com",
"address":"xx-xx-xxxx,x - street, x - country","gender":"male",
"phone":{"mobile":"+91 0000000000","home":"00 000000",
"office":"00 000000"}},{"id":"c208","name":"Will Smith",
"email":"will_smith@gmail.com","address":"xx-xx-xxxx,x - street,
x - country","gender":"male","phone":{"mobile":"+91 0000000000",
"home":"00 000000","office":"00 000000"}},{"id":"c209","name":"Clint Eastwood",
"email":"clint_eastwood@gmail.com","address":"xx-xx-xxxx,x - street, x - country",
"gender":"male","phone":{"mobile":"+91 0000000000","home":"00 000000",
"office":"00 000000"}},{"id":"c2010","name":"Barack Obama","email":"barack_obama@gmail.com",
"address":"xx-xx-xxxx,x - street, x - country","gender":"male",
"phone":{"mobile":"+91 0000000000","home":"00 000000","office":"00 000000"}},
{"id":"c2011","name":"Kate Winslet","email":"kate_winslet@gmail.com",
"address":"xx-xx-xxxx,x - street, x - country","gender":"female",
"phone":{"mobile":"+91 0000000000","home":"00 000000","office":"00 000000"}},
{"id":"c2012","name":"Eminem","email":"eminem@gmail.com","address":"xx-xx-xxxx,
x - street, x - country","gender":"male","phone":{"mobile":"+91 0000000000",
"home":"00 000000","office":"00 000000"}}]}';
HttpResponse res = new HttpResponse();
res.setHeader('Content-Type', 'application/json');
res.setBody(body);
res.setStatusCode(200);
return res;
}
}
Open Anonymous Window Execute Apex Class Method JsonDataInsert.jsonData();
Then insert Records in Object.
No comments:
Post a Comment