+ Start a Discussion
Nagaraj SVNagaraj SV 

Please help me to write test class for below class.....

Public class GetCases
{
    Public static void SaveCase(GetCases.Cases cases)
    {                
        HttpRequest req = new HttpRequest(); 
        //req.setEndpoint(System.URL.getSalesforceBaseUrl().toExternalForm()+'/services/apexrest/CaseRestAPI?Priority='+cases.Priority+'&Reason='+cases.Reason+'&Subject='+cases.Subject+'&Description='+cases.Description+'&Status='+cases.Status);
        req.setEndpoint(System.URL.getSalesforceBaseUrl().toExternalForm()+'/services/apexrest/CaseRestAPI');
        req.setMethod('POST');
        req.setHeader('Content-Type', 'application/json');
        string caseNew=System.JSON.serialize(cases);
        req.setHeader('Content-Length',String.valueof(caseNew.length()));
        req.setCompressed(true);
        req.setHeader('Authorization', 'OAuth '+GetSessionId.getSessionId());
        req.setBody(caseNew);
        
        Http http = new Http();
        HTTPResponse res = http.send(req);
        
        // redirection checking
        boolean redirect = false;
        if (res.getStatusCode() >=300 && res.getStatusCode() <= 307 && res.getStatusCode() != 306) 
        {
            do {
                redirect = false; // reset the value each time
                String loc = res.getHeader('Location'); // get location of the redirect
                if(loc == null) {
                    redirect = false;
                    continue;
                }
                req = new HttpRequest();                
                req.setEndpoint(loc);
                req.setMethod('POST');
                req.setHeader('Content-Type', 'application/json');
                caseNew=System.JSON.serialize(cases);
                req.setHeader('Content-Length',String.valueof(caseNew.length()));
                req.setCompressed(true);
                req.setHeader('Authorization', 'OAuth '+GetSessionId.getSessionId());
                req.setBody(caseNew);
                res = http.send(req);
                if(res.getStatusCode() != 500) // 500 = fail
                { 
                    if(res.getStatusCode() >=300 && res.getStatusCode() <= 307 && res.getStatusCode() != 306) 
                    {
                        redirect= true;
                    }
                }
            } while (redirect && Limits.getCallouts() != Limits.getLimitCallouts());

        }
                
        string jsonResponse=res.getBody();
        
        System.debug('POSTBODY: '+jsonResponse);
        System.debug('POSTSTATUS:'+res.getStatus());
        System.debug('POSTSTATUS_CODE:'+res.getStatusCode());
    }
    }
Alexander TsitsuraAlexander Tsitsura

Hi Nagaraj

Please, read article about Http Callout mock
 
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_testing_httpcalloutmock.htm


Thanks, Alex