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
aaryan sriaaryan sri 

Test is not 100% it getting 60 %

Hi All,

  Below code am not able to get 100% coverage . Please help me out

public class VFC02_ExportToCSV{
    
    private ApexPages.StandardController controller {get; set;}
    public List<TripDetails> trpDetail {get; set;}
    public List<List<TripDetails>> trpDetailForExport {get; set;}
    public String reqBody {get; set;}
    public String message {get; set;}
    public boolean error {get; set;}
    public boolean sucess {get; set;}
    public String tripId {get; set;}
    public String country {get; set;}
   
public VFC02_ExportToCSV() { }
    public VFC02_ExportToCSV(ApexPages.StandardController controller) {
        this.controller = controller;    
    }
    public List<TripDetails> getZero(){
        if(trpDetailForExport.size() >= 1){
            system.debug('In Get Zero  '+trpDetailForExport[0].size());
            return trpDetailForExport[0];
        }else{
            return null;
        }
    }
    public List<TripDetails> getOne(){
        if(trpDetailForExport.size() >= 2){
            return trpDetailForExport[1];
        }else{
            return null;
        }
    }
    public List<TripDetails> getTwo(){
        if(trpDetailForExport.size() >= 3){
            return trpDetailForExport[2];
        }else{
            return null;
        }
    }
    public List<TripDetails> getThree(){
        if(trpDetailForExport.size() >= 4){
            return trpDetailForExport[3];
        }else{
            return null;
        }
    }
    public List<TripDetails> getFour(){
        if(trpDetailForExport.size() >= 5){
            return trpDetailForExport[4];
        }else{
            return null;
        }
    }
    public List<TripDetails> getFive(){
        if(trpDetailForExport.size() >= 6){
            return trpDetailForExport[5];
        }else{
            return null;
        }
    }
    public List<TripDetails> getSix(){
        if(trpDetailForExport.size() >= 7){
            return trpDetailForExport[6];
        }else{
            return null;
        }
    }
    public List<TripDetails> getSeven(){
        if(trpDetailForExport.size() >= 8){
            return trpDetailForExport[7];
        }else{
            return null;
        }
    }
    public List<TripDetails> getEight(){
        if(trpDetailForExport.size() >= 9){
            return trpDetailForExport[8];
        }else{
            return null;
        }
    }
    public List<TripDetails> getNine(){
        if(trpDetailForExport.size() >= 10){
            return trpDetailForExport[9];
        }else{
            return null;
        }
    }
    public PageReference exportToCSVnew(){
        trpDetailForExport = new List<List<TripDetails>>();
        tripId = System.currentPageReference().getParameters().get('id');
        country = System.currentPageReference().getParameters().get('cty');
        Trip_Summary__c trp = new Trip_Summary__c();
        if(tripId !=null){
            try{
                trp = [select Id,First_Name__c,Last_Name__c,User_Id__c,Submitted_Date__c from Trip_Summary__c where Trip_Id__c =:tripId limit 1 ];
                
            }
            catch(System.Exception e) {
                  error = true;
                  message = e.getMessage();
            }
        }
          if(tripId != null){        
            trpDetail = new List<TripDetails>();
            HttpRequest req = new HttpRequest(); 
            req.setMethod('GET');
            
            //Set HTTPRequest header properties
            req.setHeader('content-type', 'application/json');
            req.setHeader('Content-Length','0');
            req.setHeader('Host',System.Label.SMT_Host);
            req.setHeader('Connection','keep-alive');
            req.setHeader('User-Agent','Fiddler');
            String endPointURL = System.Label.SMT_APIGEE_EndPoint;
            String AuthToken = System.Label.SMT_Base64;
            String authorizationHeader = 'Basic '+AuthToken;
            req.setHeader('Authorization', authorizationHeader);
            String EndPoint = endPointURL+tripId;
            req.setEndpoint(EndPoint);
            Http http = new Http();
            try {
                  //Execute web service call here 
                  HTTPResponse res = http.send(req); 
                  reqBody = res.getBody();
                  String temp = reqBody.replace('datetime','dttime');
                  reqBody = temp.replace('lng','longitude');
                  JSONTrip wrapJSONTrip = new JSONTrip();
                  wrapJSONTrip = (JSONTrip)JSON.deserialize(reqBody,JSONTrip.class); 
                  trpDetail = wrapJSONTrip.details;
                  sucess =true;
                  if(trpDetail != null){
                      for(TripDetails t:trpDetail){
                          t.userName = trp.First_Name__c+' '+trp.Last_Name__c;
                          t.userId = trp.User_Id__c;
                          if(trp.Submitted_Date__c!=null){
                              t.submittedDate = trp.Submitted_Date__c.format();
                          }
                          Long longtime = Long.valueOf(t.dttime.trim());   
                          DateTime dt = DateTime.newInstance(longtime);    
                          t.dttime = dt.format('MM/dd/yyyy hh:mm:ss');
                      }
                      Integer i=0;
                      List<TripDetails> tmpList = new List<TripDetails>();
                      for(TripDetails td:trpDetail){
                          if(i<10000){                      
                              tmpList.add(td);
                          } else { 
                              trpDetailForExport.add(tmpList);
                              tmpList = new List<TripDetails>();
                              tmpList.add(td);
                              i=0;
                          }                                            
                          i++;
                      }
                      trpDetailForExport.add(tmpList);   
                  }
            } catch(System.CalloutException e) {
                  //Exception handling goes here....
                  error = true;
                  message = e.getMessage();
            }catch(Exception ex){
                  error = true;
                  message = ex.getMessage();
          }  
        } else {
            error = true;
            message = 'No Trip Id provided';
        } 
        system.debug('size is '+trpDetailForExport.size());
        for(List<TripDetails> t:trpDetailForExport){
            system.debug('Size is for rec '+t.size());
        }
        return null;
        
    }
    public class JSONTrip{
        List<TripDetails> details; 
        JSONTrip(){
            details = new List<TripDetails>();
        }
    }
    public class TripDetails{
        public String dttime {get; set;}
        public String lat{get; set;}
        public String longitude{get; set;}
        public String userName {get; set;}
        public String userId {get; set;}
        public String submittedDate {get; set;}
        
    }   
    
}


Test Class

@isTest
public class VFC02_ExportToCSV_TEST{
        private class Mock implements HttpCalloutMock {
            public HTTPResponse respond (HTTPRequest req) {
                HTTPResponse res = new HTTPResponse();                
                String temp = String.valueOf(req);
                if(temp.contains('CalloutException')){
                    res.setStatusCode(400);
                    CalloutException e = (CalloutException)CalloutException.class.newInstance();
                    e.setMessage('Unauthorized endpoint, please check Setup->Security->Remote site settings.');
                    throw e;
                    res.setStatus('Bad request');
                    res.setBody('');
                }
                if(temp.contains('SystemException')){
                    res.setStatusCode(400);
                    res.setStatus('Bad request');
                    res.setBody('');
                }
                else{
                    res.setStatusCode(200);
                    res.setBody('{"details": [{"datetime": "1440083090761","lat": "34.1320843","lng": "-84.2131297"}]}');
                }
                return res;
            }
        }
    static testMethod void exportToCSVTest(){      
           PageReference pageRef = Page.VFP02_ExportToCSV;
           String tripId = 'ABCDE';
           insert AP41_SMT_DataFactory.getATrip();
           Test.setCurrentPage(pageRef);
           ApexPages.currentPage().getParameters().put('Id','2934bd04-50c5-4000-a3b0-5b10f86215c3'); 
           ApexPages.StandardController cont = new ApexPages.StandardController(new Trip_Summary__c());
           VFC02_ExportToCSV exportResult = new VFC02_ExportToCSV();           
           Test.setMock(HttpCalloutMock.class, new Mock());
           Test.startTest();
           exportResult.exportToCSVnew();
           system.assertEquals(1,exportResult.trpDetail.size());
           Test.stopTest(); 
    
    }
    static testMethod void exportToCSVTestNegative(){       
           PageReference pageRef = Page.VFP02_ExportToCSV;
           String tripId = 'ABCDE';
           insert AP41_SMT_DataFactory.getATrip();
           Test.setCurrentPage(pageRef);
           ApexPages.currentPage().getParameters().put('Id',null); 
           ApexPages.StandardController cont = new ApexPages.StandardController(new Trip_Summary__c());
           VFC02_ExportToCSV exportResult = new VFC02_ExportToCSV(cont);           
           Test.setMock(HttpCalloutMock.class, new Mock());
           Test.startTest();
           exportResult.exportToCSVnew();
           system.assertEquals(null,exportResult.trpDetail);
           Test.stopTest(); 
    
    }
    static testMethod void exportToCSVTestInvalidId(){       
           PageReference pageRef = Page.VFP02_ExportToCSV;
           String tripId = 'ABCDE';
           insert AP41_SMT_DataFactory.getATrip();
           Test.setCurrentPage(pageRef);
           ApexPages.currentPage().getParameters().put('Id','12345'); 
           ApexPages.StandardController cont = new ApexPages.StandardController(new Trip_Summary__c());
           VFC02_ExportToCSV exportResult = new VFC02_ExportToCSV(cont);            
           Test.setMock(HttpCalloutMock.class, new Mock());
           Test.startTest();
           exportResult.exportToCSVnew();
           system.assertEquals(1,exportResult.trpDetail.size());
           Test.stopTest(); 
    
    }
    static testMethod void exportToCSVTestSendCalloutException(){       
           PageReference pageRef = Page.VFP02_ExportToCSV;
           String tripId = 'ABCDE';
           insert AP41_SMT_DataFactory.getATrip();
           Test.setCurrentPage(pageRef);
           ApexPages.currentPage().getParameters().put('Id','CalloutException'); 
           ApexPages.StandardController cont = new ApexPages.StandardController(new Trip_Summary__c());
           VFC02_ExportToCSV exportResult = new VFC02_ExportToCSV(cont);            
           Test.startTest(); 
           Test.setMock(HttpCalloutMock.class, new Mock());
           exportResult.exportToCSVnew();
           system.assertEquals(0,exportResult.trpDetail.size());
           Test.stopTest(); 
    
    }
    static testMethod void exportToCSVTestSendSystemException(){       
           PageReference pageRef = Page.VFP02_ExportToCSV;
           String tripId = 'ABCDE';
           insert AP41_SMT_DataFactory.getATrip();
           Test.setCurrentPage(pageRef);
           ApexPages.currentPage().getParameters().put('Id','SystemException'); 
           ApexPages.StandardController cont = new ApexPages.StandardController(new Trip_Summary__c());
           VFC02_ExportToCSV exportResult = new VFC02_ExportToCSV(cont);            
           Test.startTest(); 
           Test.setMock(HttpCalloutMock.class, new Mock());
           exportResult.exportToCSVnew();
           system.assertEquals(0,exportResult.trpDetail.size());
           Test.stopTest(); 
    
    }
    static testMethod void exportToCSVTestTripDetails(){       
           PageReference pageRef = Page.VFP02_ExportToCSV;
           String tripId = 'ABCDE';
           insert AP41_SMT_DataFactory.getATrip();
           Test.setCurrentPage(pageRef);
           ApexPages.currentPage().getParameters().put('Id','SystemException'); 
           ApexPages.StandardController cont = new ApexPages.StandardController(new Trip_Summary__c());
           VFC02_ExportToCSV exportResult = new VFC02_ExportToCSV(cont);            
           Test.startTest(); 
           VFC02_ExportToCSV.TripDetails testTrip = new VFC02_ExportToCSV.TripDetails();
           testTrip.lat = 'lat';
           testTrip.longitude = 'longitude';
           system.assertEquals(null,exportResult.trpDetail);
           Test.stopTest(); 
    
    }
}
pconpcon
Simply put, you do not have enough tests to cover all of your code.  I would recommend reading over this article [1] and plan your tests better.  Since this is an Apex class, you can directly test each of your individual methods.  Your class consists of ~200 lines of code.  I would expect that your test class would be anywhere from 500 - 1000 lines of code.

[1] http://blog.deadlypenguin.com/blog/testing/strategies/