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
JaiJai 

Could you pls help me to write test class for the below code

Apex class
------------


public class NASurveyHandler {
    
    Public static Boolean naSurveyCheck = false;
    
    Public static void naServeycriteria(List<Case> caseList,map<id,Case> oldMap) {
        Set<Id> caseRecordID = new Set<Id>();
        Map<String,String> caseSurveyMap =  new Map<String,String>();
        Map<String,String> caseSurvey2Map =  new Map<String,String>();
        Map<ID, RecordType> recordTypeMap = New Map<ID, RecordType>([Select ID, Name From RecordType Where sObjectType = 'Case']);
        for(Case caseRecord : caseList)
            {
                /*if(recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Consumer Complaints') && (caseRecord.Pro_Survey__c != null || caseRecord.Pro_Survey_2__c != null)  && caseRecord.Patient_Email_Address__c !=null && caseRecord.Status == 'Closed')
                {
                   if(Trigger.isInsert) {
                    caseRecordID.add(caseRecord.Id);
                       system.debug('case details11 '+caseRecordID);
                } 
                }*/
                naSurveyCheck = true;
                if(Trigger.isUpdate && !oldMap.isEmpty() && recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Consumer Complaint') && (caseRecord.Pro_Survey__c != null && oldMap.get(caseRecord.Id).Pro_Survey__c != caseRecord.Pro_Survey__c) || (caseRecord.Pro_Survey_2__c != null && oldMap.get(caseRecord.Id).Pro_Survey_2__c != caseRecord.Pro_Survey_2__c) && caseRecord.Status == 'Closed' && caseRecord.Status!=oldMap.get(caseRecord.Id).Status) {
                   caseRecordID.add(caseRecord.Id);
                    caseSurveyMap.put(caseRecord.Id,caseRecord.Pro_Survey__c);
                    caseSurvey2Map.put(caseRecord.Id,caseRecord.Pro_Survey_2__c);
                } else if(Trigger.isUpdate && recordTypeMap.get(caseRecord.recordTypeId).name.containsIgnoreCase('Customer Support') && caseRecord.Team_Function__c == 'NA Sales Support' && (caseRecord.Pro_Survey__c == 'Sales Support Team Survey'|| caseRecord.Pro_Survey_2__c == 'Sales Support Team Survey') && caseRecord.Status == 'Closed'  && caseRecord.Status!=oldMap.get(caseRecord.Id).Status ) {
                    caseRecordID.add(caseRecord.Id);
                    caseSurveyMap.put(caseRecord.Id,caseRecord.Pro_Survey__c);
                    caseSurvey2Map.put(caseRecord.Id,caseRecord.Pro_Survey_2__c);
                }
            }
                if(!caseRecordID.isEmpty()) { 
            naServeyInvitation(caseRecordID,caseSurveyMap,Trigger.isUpdate,caseSurvey2Map);
                    
        }

    }
    
    @future
    public static void naServeyInvitation(Set<Id> caseIds,Map<String,String> caseSurveyMap,Boolean isAftrUpdate,Map<String,String> caseSurvey2Map) {
        try {
            final Set<String> setProgramNames = new Set<String>();
            List<Case> caseList;
            caseList = new List<Case> ();
            caseList = [select id,Pro_Survey__c,Pro_Survey_2__c,TFM_Cluster_Contact__c,ContactId,Team_Function__c from case where id in: caseIds WITH SECURITY_ENFORCED];
            List<SurveyInvitation> lstSurveyInvitn ;
            lstSurveyInvitn = new List<SurveyInvitation>();
            for(case caseRecord: caseList) {
                if(caseRecord.Pro_Survey__c != null) {
                    setProgramNames.add(caseRecord.Pro_Survey__c);
                }  
                if(caseRecord.Pro_Survey_2__c != null) {
                    setProgramNames.add(caseRecord.Pro_Survey_2__c); 
                }
                
            }
            
            //Query Survey to get the ID's based on program names
            final Map<String,Id> mapProgramName = new Map<String,Id>();
            
            for(Survey surveyRecord : [select id,name from Survey where name in: setProgramNames WITH SECURITY_ENFORCED]) {
                mapProgramName.put(surveyRecord.name,surveyRecord.id);
            } 
            lstSurveyInvitn = getConsumerCareSurveyInvitationLst(caseList,mapProgramName,isAftrUpdate,caseSurveyMap,caseSurvey2Map);
            //trRecList = getTrainingRecLst(caseList,mapProgramName,isAftrInsert,caseSurveyMap,caseSurvey2Map);
            if (!lstSurveyInvitn.isEmpty() && Schema.sObjectType.SurveyInvitation.isCreateable()) {
                insert lstSurveyInvitn;
            }
            
        } catch(Exception e) {
            final UCB_ExceptionService exceptionService = new UCB_ExceptionService(userinfo.getuserid(), 'NASurveyHandler Error', 'NASurveyHandler Error', '');
            
            exceptionService.add(e);
            
            exceptionService.publish();
        }
    }
    public static List<SurveyInvitation> getConsumerCareSurveyInvitationLst(List<Case> caseList,Map<String,Id> mapProgramName,Boolean isAftrUpdate,Map<String, String> caseSurveyMap,Map<String, String> caseSurvey2Map) {
        SurveyInvitation invitation;
        List<SurveyInvitation> lstSurveyInvitn;
        lstSurveyInvitn = new List<SurveyInvitation>(); 
        for(Case caseRecord : caseList) { 
            if((isAftrUpdate && caseRecord.Pro_Survey__c != null) || (!caseSurveyMap.isEmpty() && caseSurveyMap.containsKey(caseRecord.Id) && caseRecord.Pro_Survey__c != null && caseSurveyMap.get(caseRecord.Id) != caseRecord.Pro_Survey__c)) {
                
                invitation = new SurveyInvitation();
                invitation.TFM_Cluster_Contact__c = caseRecord.TFM_Cluster_Contact__c;
                invitation.Case__c = caseRecord.Id;
                invitation.SurveyId = mapProgramName.get(caseRecord.Pro_Survey__c);
                invitation.name =  caseRecord.Pro_Survey__c;
                lstSurveyInvitn.add(invitation);
                
            }
            if((isAftrUpdate && caseRecord.Pro_Survey_2__c != null) || (!caseSurvey2Map.isEmpty() && caseSurvey2Map.containsKey(caseRecord.Id) && caseRecord.Pro_Survey_2__c != null && caseSurvey2Map.get(caseRecord.Id) != caseRecord.Pro_Survey_2__c)) {
                
                invitation = new SurveyInvitation();
                invitation.TFM_Cluster_Contact__c = caseRecord.TFM_Cluster_Contact__c;
                invitation.Case__c = caseRecord.Id; 
                invitation.SurveyId = mapProgramName.get(caseRecord.Pro_Survey_2__c);
                invitation.name =  caseRecord.Pro_Survey_2__c;
                lstSurveyInvitn.add(invitation); 

                
            }
            
        }
        return lstSurveyInvitn;
    }

}

Thanks!!