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
r_wick007r_wick007 

Not able to cover 100 in test class?

public static void updateRelatedCases(Set<Id> caseIdSet,Map<id,id> oldDupCaseMap){
        try{
            Set<Id> caseRecordTypeIds=new Set<Id>();
            caseRecordTypeIds.add(Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('Product_Inquiry').getRecordTypeId());
            caseRecordTypeIds.add(Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('Order_Inquiry').getRecordTypeId());
            //added by Purujeet for merging two queries
            List<Id> finalcaseIdList = new List<Id>();
            finalcaseIdList.addAll(caseIdSet);
            finalcaseIdList.addAll(oldDupCaseMap.values());

            List<Case> casesToUpdate=new list<Case>();
            Map<id,case> oldCaseMapQuery=new Map<id,Case>();
                  
            for (Case caseVar: [Select Id,CaseNumber from Case where RecordTypeId in:caseRecordTypeIds and Id in :finalcaseIdList]){

                if (caseIdSet.contains(caseVar.Id)){
                    casesToUpdate.add(caseVar);
                }
                if(oldDupCaseMap.values().contains(caseVar.Id)){
                    oldCaseMapQuery.put(caseVar.Id, caseVar);
                }
            }
            //END
            //List<Case> casesToUpdate=[select Id from Case where RecordTypeId in:caseRecordTypeIds and Id in:caseIdSet];
            //Map<id,case> oldCaseMapQuery=new Map<id,Case>([select Id,caseNumber from Case where  Id in:oldDupCaseMap.values()]);
            //purujeet to update to make sure weonly use onwe query
                                          
                                        
            for(Case objCase:casesToUpdate){

                objCase.Status='Closed';
                objCase.Sub_Status__c='Duplicate';
                objCase.CaseClosureReason__c='Duplicate Case';
                objCase.isVerificationCompleted__c=true;
                objCase.Resolution__c='Duplicate Case for '+oldCaseMapQuery.get(oldDupCaseMap.get(objCase.Id)).caseNumber;
            }
                                        
            if(!casesToUpdate.isEmpty()){
                update casesToUpdate;
            }
        }catch(Exception e){
            System.debug('Exception-->'+e);
        }
    }

test class
@isTest
    public static void updateRelatedCases()
    {
        Test.startTest();
        Account account1 = new Account(Name = 'Custom Account');
        insert account1;
        
        // Contact with  Account
        Contact contact1 = new Contact(
            FirstName = 'test',
            LastName = 'test',
            AccountId = account1.Id,
            Email = 'test2@test2-unique-address.com');
        insert contact1;
       
        Set<Id> caseRecordTypeIds=new Set<Id>();
        Id recordTypeId1 = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('Product_Inquiry').getRecordTypeId();
        Id recordTypeId2 =  Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('Order_Inquiry').getRecordTypeId();
        caseRecordTypeIds.add(recordTypeId1);
        caseRecordTypeIds.add(recordTypeId2);
        
        Set<Id> caseIdSet = new Set<Id>() ;
        Case case1 = new Case(
            Subject = 'Test Subject',
            Status = 'New',Origin = 'Web',
            ContactId = contact1.Id,
            AccountId = account1.Id,
            RecordTypeId = recordTypeId1);
            caseIdSet.add(case1.id);  
       
       insert case1;
        
       // Set<Id> caseIdSet = new Set<Id>() ;
        Map<Id, Id> oldDupCaseMap = new Map<Id, Id>();
        
        EmailMessage emailMessage1= new EmailMessage();
        emailMessage1.status      = '3'; // email was sent
        emailMessage1.fromAddress = 'sender@example.com'; // from address
        emailMessage1.fromName    = 'Dan Perkins'; // from name
        emailMessage1.subject     = 'This is the Subject!'; // email subject
        emailMessage1.htmlBody    = '<html><body><b>Hello</b></body></html>'; // email body
        emailMessage1.toAddress   = 'emailnotinsalesforce@toexample.com, anotherone@toexample.com';
        insert emailMessage1;  
        
        EmailMessage emailMessage2= new EmailMessage();
        emailMessage2.status      = '3'; // email was sent
        emailMessage2.fromAddress = 'sender@example.com'; // from address
        emailMessage2.fromName    = 'Dan Perkins'; // from name
        emailMessage2.subject     = 'This is the Subject!'; // email subject
        emailMessage2.htmlBody    = '<html><body><b>Hello</b></body></html>'; // email body
        emailMessage2.toAddress   = 'emailnotinsalesforce@toexample.com, anotherone@toexample.com';
        insert emailMessage2;  
        
        List<Case> casesToUpdate=new list<Case>();
        Map<id,Case> oldCaseMapQuery=new Map<id,Case>();
        
        for(Case caseVar :[Select Id,CaseNumber from Case where RecordTypeId in:caseRecordTypeIds])
        {
            if(caseIdSet.contains(caseVar.Id)){
                casesToUpdate.add(caseVar);
            }   
            if(oldDupCaseMap.values().contains(caseVar.Id)){
                oldCaseMapQuery.put(caseVar.Id, caseVar);
            }
        }
        /**/
        for(Case caeVar:casesToUpdate){

                caeVar.Status='Closed';
                caeVar.Sub_Status__c='Duplicate';
                caeVar.CaseClosureReason__c='Duplicate Case';
                caeVar.isVerificationCompleted__c=true;
                caeVar.Resolution__c='Duplicate Case for '+oldCaseMapQuery.get(oldDupCaseMap.get(caeVar.Id)).caseNumber;
            }
                                        
            if(!casesToUpdate.isEmpty()){
                update casesToUpdate;
            }
        
        EmailMessageHandler.updateRelatedCases(caseIdSet, oldDupCaseMap);
        Test.stopTest();
    }

​​​​​​​
Suraj Tripathi 47Suraj Tripathi 47
Hi Rahul,

You can take reference from the below test class:-
@isTest
    public static void updateRelatedCases()
    {
        Test.startTest();
        Account account1 = new Account(Name = 'Custom Account');
        insert account1;
        
        Contact contact1 = new Contact(
            FirstName = 'test',
            LastName = 'test',
            AccountId = account1.Id,
            Email = 'test2@test2-unique-address.com');
        insert contact1;
        
        Set<Id> caseRecordTypeIds=new Set<Id>();
        Id recordTypeId1 = Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('Product_Inquiry').getRecordTypeId();
        Id recordTypeId2 =  Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('Order_Inquiry').getRecordTypeId();
        caseRecordTypeIds.add(recordTypeId1);
        caseRecordTypeIds.add(recordTypeId2);
        
        Set<Id> caseIdSet = new Set<Id>() ;
        Case case1 = new Case(
            Subject = 'Test Subject',
            Status = 'New',Origin = 'Web',
            ContactId = contact1.Id,
            AccountId = account1.Id,
            RecordTypeId = recordTypeId1);
        
        insert case1;
        caseIdSet.add(case1.id);
        Map<Id, Id> oldDupCaseMap = new Map<Id, Id>();
        oldDupCaseMap.put(case1.id,case1.id);
        
        EmailMessageHandler.updateRelatedCases(caseIdSet, oldDupCaseMap);
        Test.stopTest();
    }

In case you find any other issue please mention. 
If you find your Solution then mark this as the best answer. 
r_wick007r_wick007

Hi Suraj, That's worked. Thanks! 

Can you expalin a bit What I was doing wrong and how did you approch so that I can learn.