You need to sign in to do that
Don't have an account?
Meghana Manda 9
apex specialist superbadge challenge 4: Unable to get 100% code coverage
I'm getting only 82% code coverage on MaintenanceRequestHelper.cls
Please let me know what I should do to get 100% code coverage on this
Here is my code
MaintenanceRequestHelper.cls
public with sharing class MaintenanceRequestHelper {
public static void updateWorkOrders(List<Case> caseList) {
List<case> newCases = new List<Case>();
Map<String,Integer> result=getDueDate(caseList);
for(Case c : caseList){
if(c.status=='closed')
if(c.type=='Repair' || c.type=='Routine Maintenance'){
Case newCase = new Case();
newCase.Status='New';
newCase.Origin='web';
newCase.Type='Routine Maintenance';
newCase.Subject='Routine Maintenance of Vehicle';
newCase.Vehicle__c=c.Vehicle__c;
newCase.Equipment__c=c.Equipment__c;
newCase.Date_Reported__c=Date.today();
if(result.get(c.Id)!=null){
newCase.Date_Due__c=Date.today()+result.get(c.Id);
}
else
newCase.Date_Due__c=Date.today();
newCases.add(newCase);
}
}
insert newCases;
}
//
public static Map<String,Integer> getDueDate(List<case> CaseIDs){
Map<String,Integer> result = new Map<String,Integer>();
Map<Id, case> caseKeys = new Map<Id, case> (CaseIDs);
List<AggregateResult> wpc=[select Maintenance_Request__r.ID cID,min(Equipment__r.Maintenance_Cycle__c)cycle from Equipment_Maintenance_Item__c where Maintenance_Request__r.ID in : caseKeys.keySet() group by Maintenance_Request__r.ID ];
for(AggregateResult res :wpc){
Integer addDays=0;
if(res.get('cycle')!=null){
addDays+=Integer.valueOf(res.get('cycle'));
}
result.put((String)res.get('cID'),addDays);
}
return result;
}
}
Please let me know what I should do to get 100% code coverage on this
Here is my code
MaintenanceRequestHelper.cls
public with sharing class MaintenanceRequestHelper {
public static void updateWorkOrders(List<Case> caseList) {
List<case> newCases = new List<Case>();
Map<String,Integer> result=getDueDate(caseList);
for(Case c : caseList){
if(c.status=='closed')
if(c.type=='Repair' || c.type=='Routine Maintenance'){
Case newCase = new Case();
newCase.Status='New';
newCase.Origin='web';
newCase.Type='Routine Maintenance';
newCase.Subject='Routine Maintenance of Vehicle';
newCase.Vehicle__c=c.Vehicle__c;
newCase.Equipment__c=c.Equipment__c;
newCase.Date_Reported__c=Date.today();
if(result.get(c.Id)!=null){
newCase.Date_Due__c=Date.today()+result.get(c.Id);
}
else
newCase.Date_Due__c=Date.today();
newCases.add(newCase);
}
}
insert newCases;
}
//
public static Map<String,Integer> getDueDate(List<case> CaseIDs){
Map<String,Integer> result = new Map<String,Integer>();
Map<Id, case> caseKeys = new Map<Id, case> (CaseIDs);
List<AggregateResult> wpc=[select Maintenance_Request__r.ID cID,min(Equipment__r.Maintenance_Cycle__c)cycle from Equipment_Maintenance_Item__c where Maintenance_Request__r.ID in : caseKeys.keySet() group by Maintenance_Request__r.ID ];
for(AggregateResult res :wpc){
Integer addDays=0;
if(res.get('cycle')!=null){
addDays+=Integer.valueOf(res.get('cycle'));
}
result.put((String)res.get('cID'),addDays);
}
return result;
}
}
And which lines are not covered?
I would guess that it's the usual problem of IF..THEN .. ELSE not being covered by the created test data
regards
Andrew
MaintenanceRequestTest.apxc
@isTest
private class MaintenanceRequestTest{
@testSetup
static void setup(){
//Equipment SETUP
List<Product2> lstOfEqpmnts = new List<Product2>();
Product2 eqip = new Product2(Name = 'Test Equipment',
Maintenance_Cycle__c = 10,
Cost__c = 100,
Current_Inventory__c = 10,
Lifespan_Months__c = 10,
Replacement_Part__c = true,
Warehouse_SKU__c = 'abc');
lstOfEqpmnts.add(eqip);
INSERT lstOfEqpmnts;
}
@isTest
static void testMaintenanceRequest(){
List<Case> lstOfInsertMRs = new List<Case>();
List<Case> lstOfUpdtMRs = new List<Case>();
Id equipId = [SELECT Id FROM Product2 LIMIT 1].get(0).Id;
Case newCase = new Case(Type = 'Routine Maintenance',Status = 'New', Origin = 'Phone');
newCase.Equipment__c = equipId;
lstOfInsertMRs.add(newCase);
Case mrInsert = new Case(Type = 'Routine Maintenance2', Status = 'New', Origin = 'Phone');
mrInsert.Equipment__c = equipId;
lstOfInsertMRs.add(mrInsert);
Test.startTest();
INSERT lstOfInsertMRs;
System.assertEquals(2, lstOfInsertMRs.size());
for(Case mrUpdt : lstOfInsertMRs){
mrUpdt.Status = 'Closed';
lstOfUpdtMRs.add(mrUpdt);
}
UPDATE lstOfUpdtMRs;
System.assertEquals(2, lstOfUpdtMRs.size());
Test.stopTest();
}
}