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
Ashu sharma 38Ashu sharma 38 

Apex code coverage

Hi,

I am getting 50% code coverage.
@RestResource(urlMapping='/leadactivity/getlist/*')
global with sharing  class myActivityTask {
    
    @HttpGet
    global static  list<cust_map> doGetLead(){
        
        list<task> activityLog=new list<task> ();
        Map<Task,Id> CombinedItems=new Map<Task,Id>();
        
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        map<string,string> paramsMap=RestContext.request.params;
        string actdate=paramsMap.get('actdate');
        system.debug('Result' +actdate);
        Datetime dt1 = Datetime.valueOf(actdate);
        list<cust_map> results = new list<cust_map>();        
        list<Task> taskList=[SELECT Subject,CallType,CompletedDateTime,CreatedById,CreatedDate,WhoId,who.type FROM Task where CreatedDate>:dt1];
        
        for(task str:taskList){
            cust_map obj = new cust_map();
            if(str.who.type!='Lead')
                continue;
            
            Lead result = [SELECT ID FROM Lead WHERE Id = :str.WhoId];

            obj.CallObject =     str.Subject;
            obj.CallType = str.CallType;
            obj.CompletedDateTime = str.CompletedDateTime;
            obj.lId = result.ID;
            results.add(obj);
        }
       
        return results;
    }
    global class cust_map{
        Global String CallObject=null;
        Global String CallType=null;
        Global Datetime CompletedDateTime=null;
        Global String lId = null;
    }
       
}

Test class
========
@isTest
private class MyActivityTask_Test{
   
   public testmethod static void MyActivityTask(){
       
       // insert lead data
       lead l = new lead();
       l.LastName = 'Test Lead';
       l.Company = 'Test Company';
       l.Status = 'Closed - Converted';
       insert l;
       
       task t = new task();
       t.Subject = 'Test Subject';
       t.Status = 'new';
       t.Priority = 'Normal';
       t.CallType = 'Outbound';
       t.WhoId = l.Id;
       insert t;
       
       Test.startTest();
       
       // call custom controller
       myActivityTask mat = new myActivityTask();
       myActivityTask.cust_map wrap = new myActivityTask.cust_map();
       wrap.lId = t.WhoId;
       wrap.CompletedDateTime = t.CompletedDateTime;
     
       RestResponse res = new RestResponse();
       RestRequest req = new RestRequest();
       
       req.params.put('actdate', 'my_actdate');
       
       req.httpMethod = 'Get';
       req.addHeader('Content-Type', 'application/json'); // Add a JSON Header as it is validated
       req.requestURI = '/services/apexrest/https:/veditechnologies-dev-ed.my.salesforce.com/leadactivity/getlist' ;  
       RestContext.request = req;
       RestContext.response = res;
       
       List<myActivityTask.cust_map> results = myActivityTask.doGetLead();
       
       Test.stopTest();
     
   }
   
}

Thanks
Andrew GAndrew G
You are passing no valid date .  You are passing the string 'my_actdate'

Change
req.params.put('actdate', 'my_actdate');
to something like
req.params.put('actdate', '2000-12-30');
or something like 
DateTime actDateTime = System.Now().addDay(-1);
req.params.put('actdate', actDateTime .format('yyyy-MM-dd\'T\'hh:mm:ss\'Z\''););


Note also, that you have a SELECT statement inside a FOR loop - no-no for bulkification.

Regards
Andrew
Ashu sharma 38Ashu sharma 38
Hi Andrew,

As I have tried the mentioned solution,but still,
I think something is missing!!!!

@isTest
private class MyActivityTask_Test{
   
   public testmethod static void MyActivityTask(){
       
       // insert lead data
       lead l = new lead();
       l.LastName = 'Test Lead';
       l.Company = 'Test Company';
       l.Status = 'Closed - Converted';
       insert l;
       
       task t = new task();
       t.Subject = 'Test Subject';
       t.Status = 'new';
       t.Priority = 'Normal';
       t.CallType = 'Outbound';
       t.WhoId = l.Id;
       insert t;
       
   system.Test.startTest();
       
       // call custom controller
       myActivityTask mat = new myActivityTask();
       myActivityTask.cust_map wrap = new myActivityTask.cust_map();
       wrap.LeadID = t.WhoId;
       wrap.CallDateTime = t.CompletedDateTime;
     
       RestResponse res = new RestResponse();
       RestRequest req = new RestRequest();
       
       req.params.put('actdate', '2019-12-30');
       
       req.httpMethod = 'Get';
       req.addHeader('Content-Type', 'application/json'); // Add a JSON Header as it is validated
       req.requestURI = '/services/apexrest/salesforce.com/leadactivity/getlist' ;  
       RestContext.request = req;
       RestContext.response = res;
       
       List<myActivityTask.cust_map> results = myActivityTask.doGetLead();
       
       system.Test.stopTest();
     
   }
   
}

User-added image
Ashu sharma 38Ashu sharma 38
Hi Andrew,

Now I reached 68% need help to complete this.

@isTest
private class MyActivityTask_Test{
    
    public testmethod static void MyActivityTask(){
        
        // insert lead data
        lead l = new lead();
        l.LastName = 'Test Lead';
        l.Company = 'Test Company';
        l.Status = 'Closed - Converted';
        insert l;
        
        task t = new task();
        t.Subject = 'Test Subject';
        t.Status = 'new';
        t.Priority = 'Normal';
        t.CallType = 'Outbound';
        t.WhoId = l.Id;
        insert t;
        
        system.Test.startTest();
        
        // call custom controller
        myActivityTask mat = new myActivityTask();
        myActivityTask.cust_map wrap = new myActivityTask.cust_map();
        wrap.LeadID = t.WhoId;
        wrap.CallDateTime = t.CompletedDateTime;
        
        RestResponse res = new RestResponse();
        RestRequest req = new RestRequest();
        
        
         req.params.put('actdate', '2019-12-30 23:01:01');
       // datetime actDateTime = System.today()-1;
        //req.params.put('actdate', actDateTime .format('yyyy-MM-dd\'T\'hh:mm:ss\'Z\''));
        
        
        
        req.httpMethod = 'Get';
        req.addHeader('Content-Type', 'application/json'); // Add a JSON Header as it is validated
        req.requestURI = '/services/apexrest/salesforce.com/leadactivity/getlist' ;  
        RestContext.request = req;
        RestContext.response = res;
        
        List<myActivityTask.cust_map> results = myActivityTask.doGetLead();
        
        system.Test.stopTest();
        
    }
    
}


Thanks