Skip to main content
Divya Ravichandran (Brillio) 님이 #Trailhead에 질문했습니다
I have written the code for Apex specialist superbadge 4th challenge Its 100% coverage but fails the challenge

MintenanceRequest Trigger:

trigger MaintenanceRequest on Case (before update, after update) {

    // call MaintenanceRequestHelper.updateWorkOrders  

    Map<Id,Case> caseList = new Map<Id,Case>();

    if(Trigger.isUpdate  && Trigger.isAfter){

        for(Case oCase: Trigger.new){

            if (oCase.IsClosed && (oCase.Type.equals('Repair') || oCase.Type.equals('Routine Maintenance'))){

                caseList.put(oCase.Id, oCase);

            }

        }

        if(caseList.size() > 0){

            System.debug('Calling updateWorkOrders from MaintenanceRequestHelper Class');

            MaintenanceRequestHelper.updateWorkOrders(caseList);    

        }        

    } 

}

MaintenanceRequestHelper:

public with sharing class MaintenanceRequestHelper {

    public static void updateWorkOrders(Map<Id,Case>applicableCases) {

        // TODO: Complete the method to update workorders

        System.debug('*******Inside MaintenanceRequestHelper Class*******');

        Map<Id, Integer> mapProduct = new Map<Id, Integer>(); 

        List<Case> newCaseList = new List<Case>();

        List<Product2> listProduct = [select Id, Maintenance_Cycle__c from Product2];                                   

        for (Product2 p : listProduct) {

            if (p != null) {

                if(p.Maintenance_Cycle__c != null){

                    mapProduct.put(p.Id, Integer.valueOf(p.Maintenance_Cycle__c));

                }               

            }

        }

        for(Case a: applicableCases.values()){

            Case newCase = new Case();

            newCase.Vehicle__c = a.Vehicle__c;

            newCase.Equipment__c = a.Equipment__c;

            newCase.Type = 'Routine Maintenance';

            newCase.Subject = String.isBlank(a.Subject) ? 'Routine Maintenance Request' : a.Subject;

            newCase.Date_Reported__c = Date.today();

            newCase.Status = 'New';

            newCase.Product__c = a.Product__c;

            newCase.AccountId = a.AccountId;

            newCase.ContactId = a.ContactId;

            newCase.AssetId = a.AssetId;

            newCase.Origin = a.Origin;

            newCase.Reason = a.Reason;

            newCase.Date_Due__c =  (mapProduct.get(a.Id) != null) ? (Date.today().addDays(Integer.valueOf(mapProduct.get(a.Id)))) : (Date.today());

                newCaseList.add(newCase);

        }

        if(newCaseList.size() > 0){

            insert newCaseList;

        }    

    }        

}

Test Class:

@isTest

public class MaintenanceRequestTest {

    static  List<Case> caseList1 = new List<Case>();

    static List<Product2> prodList = new List<Product2>();

    static List<Work_Part__c> wpList = new List<Work_Part__c>();

    @testSetup

    static void getData(){

        caseList1= CreateData( 300,3,3,'Repair');

    }    

    public static List<Case>

    CreateData( Integer numOfcase, Integer numofProd, Integer numofVehicle,

    String type){

        List<Case> caseList = new List<Case>();

        //Create Vehicle       

        Vehicle__c vc = new Vehicle__c();

        vc.name='Test Vehicle';

        upsert vc;

        //Create Equipment

        for(Integer i=0;i<numofProd;i++){

            Product2 prod = new Product2();

            prod.Name='Test Product'+i;

            if(i!=0)

            prod.Maintenance_Cycle__c=i;

            prod.Replacement_Part__c=true;

            prodList.add(prod);

        }

        upsert prodlist;

        //Create Case

        for(Integer i=0;i< numOfcase;i++){

            Case newCase = new Case();

            newCase.Status='New';

            newCase.Origin='web';

            if( math.mod(i, 2) ==0)

            newCase.Type='Routine Maintenance';

            else

            newCase.Type='Repair'; 

            newCase.Subject='Routine Maintenance of Vehicle' +i;

            newCase.Vehicle__c=vc.Id;

            if(i<numofProd)

            newCase.Equipment__c=prodList.get(i).ID;

            else 

            newCase.Equipment__c=prodList.get(0).ID;

            caseList.add(newCase);

        }

        upsert caseList;       

        //create work part                               

        for(Integer i=0;i<numofProd;i++){                           

            Work_Part__c wp = new Work_Part__c();

            wp.Equipment__c   =prodlist.get(i).Id   ; 

            wp.Maintenance_Request__c=caseList.get(i).id;

            wplist.add(wp) ;

        }

        upsert wplist;

        return caseList;              

    }      

    public static testmethod void testMaintenanceHelper(){        

        Test.startTest();

        getData();

        for(Case cas: caseList1)   

        cas.Status ='Closed';      

        update caseList1;  

        Test.stopTest();

    }

}

Please help me with this error.
답변 2개
  1. 2021년 4월 21일 오전 6:59
    Hi divya,

    If your test class is 100% cover, you must add assert in your test class.

    public static testmethod void testMaintenanceHelper(){

    Test.startTest();

    getData();

    for(Case cas: caseList1)

    cas.Status ='Closed';

    update caseList1;

    system.assertEquals('Closed', cas.Status);

    Test.stopTest();

    }

    replace your method with above. I added assert in this method.

    I hope it will complete your requirment.

    let me know if it helps you and marking it as best.

    Thank you

     
0/9000