function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Sahil YadavSahil 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.
 
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!!!!
AnkaiahAnkaiah (Salesforce Developers) 
Hi Sahil,

Replace createChildCase.createChildCase(new list<list<Id>>{Cases.Id});
with below code.
createChildCase.createChildCase(caseList[0].id);
If this helps, Please mark it as best answer.

Thanks!!