You need to sign in to do that
Don't have an account?
Ashu 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
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
Change to something like or something like
Note also, that you have a SELECT statement inside a FOR loop - no-no for bulkification.
Regards
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();
}
}
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