I have to increase the code coverage of the class. In order to do that, I have written code coverage for the constructors. This is the class: ``` public class LendingTIDOutboundIntegrationHelper { IntegrationBase iBase; public Map<String, Integration_Credential__mdt> creds; public LendingTIDOutboundIntegrationHelper() { iBase = new IntegrationBase(); creds = new Map<String, Integration_Credential__mdt>(); for(Integration_Credential__mdt cred : [SELECT ID, Http_Method__c, DeveloperName, Endpoint__c, HeaderMap__c, Password__c, Integration_Type__c, Username__c FROM Integration_Credential__mdt WHERE Integration_Type__c = 'Lending System']) { creds.put(cred.DeveloperName, cred); } } public LendingTIDOutboundIntegrationHelper(IntegrationBase iBase, Map<String, Integration_Credential__mdt> creds) { this.iBase = iBase; this.creds = creds; } public HttpResponse authenticateLendingSystem(Integration_Message__c im, Access_Tokens__c tokens) { AccessTokenWrapper wrapper = getAccessToken(im); if(wrapper.accessToken != null) { tokens.Lending_System_Access_Token__c = wrapper.accessToken; // call the actual service again im.Error_Description__c = null; im.Error_Code__c = null; Integration_Credential__mdt cred = creds.get(im.Parent_Template_Name__c); Map<String, Object> header = (Map<String, Object>) JSON.deserializeUntyped(cred.HeaderMap__c); header.put('access-token', tokens.Lending_System_Access_Token__c); //changed lending as per doc 1.2 HttpResponse res = iBase.makeCalloutWithHeaderV2(im.Request_Envelope__c, cred.Http_Method__c, cred.Endpoint__c, header); return res; } return wrapper.resp; } @TestVisible private AccessTokenWrapper getAccessToken(Integration_Message__c im) { AccessTokenWrapper toReturn = new AccessTokenWrapper(); // 1. get the credentials Integration_Credential__mdt cred = creds.get('Lending_Get_Access_Token'); Map<String, Object> header = (Map<String, Object>) JSON.deserializeUntyped(cred.HeaderMap__c); // 2. call the access token api HttpResponse res = iBase.makeCalloutWithHeaderV2(null, cred.Http_Method__c, cred.Endpoint__c, header); **toReturn.resp = res; System.debug(Logginglevel.DEBUG, 'response : ' + res.getBody() + ' Code : ' + res.getStatusCode()); im.Login_Response_Envelope__c = res.getBody(); // 3. parse the response and return access token Map<String, Object> response = (Map<String, Object>)JSON.deserializeUntyped(res.getBody()); if(res.getStatusCode() == 200) { toReturn.accessToken = (String)response.get('token'); //changed lending as per doc 1.2 return toReturn; } else { im.Error_Description__c = (String)response.get('error_description'); im.Error_Code__c = res.getStatusCode() + ' ' + (String)response.get('error'); } return toReturn; }** public class AccessTokenWrapper { public String accessToken; public HttpResponse resp; } public class TIDStatusResponseWrapper { public List<TIDStatus> tIdStatus; } public class TIDStatus { public String tId, posId, status, remark, processingStatus; } public class Stage2KYCResponseWrapper { public List<DocStatus> docStatus; } public class DocStatus { public String docType, docId, status, remark, processingStatus; } public class BankReviewResponseWrapper{ public String processingRemarks, processingStatus, reqId; } } ``` And this is the test class method: ``` @isTest static void testLendingSystemStage2KYCAPI() { List<Account> accList = TestDataFactory.createMerchantAccounts(); insert accList; List<Opportunity> opptylist = TestDataFactory.createOpportunity(accList[0].Id); opptylist[0].Type = 'PQR'; insert opptylist; Integration_Message__c IM = new Integration_Message__c(); IM.Opportunity__c = opptylist[0].id; IM.Parent_Template_Name__c='Stage_2_KYC_Lending_System_Template'; IM.Integration_Status__c = 'Success'; insert IM; Integration_Message__c IM2 = new Integration_Message__c(); IM2.Opportunity__c = opptylist[0].id; IM2.Parent_Template_Name__c='Stage_2_KYC_Lending_System_Template'; insert IM2; Test.startTest(); IntegrationBaseHelper ibh = new IntegrationBaseHelper(); String resp1 = '{\"reqId\":\"101000007\",\"opportunityId\":\"1000018886726768\",\"OppurnuityKycStatus\":\"0\",\"kycStage\":\"2\",\"batchNo\":\"98001010111\",\"docStatus\":[{\"docType\":\"10000001\",\"docId\":\"XXXXXXXXXXXX\",\"status\":\"0\",\"remark\":\"Test Remarks\",\"processingStatus\":\"0\"},{\"docType\":\"10000001\",\"docId\":\"XXXXXXXXXXXX\",\"status\":\"0\",\"remark\":\"Test Remarks\",\"processingStatus\":\"0\"}]}'; ibh.parseLendingSystemStage2KYCResponse(resp1,IM,IM2); IntegrationBaseHelper ibh2 = new IntegrationBaseHelper(); String resp2 = '{\"reqId\":\"101000007\",\"opportunityId\":\"1000018886726768\",\"OppurnuityKycStatus\":\"0\",\"kycStage\":\"2\",\"batchNo\":\"98001010111\",\"docStatus\":[{\"docType\":\"10000001\",\"docId\":\"XXXXXXXXXXXX\",\"status\":\"0\",\"remark\":\"Test Remarks\",\"processingStatus\":\"1\"},{\"docType\":\"10000001\",\"docId\":\"XXXXXXXXXXXX\",\"status\":\"0\",\"remark\":\"Test Remarks\",\"processingStatus\":\"0\"}]}'; ibh2.parseLendingSystemStage2KYCResponse(resp2,IM,IM2); Test.stopTest(); } @isTest static void testLendingTID(){ Test.setMock(HttpCalloutMock.class, new MockHttpResponse_lending()); Test.startTest(); LendingTIDOutboundIntegrationHelper t1= new LendingTIDOutboundIntegrationHelper(); IntegrationBase ibase1; Map<String, Integration_Credential__mdt> creds1; LendingTIDOutboundIntegrationHelper test1= new LendingTIDOutboundIntegrationHelper(); LendingTIDOutboundIntegrationHelper test2= new LendingTIDOutboundIntegrationHelper(ibase1,creds1); City_Master__c cm = TestDataFactory.createCityMaster('0','RJ'); insert cm; List<Account> accList = TestDataFactory.createBillingEntityAccounts(); accList[0].State__c = 'RJ'; accList[0].City__c = cm.id; accList[0].Shop_Establishment_Number__c = 'B7/2014/0016739'; //accList[0].State_Name__c = 'Rajasthan'; insert accList; List<Case> caseList = TestDataFactory.createCase(accList[0].Id, null, null); insert caseList; Integration_Message__c IM = TestDataFactory.createIM(caseList[0].id); IM.Parent_Template_Name__c='Signzy_GST_Search'; IM.Related_Record_Id__c = caseList[0].id; IM.Account__c = accList[0].Id; IM.Credential_Template_Name__c = 'Signzy_SNE_Validation_Credentials'; insert IM; Access_Tokens__c at = new Access_Tokens__c(); at.Lending_System_Access_Token__c = 'abc'; insert at; String accessToken= 'Access TOKEN 1'; t1.authenticateLendingSystem(IM, at); LendingTIDOutboundIntegrationHelper atw = LendingTIDOutboundIntegrationHelper.AccessTokenWrapper; atw.getAccessToken(IM); Test.stopTest(); } ``` I need help to cover the Classes.