You need to sign in to do that
Don't have an account?
Sahil Yadav
Apex Class Code Coverage for Invocable Method
Hello Folks, I had one apex class which is getting triggered from flow through actions and that flow create a case records since create record element in flow holds the id of the created record and that id I am pushing it into one collection variable while will pass List<List<Id>> from Flow to an apex class through invocable annotation.
I am facing issue on how we can pass the list of case<Ids > in test class
Any Suggestion would be really appreciable!!!!
public class createChildCase { public static String caseType = 'ELT'; @InvocableMethod public static void createChildCase( List<List<Id>> newCaseIds){ if(newCaseIds != Null & newCaseIds.size() > 0){ for( integer i = 0; i < newCaseIds.size() ; i++){ Case getCase = [SELECT Id, ParentId, Type,Reason_for_Case__c, DDI_City__c, DDI_State__c , DDI_Multi_State__c,DDI_Requester_Company__c, SuppliedEmail, RecordTypeId, Subject FROM Case WHere Id =: newCaseIds[i] AND ParentId = Null]; getCases( getCase); } } } public static void getCases(Case getCase){ List<Case> providerSwitchCasesList = new List <Case>(); List<Case> contractCasesList = new List<Case>(); if (getCase.RecordTypeId == System.Label.DDI_Provider_Switch_State_Record_Type_Id && getCase.Type == caseType ){ providerSwitchCasesList.add( getCase); providerSwitch( providerSwitchCasesList); } else if (getCase.RecordTypeId == System.Label.DDI_Contract_Case_Record_Type_Id && getCase.Type == caseType){ contractCasesList.add(getCase); } } public static void providerSwitch(List<Case> providerSwitchCasesList){ if(providerSwitchCasesList != Null && providerSwitchCasesList.size() > 0){ for (Case providerSwitchCase : providerSwitchCasesList){ checkProviderSwitchCaseStateBlankOrNot(providerSwitchCase); } } } public static void checkProviderSwitchCaseStateBlankOrNot( Case providerSwitchCase){ if (providerSwitchCase.DDI_Multi_State__c != Null){ List<String> selectedStates = providerSwitchCase.DDI_Multi_State__c.split(';'); System.debug('Selected States for ProviderSwitchCase is :' +selectedStates); if(selectedStates != Null && selectedStates.size()>0){ childProviderSwitch(selectedStates, providerSwitchCase); } } } public static void childProviderSwitch( List<String > selectedStates, Case providerSwitchCase){ List<Case> childProviderSwitchCaseList = new List<Case> (); for (Integer s = 0; s < selectedStates.size(); s++){ String singleState = selectedStates[s]; Case childProviderSwitchCase = new Case(); childProviderSwitchCase.ParentId = providerSwitchCase.Id; childProviderSwitchCase.RecordTypeId = System.Label.DDI_Provider_Switch_State_Record_Type_Id; childProviderSwitchCase.DDI_State__c = singleState; childProviderSwitchCase.Subject = 'Child Case of Provider Switch Case'; childProviderSwitchCaseList.add(childProviderSwitchCase); } insert childProviderSwitchCaseList; } }
Test Class Code:- @IsTest public class createChildCaseTest{ @isTest public Static void unitTest(){ Case cases = new Case(); cases.SuppliedEmail= 'yadavsahil463@gmail.com'; cases.DDI_Multi_State__c = 'Arizona;Colorado; California'; cases.Subject = 'Case is been getting created'; cases.DDI_City__c = 'Mumbai'; cases.DDI_State__c = 'Maharashtra'; cases.Type= ' ELT ' ; cases.Reason_for_Case__c = ' ELT Provider Switch '; cases.recordTypeId = System.label.DDI_Provider_Switch_State_Record_Type_Id ; insert cases; List<Case> caseList = [Select Id, subject,CaseEmail__c from Case where id =: cases.Id ]; createChildCase.createChildCase(new list<list<Id>>{Cases.Id}); System.assertEquals('yadavsahil463@gmail.com',Cases.SuppliedEmail ); } }
I am facing issue on how we can pass the list of case<Ids > in test class
Any Suggestion would be really appreciable!!!!
Replace createChildCase.createChildCase(new list<list<Id>>{Cases.Id});
with below code. If this helps, Please mark it as best answer.
Thanks!!