You need to sign in to do that
Don't have an account?
Ashish Nag K
Dynamic Approval Process instance Work Item Test Class
Test Class for this code not able to cover 75 percentage also
@AuraEnabled
public static List<ToDoList__c> DynamicApprovalProcess(String todoString, Boolean approve){
if(String.isNotBlank(todoString)){
List<ToDoList__c> toDoList = (List<ToDoList__c>)System.JSON.deserialize(todoString, List<ToDoList__c>.class);
if(toDoList!=NULL && toDoList.size()>0){
Set<Id> recordIdSet = new Set<Id>();
Map<String, ToDoList__c> todoMap = new Map<String, ToDoList__c>();
for(ToDoList__c todo: toDoList){
recordIdSet.add(todo.Record_Id__c);
todoMap.put(todo.Record_Id__c, todo);
}
if(recordIdSet.size()>0){
list<Approval.ProcessWorkitemRequest> prWkItemList = new list<Approval.ProcessWorkitemRequest>();
map<Id, ProcessInstance> processInsMap = new map<Id, ProcessInstance>([Select ID, Status From ProcessInstance Where TargetObjectID IN:recordIdSet AND Status = 'Pending']);
if(processInsMap!=NULL && processInsMap.size()>0){
for(ProcessInstanceWorkitem workitem : [select Id,OriginalActorId from ProcessInstanceWorkitem where ProcessInstanceId IN:processInsMap.keySet()]){
Approval.ProcessWorkitemRequest prWkItem = new Approval.ProcessWorkitemRequest();
prWkItem.setWorkItemID(workitem.id);
if(approve)
prWkItem.setAction('Approve');
else
prWkItem.setAction('Reject');
prWkItemList.add(prWkItem);
}
if(prWkItemList.size()>0){
list<Approval.ProcessResult> appResultList = Approval.process(prWkItemList);
List<ToDoList__c> todoupdateList= new List<ToDoList__c>();
if(appResultList!=NULL && appResultList.size()>0){
for(Approval.ProcessResult result: appResultList){
if(result.isSuccess() && todoMap.size()>0 && todoMap.containsKey(result.entityid)){
ToDoList__c todoupdate = new ToDoList__c();
todoupdate.Id = todoMap.get(result.entityid).Id;
todoupdate.Status__c = 'Closed';
todoupdateList.add(todoupdate);
}else if(!result.isSuccess() && todoMap.size()>0 && todoMap.containsKey(result.entityid)){
ToDoList__c todoupdate = new ToDoList__c();
todoupdate.Id = todoMap.get(result.entityid).Id;
if(String.isNotBlank(todoMap.get(result.entityid).Body__c) && result.errors.size()>0)
todoupdate.Body__c = todoMap.get(result.entityid).Body__c+' Error in Approval Process: '+result.errors[0];
else if(result.errors.size()>0 && !String.isNotBlank(todoMap.get(result.entityid).Body__c))
todoupdate.Body__c = 'Error in Approval Process: '+result.errors[0];
todoupdateList.add(todoupdate);
}
}
if(todoupdateList.size()>0)
database.update(todoupdateList, false);
}
}
}
}
}
}
return EmployeeDashboardController.fetchToDoListMethod();
}
}
@AuraEnabled
public static List<ToDoList__c> DynamicApprovalProcess(String todoString, Boolean approve){
if(String.isNotBlank(todoString)){
List<ToDoList__c> toDoList = (List<ToDoList__c>)System.JSON.deserialize(todoString, List<ToDoList__c>.class);
if(toDoList!=NULL && toDoList.size()>0){
Set<Id> recordIdSet = new Set<Id>();
Map<String, ToDoList__c> todoMap = new Map<String, ToDoList__c>();
for(ToDoList__c todo: toDoList){
recordIdSet.add(todo.Record_Id__c);
todoMap.put(todo.Record_Id__c, todo);
}
if(recordIdSet.size()>0){
list<Approval.ProcessWorkitemRequest> prWkItemList = new list<Approval.ProcessWorkitemRequest>();
map<Id, ProcessInstance> processInsMap = new map<Id, ProcessInstance>([Select ID, Status From ProcessInstance Where TargetObjectID IN:recordIdSet AND Status = 'Pending']);
if(processInsMap!=NULL && processInsMap.size()>0){
for(ProcessInstanceWorkitem workitem : [select Id,OriginalActorId from ProcessInstanceWorkitem where ProcessInstanceId IN:processInsMap.keySet()]){
Approval.ProcessWorkitemRequest prWkItem = new Approval.ProcessWorkitemRequest();
prWkItem.setWorkItemID(workitem.id);
if(approve)
prWkItem.setAction('Approve');
else
prWkItem.setAction('Reject');
prWkItemList.add(prWkItem);
}
if(prWkItemList.size()>0){
list<Approval.ProcessResult> appResultList = Approval.process(prWkItemList);
List<ToDoList__c> todoupdateList= new List<ToDoList__c>();
if(appResultList!=NULL && appResultList.size()>0){
for(Approval.ProcessResult result: appResultList){
if(result.isSuccess() && todoMap.size()>0 && todoMap.containsKey(result.entityid)){
ToDoList__c todoupdate = new ToDoList__c();
todoupdate.Id = todoMap.get(result.entityid).Id;
todoupdate.Status__c = 'Closed';
todoupdateList.add(todoupdate);
}else if(!result.isSuccess() && todoMap.size()>0 && todoMap.containsKey(result.entityid)){
ToDoList__c todoupdate = new ToDoList__c();
todoupdate.Id = todoMap.get(result.entityid).Id;
if(String.isNotBlank(todoMap.get(result.entityid).Body__c) && result.errors.size()>0)
todoupdate.Body__c = todoMap.get(result.entityid).Body__c+' Error in Approval Process: '+result.errors[0];
else if(result.errors.size()>0 && !String.isNotBlank(todoMap.get(result.entityid).Body__c))
todoupdate.Body__c = 'Error in Approval Process: '+result.errors[0];
todoupdateList.add(todoupdate);
}
}
if(todoupdateList.size()>0)
database.update(todoupdateList, false);
}
}
}
}
}
}
return EmployeeDashboardController.fetchToDoListMethod();
}
}
Raj Vakati
Try this code