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
Sri 7Sri 7 

how to write test class for this batch class

global class ZuoraProductRatePlanChargeHandlerBatch implements Database.Batchable<sObject>
{    
    global Database.QueryLocator start(Database.BatchableContext BC){
        String Query ='SELECT Id, Rate_Plan_Charge__c, Rate_Plan_Charge__r.Invoice_Display_Name__c,Subscription_Product_Charge__c,Subscription_Product_Charge__r.PRPC_Invoice_Display_Name__c,Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__r.id,Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__r.PRPC_Invoice_Display_Name__c FROM SPG_Product_User__c WHERE Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__c != null'; 
        return database.getQueryLocator(query);
    }
    global void execute(Database.BatchableContext Bc, List<SPG_Product_User__c> puList){        
        map<id, Zuora__SubscriptionRatePlan__c> mapValues = new Map<Id, Zuora__SubscriptionRatePlan__c>();
        for(SPG_Product_User__c pu:puList){
            if(pu.Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__r.PRPC_Invoice_Display_Name__c != null &&  pu.Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__r.PRPC_Invoice_Display_Name__c == pu.Subscription_Product_Charge__r.PRPC_Invoice_Display_Name__c){
            
            }else if(pu.Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__r.PRPC_Invoice_Display_Name__c == null || (pu.Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__r.PRPC_Invoice_Display_Name__c != null &&  pu.Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__r.PRPC_Invoice_Display_Name__c != pu.Subscription_Product_Charge__r.PRPC_Invoice_Display_Name__c))
            {
                if (!mapValues.containsKey(pu.Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__c)){
                    Zuora__SubscriptionRatePlan__c tempSRP = new Zuora__SubscriptionRatePlan__c();
                        tempSRP.Id=pu.Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__r.id;                    
                        tempSRP.PRPC_Invoice_Display_Name__c = pu.Subscription_Product_Charge__r.PRPC_Invoice_Display_Name__c != null ? pu.Subscription_Product_Charge__r.PRPC_Invoice_Display_Name__c : pu.Rate_Plan_Charge__r.Invoice_Display_Name__c;
                        mapValues.put(tempSRP.Id,tempSRP);
                } 
                else {
                        mapValues.get(pu.Subscription_Product_Charge__r.Zuora__SubscriptionRatePlan__c).PRPC_Invoice_Display_Name__c = pu.Subscription_Product_Charge__r.PRPC_Invoice_Display_Name__c != null ? pu.Subscription_Product_Charge__r.PRPC_Invoice_Display_Name__c : pu.Rate_Plan_Charge__r.Invoice_Display_Name__c;
                }
            }
        } 
        if(mapValues.size() >0 ){
            update mapValues.values();
            
        }        
    }
    global void finish(Database.BatchableContext BC){        
    }
}


Thanks in Advance