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
Durvesh Shah 8Durvesh Shah 8 

Need help to cover this code with test class.

public class TriggerOnOfferInvoiceClass {
    public static Boolean isFirstTime = true; // to stop Recursiveness    
    public static void updateOfferAndInvoice(List<TOOH_Offer__c> triggerNew, Map<Id, TOOH_Offer__c> triggerNewMap, Map<id, TOOH_Offer__c> triggerOldMap) {
      List<Invoice__c> invs = new List<Invoice__c>();
        List<TOOH_Offer__c> offs = new List<TOOH_Offer__c>();
        Set<Id> duplicateSet = new Set<Id>();
        Set<Id> dup = new set<Id>();
        Set<Id> offIds = new Set<Id>();
        System.debug('triggerNew '+triggerNew);
        System.debug('triggerOldMap '+triggerOldMap);
        for(TOOH_Offer__c off : triggerNew){
            System.debug('1 '+ off.BC_NBC__c +' '+triggerOldMap.get(off.id).BC_NBC__c );
            //System.debug('2 '+ off.Percentage __c +' '+triggerOldMap.get(off.id).Percentage__c );
            System.debug('3 '+ off.Name +' '+triggerOldMap.get(off.id).Name );
            System.debug('4 '+ off.TOOH_Kind_Attn__c +' '+triggerOldMap.get(off.id).TOOH_Kind_Attn__c );
            System.debug('5 '+ off.Owner +' '+triggerOldMap.get(off.id).Owner );
            /*
            System.debug('1 @@@'+ off.BC_NBC__c != triggerOldMap.get(off.id).BC_NBC__c );
            System.debug('2 '+ String.valueOf(off.Percentage__c) != String.valueOf(triggerOldMap.get(off.id).Percentage__c) );
            System.debug('3 '+ off.Name != triggerOldMap.get(off.id).Name );
            System.debug('4 '+ off.TOOH_Kind_Attn__c != triggerOldMap.get(off.id).TOOH_Kind_Attn__c );
            System.debug('5 '+ String.valueOf(off.Owner) != String.valueOf(triggerOldMap.get(off.id).Owner) );
            */
            
            if(off.BC_NBC__c != triggerOldMap.get(off.id).BC_NBC__c 
               || String.valueOf(off.Percentage__c) != String.valueOf(triggerOldMap.get(off.id).Percentage__c)
               || off.Name != triggerOldMap.get(off.id).Name
               || off.TOOH_Kind_Attn__c != triggerOldMap.get(off.id).TOOH_Kind_Attn__c || String.valueOf(off.Owner) != String.valueOf(triggerOldMap.get(off.id).Owner)){
                   System.debug('offerId in IF '+off.Id);
              offIds.add(off.Id);
                   
               }
            System.debug('offerId out IF '+off.Id);
        }
        system.debug('!! +'+offIds);
        
        for(Invoice_Item__c obj : [SELECT Id, Invoice__c, Offer__c from Invoice_Item__c WHERE Offer__c IN :offIds ]){
            if(duplicateSet.contains(obj.Invoice__c))
                continue;
            
            duplicateSet.add(obj.Invoice__c);
            Invoice__c inv = new Invoice__c(
                Id=obj.Invoice__c,
                BC_NBC__c=triggerNewMap.get(obj.offer__c).BC_NBC__c, 
                Percentage__c=triggerNewMap.get(obj.offer__c).Percentage__c, 
                Brand_Name__c=triggerNewMap.get(obj.offer__c).Name, 
                Contact_Person__c=triggerNewMap.get(obj.offer__c).TOOH_Kind_Attn__c, 
                User__c=triggerNewMap.get(obj.offer__c).OwnerId
            );            
            invs.add(inv);            
        }
        if(invs.size() > 0){
            update invs;
        }
        system.debug(''+invs);

        
    for(Invoice_Item__c itobj : [SELECT Id, offer__c, invoice__c, 
                                     invoice__r.BC_NBC__c, invoice__r.Percentage__c, invoice__r.Brand_Name__c, 
                                     invoice__r.User__c, invoice__r.Contact_person__c
                                     from Invoice_Item__c WHERE Invoice__c IN :duplicateSet AND Offer__c NOT IN : offIds ]){
                                         
          if(dup.contains(itobj.offer__c))
                continue;
            dup.add(itobj.Offer__c);
            TOOH_Offer__c obj = new TOOH_Offer__c(
              id = itobj.Offer__c,
                BC_NBC__c = itobj.invoice__r.BC_NBC__c,
                Percentage__c = itobj.invoice__r.Percentage__c,          
                Name = itobj.invoice__r.Brand_Name__c,        
                TOOH_Kind_Attn__c = itobj.invoice__r.Contact_Person__c,
                OwnerId = itobj.invoice__r.User__c
                    
            );
            offs.add(obj);
        }
        
        if(offs.size() > 0){
            update offs;
        }
        system.debug(''+offs);
            
    }
}