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
Andreea TAndreea T 

Please help me write test class, I am having only 64% code coverage

I am having one class which I am getting only 64% code coverage. Please help me out. Here is my class:
public class TriggerCalculateNormalizeInInvoiceGroup implements Triggers.Handler {
    
    public Set<ID> newEntitiesIds = new Set<ID>();
    public Set<ID> oldEntitiesIds = new Set<ID>();
    
    public list<Account> invoicesToUpdate = new list<Account>();
    public list<Account> oldInvoicesToUpdate = new list<Account>();
    
    public list<Account> invToUpdate = new list<Account>();
    public list<Account> oldInvToUpdate = new list<Account>();
    
    public void Handle(){
        storeData();
        processData();
        saveData();
    }   
    
    private void storeData(){
        Map<id,Invoice__c> newInvoices = (Map<ID,Invoice__c>) Trigger.newMap;
        
        for(Invoice__c i: newInvoices.Values()){
            newEntitiesIds.add(i.Account__c);
        }
        
        if(Trigger.isUpdate){
            for(Invoice__c i: (List<Invoice__c>) Trigger.Old){
                if(i.Account__c != newInvoices.get(i.id).Account__c){
                    oldEntitiesIds.add(i.Account__c);
                }
            }
        }
    }
    
    private void processData(){
        for(AggregateResult ar: [SELECT SUM(Normalized_Amount__c) NormalizeAmount, Grouping(Account__c), Account__c
                                 FROM Invoice__c
                                 WHERE Category_Invoice__c != 'Monthly' AND Status__c != 'invoice_canceled' 
                                 AND Account__c IN: newEntitiesIds
                                 GROUP BY Account__c]){
                                     if((ID)ar.get('Account__c') != null){
                                         invoicesToUpdate.add(new Account (
                                             ID = (ID)ar.get('Account__c'),
                                             AllTimeRevenue__c = (Double)ar.get('NormalizeAmount')
                                         ));
                                     }
                                 } 
         for(AggregateResult ar: [SELECT SUM(Normalized_Amount__c) NormalizeAmount, Grouping(Account__c), Account__c
                                 FROM Invoice__c
                                 WHERE Category_Invoice__c != 'Monthly' AND Status__c != 'invoice_canceled' 
                                 AND Date_Invoice__c= THIS_YEAR AND Date_Invoice__c <= TODAY AND Account__c IN: newEntitiesIds
                                 GROUP BY Account__c]){
                                     if((ID)ar.get('Account__c') != null){
                                         invToUpdate.add(new Account (
                                             ID = (ID)ar.get('Account__c'),
                                             YtD_Revenue_for__c = (Double)ar.get('NormalizeAmount')
                                         ));
                                     }
                                 }
        
        if(Trigger.isUpdate){
            for(AggregateResult ar: [SELECT SUM(Normalized_Amount__c) NormalizeAmount, Grouping(Account__c), Account__c
                                     FROM Invoice__c
                                     WHERE Category_Invoice__c != 'Monthly' AND Status__c != 'invoice_canceled' 
                                     AND Account__c IN: oldEntitiesIds
                                     GROUP BY Account__c]){
                                         if((ID)ar.get('Account__c') != null){
                                             oldInvoicesToUpdate.add(new Account (
                                                 ID = (ID)ar.get('Account__c'),
                                                 AllTimeRevenue__c = (Double)ar.get('NormalizeAmount')
                                             ));
                                         }
                                     } 
             for(AggregateResult ar: [SELECT SUM(Normalized_Amount__c) NormalizeAmount, Grouping(Account__c), Account__c
                                     FROM Invoice__c
                                     WHERE Category_Invoice__c != 'Monthly' AND Status__c != 'invoice_canceled' 
                                     AND Date_Invoice__c= THIS_YEAR AND Date_Invoice__c <= TODAY AND Account__c IN: oldEntitiesIds
                                     GROUP BY Account__c]){
                                         if((ID)ar.get('Account__c') != null){
                                             oldInvToUpdate.add(new Account (
                                                 ID = (ID)ar.get('Account__c'),
                                                 YtD_Revenue__c = (Double)ar.get('NormalizeAmount')
                                             ));
                                         }
                                     }
        }
    }
    
    private void saveData(){
        if(!invoicesToUpdate.isEmpty()){
            update invoicesToUpdate;
        }
        if(!invToUpdate.isEmpty()){
            update invToUpdate;
        }
        
        if(Trigger.isUpdate){
            if(!oldInvoicesToUpdate.isEmpty()){
                update oldInvoicesToUpdate;
            }
        }
         if(Trigger.isUpdate){
            if(!oldInvToUpdate.isEmpty()){
                update oldInvToUpdate;
            }
        }
    }
}