function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Roshan singh 21Roshan singh 21 

How write test Class for my rest API class

Hi All Please help me to write Test Class for mu class
public class IssuersCalloutController {

    public IssuersCalloutController(ApexPages.StandardController controller) {

        }    
            
    public PageReference callhttp(string serviceURL)
        {
            System.debug('mytest method');
            Http h = new Http();
            HttpRequest req = new HttpRequest();
            req.setEndpoint(serviceURL);
            req.setMethod('GET');
            req.setHeader('Content-Type', 'application/json');
            req.setHeader('Accept','application/json');
            system.debug('request endpoint '+ req);    
            String username = 'amit';
            String password = 'dost1234';
        
            Blob headerValue= Blob.valueOf(username + ':' + password);
            system.debug('headerValue'+ headerValue);
            String authorizationHeader = 'Basic ' + EncodingUtil.base64Encode(headerValue);
            req.setHeader('Authorization', authorizationHeader);
            req.setTimeout(60000);
        
            system.debug('###req### '+ req);            
            HttpResponse res = h.send(req);
            system.debug('###res### '+ res);
        
            string response = res.getBody();
            system.debug('response'+ response);
               
                
            Set<String> bankNames = New Set<String>();
            // declare issuer list to insert 
            List<Issuers__c> InsertedIssuers = New List<Issuers__c>();
            for(Issuers__c issuer : [Select Id,Bankdir_Name__c from Issuers__c LIMIT 50000]){
            If(!string.isBlank(issuer.Bankdir_Name__c))
                {
                bankNames.add(issuer.Bankdir_Name__c);                          
                }
            }
            system.debug('###Bank Name### '+ bankNames.size());
            List<JsonParserDetail> responseDetails = JsonParserDetail.parse(response); 
            system.debug('****responseDetails****** '+responseDetails);
        
            if(responseDetails.size() > 0){
            for(JsonParserDetail jpd : responseDetails){
                If(!bankNames.contains(jpd.issuerBankdirName))
                    {
                        InsertedIssuers.add(getIssuer(jpd.issuername,jpd.issuerBankdirName,jpd.processorName,jpd.subProcessorName,jpd.siloName));
                    }
                }
            }
            If(InsertedIssuers.size() >0){
            insert InsertedIssuers;      
            }
            PageReference p = apexPages.currentPage();
            string siloName = getsiloname(serviceUrl);
            string message=siloName+' list Successfully updated'+ (InsertedIssuers.size())+'"Thank you!';
            ApexPages.Message msg=new ApexPages.Message(ApexPages.Severity.CONFIRM,message);
            ApexPages.addMessage(msg);
            return p;
        }
 
 
    public string getsiloname(string url) {
            if(url.contains('url')) {
                return 'url';
                }   
            else if(url.contains('url1')) {
                return 'Url1';
                }
            else if(url.contains('Url2')) {
                return 'Url 2';
                }
            else if(url.contains('Url3')) {
                return 'Url 3';
                }
            else if(url.contains('Url4')) {
                return 'Url4';
                }
            else if(url.contains('Url5')) {
                return 'Url5';
                }
                else {                
                return '';
                }
            }

    public PageReference savePreview2Result(){
        PageReference p = callhttp('https://url******1*********'); 
            return p;
        }
    
    public PageReference savePreview4Result(){
        PageReference p = callhttp('https://url1******2*********'); 
            return p;
        }
    
    public PageReference savePreview5Result(){
        PageReference p = callhttp('https://ur2******3*********'); 
            return p;
        }
    
    public PageReference savePreview7Result(){
        PageReference p = callhttp('https://url3******4*********'); 
            return p;
        }
    public PageReference saveTsysResult(){
       PageReference p = callhttp('https://url4******5*********'); 
            return p;
        }
       
    public PageReference saveMyscResult(){
        PageReference p = callhttp('https://url5******6*********'); 
            return p;
        }
  
          
    public Issuers__c getIssuer(string iName, string ibName, string pName, string spName,string siloName){
    
            Issuers__c issuer = New Issuers__c();
            issuer.Name = iName;
            issuer.Bankdir_Name__c = ibName;
            issuer.Processor_Name__c = pName;
            issuer.SubProcessor_Name__c = spName;
            issuer.Silo_Name__c = siloName;
            return issuer;
        }
    }


Class: 2

public class JsonParserDetail {
        
        public String issuername; 
        public String issuerBankdirName;        
        public String processorName;        
        public String subProcessorName;
        public String siloName;
               
       
    public static List <JsonParserDetail> parse(String json) {
        return (List<JsonParserDetail>) System.JSON.deserialize(json,List<JsonParserDetail>.class);
    }
}
Raj VakatiRaj Vakati
 

Step 1 :  Create a mock request . Provide an implementation for the HttpCalloutMock interface to specify the response sent in the respond method, which the Apex runtime calls to send a response for a callout.
@isTest
global class MockHttpResponseGenerator implements HttpCalloutMock {
    // Implement this interface method
    global HTTPResponse respond(HTTPRequest req) {
        // Optionally, only send a mock response for a specific endpoint
        // and method.
        System.assertEquals('http://example.com/example/test', req.getEndpoint());
        System.assertEquals('GET', req.getMethod());
        
        // Create a fake response
        HttpResponse res = new HttpResponse();
        res.setHeader('Content-Type', 'application/json');
        res.setBody('{"example":"test"}');
        res.setStatusCode(200);
        return res;
    }
}



Step 2 : Call that mock Web service in apex test class
 
@isTest
private class IssuersCalloutController{
     @isTest static void testCallout() {

Issuers__c issuer = New Issuers__c();
            issuer.Name = 'Test'; 
            issuer.Bankdir_Name__c =  'Test'; 
            issuer.Processor_Name__c = 'Test'; 
            issuer.SubProcessor_Name__c = 'Test'; 
            issuer.Silo_Name__c =  'Test'; 

insert issuer ;
        // Set mock callout class 
        Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());
        IssuersCalloutController ic = new IssuersCalloutController() ;
        // Call method to test.
        // This causes a fake response to be sent
        // from the class that implements HttpCalloutMock. 
       ic.callhttp();
        ic.getsiloname('URL');
         ic.savePreview2Result();
 ic.savePreview4Result();
 ic.savePreview5Result();
 ic.savePreview7Result();
 ic.saveTsysResult();
ic.saveMyscResult();
ic.getIssuer('Test', 'Test', 'Test', 'Test','Test')
    }
}