Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Test callout logic from (Superbadge - Apex Specialist)
- ----------------------------------------------------------------------------------------------------
- SOURCE CODE1: WarehouseCalloutService
- public with sharing class WarehouseCalloutService {
- private static final String WAREHOUSE_URL = 'https://th-superbadge-apex.herokuapp.com/equipment';
- //@future(callout=true)
- public static void runWarehouseEquipmentSync(){
- Http http = new Http();
- HttpRequest request = new HttpRequest();
- request.setEndpoint(WAREHOUSE_URL);
- request.setMethod('GET');
- HttpResponse response = http.send(request);
- List<Product2> warehouseEq = new List<Product2>();
- if (response.getStatusCode() == 200){
- List<Object> jsonResponse = (List<Object>)JSON.deserializeUntyped(response.getBody());
- System.debug(response.getBody());
- for (Object eq : jsonResponse){
- Map<String,Object> mapJson = (Map<String,Object>)eq;
- Product2 myEq = new Product2();
- myEq.Replacement_Part__c = (Boolean) mapJson.get('replacement');
- myEq.Name = (String) mapJson.get('name');
- myEq.Maintenance_Cycle__c = (Integer) mapJson.get('maintenanceperiod');
- myEq.Lifespan_Months__c = (Integer) mapJson.get('lifespan');
- myEq.Cost__c = (Decimal) mapJson.get('lifespan');
- myEq.Warehouse_SKU__c = (String) mapJson.get('sku');
- myEq.Current_Inventory__c = (Double) mapJson.get('quantity');
- warehouseEq.add(myEq);
- }
- if (warehouseEq.size() > 0){
- upsert warehouseEq;
- System.debug('Your equipment was synced with the warehouse one');
- System.debug(warehouseEq);
- }
- }
- }
- }
- -------------------------------------------------------------------------------------
- SOURCE CODE2 : WarehouseCalloutServiceTest
- @isTest
- private class WarehouseCalloutServiceTest {
- @isTest
- static void testWareHouseCallout(){
- Test.startTest();
- // implement mock callout test here
- Test.setMock(HTTPCalloutMock.class, new WarehouseCalloutServiceMock());
- WarehouseCalloutService.runWarehouseEquipmentSync();
- Test.stopTest();
- System.assertEquals(1, [SELECT count() FROM Product2]);
- }
- }
- ------------------------------------------------------------------------------
- SOURCE CODE3 : WarehouseCalloutServiceMock
- @isTest
- global class WarehouseCalloutServiceMock implements HttpCalloutMock {
- // implement http mock callout
- global static HttpResponse respond(HttpRequest request){
- System.assertEquals('https://th-superbadge-apex.herokuapp.com/equipment', request.getEndpoint());
- System.assertEquals('GET', request.getMethod());
- // Create a fake response
- HttpResponse response = new HttpResponse();
- response.setHeader('Content-Type', 'application/json');
- response.setBody('[{"_id":"55d66226726b611100aaf741","replacement":false,"quantity":5,"name":"Generator 1000 kW","maintenanceperiod":365,"lifespan":120,"cost":5000,"sku":"100003"}]');
- response.setStatusCode(200);
- return response;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement