Archive SDK Testing

Before working in your production environment in the Archive managed package, test your Apex Class Wrapper in the Archive SDK. This article explains creating and running tests to ensure the Apex Class Wrapper behaves as expected.

Note
Note This content relates to Archive. For Salesforce Archive, see Store Data Externally with Salesforce Archive.

MockHttpResponseGenerator.cls

Depicts the mock for callout, and this class implements HttpCalloutMock Apex interface.

@isTest
global class MockHttpResponseGenerator implements HttpCalloutMock {
public String fakeResponseJson;
public integer statusCode;
String redirectHeader;

public MockHttpResponseGenerator(String fakeResponseJson,Integer statusCode){
this.statusCode = statusCode;
this.fakeResponseJson = fakeResponseJson;
this.redirectHeader = '/example/test';

}

public HTTPResponse respond(HTTPRequest req) {
HTTPResponse res = new HTTPResponse();
res.setBody(this.fakeResponseJson);
res.setStatusCode(this.statusCode);
res.setHeader('Location',  this.redirectHeader);
return res;
}
}

SearchSdkTest.cls

This code tests the global search functionality of the OB_Archiver.ArchiverAccessor by setting up a mock HTTP using the above class. This test ensures the search operation returns the expected JSON data and status code.

@isTest
public with sharing class searchSdkTest {

@isTest
private static void searchSdk() {
// Define a JSON string to be used as the mock response body
String jsonBody = '{"records": [{"CaseNumber":"01916767", "Id":"500Xx000000XXXXXX"}], "total_result_count": 1, "scroll_id":"-1" }';

// Set up the mock HTTP response using the predefined JSON body and HTTP 200 status code
OB_Archiver.ArchiverAccessor.setMock((HttpCalloutMock) new MockHttpResponseGenerator(jsonBody, OB_Archiver.ArchiverAccessorResponse.HTTP_200_OK));

// Insert a test archive configuration
insert createTestArchiveConfiguration();

// Create a list to hold search filters
list<OB_Archiver.SearchFilter> request1 = new list<OB_Archiver.SearchFilter>();

// Create a new search filter with the name 'test' and add it to the list
OB_Archiver.SearchFilter filter1 = new OB_Archiver.SearchFilter('Name', 'test');
request1.add(filter1);

// Start the test context
Test.startTest();

// Perform a global search using the archiver accessor and capture the response
OB_Archiver.ArchiverAccessorResponse res = OB_Archiver.ArchiverAccessor.performArchiverGlobalSearch('Account', request1);

// Stop the test context
Test.stopTest();

// Assert that the response status code is HTTP 200 OK
system.assertEquals(OB_Archiver.ArchiverAccessorResponse.HTTP_200_OK, res.getStatusCode());

// Assert that the response body matches the predefined JSON body
system.assertEquals(res.getBody(), jsonBody);
}

private static OB_Archiver__Archive_Configuration__c createTestArchiveConfiguration(){
return createTestArchiveConfiguration('https://example');
}
public static OB_Archiver__Archive_Configuration__c createTestArchiveConfiguration(String url){
OB_Archiver__Archive_Configuration__c ac = new  OB_Archiver__Archive_Configuration__c();
ac.Name = 'OB_URL';
ac.OB_Archiver__URL__c = url;
ac.OB_Archiver__API_Name__c='OB_URL';
return ac;
}
}