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
aparna d 1aparna d 1 

facing issues with test class

How to write a test  class on below code. please help me.Thanks in advance

public void selectOD(){
        IdList.clear();
        selectedOD.clear();
        selectedODOP.clear();
        
       for(oppwrapper ow : soplist) {
            
            if(ow.selected == true){
                mandatePD.put(ow.subopp.Id,ow.ODMap);
                SelectedQuotes.put(ow.subopp.Id,ow.ODMap);
                if(!IdList.containsKey(ow.ODMap)){
                     IdList.put(ow.ODMap, new List<String>{ow.subopp.Id});
                    }else{
                     IdList.get(ow.ODMap).add(ow.subopp.Id);
                    }
                if(ow.subopp.recordtype.name == ' Services'){
                    if(!selectedODOP.containsKey(ow.ODMap)){
                     selectedODOP.put(ow.PDMap, new List<String>{ow.subopp.description});
                    }else{
                     selectedODOP.get(ow.ODMap).add(ow.subopp.description);
                    }
                }
                else if(ow.subopp.recordtype.name != 'machinery'){
                    if(!selectedPD.containsKey(ow.ODMap)){
                     selectedPD.put(ow.ODMap, new List<String>{ow.subopp.description});
                    }else{
                     selectedPD.get(ow.ODMap).add(ow.subopp.description);
                    }
                }               
            }
        }
public pagereference save(){
    try{
        selectOD();
        List<Screening__c> creditapproval = new List<Screening__c>();
        String solarentity;
        String paymentterms;
        String payschedule;
        List<Opportunity> AllOpps = new List<Opportunity>();
        id Creditrectypeid =Schema.SObjectType.Screening__c.getRecordTypeInfosByName().get('Approval').getRecordTypeId();
        creditapproval=[Select id,Name,Solar_Entity__c,Invoice_Payment_Terms__c,Percentages__c,from Screening__c where Related_Opportunity__c=:masterOppID AND recordtypeid=:Creditrectypeid order by CreatedDate desc limit 1];
        
        For(Screening__c creditobj:creditapproval){
            
            solarentity= creditobj.Solar_Entity__c;
            paymentterms=creditobj.Invoice_Payment_Terms__c;
            payschedule=creditobj.Percentages__c;
        }
        
        pdcommon=new ProjectCreation.wrappdheader(pd.PO_Status__c,SelectedrevRecMethod,Selectedsplitship,Selectedpartialship,Selectedfreightbill,
                                 monthsNonOp,monthsOp,expandWarrnty,SelectedtechTrain,wrntynotes,paymentterms,payschedule,jobcode,solarEntity); 
        AllOpps.addall(selectedsubopps.values());
                boolean pdmandate=false;
                for(string s:mandateOD.values()){
                system.debug('$$$$$$'+s);
                    if(s == null){                   
                        pdmandate = true;                       
                    }
                }
                if(pdmandate == true){
                    ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Kindly select the PD'));                       
                }
                else{
                    system.debug('master project id: '+mp.id);
                    if(mp.Revenue_Lock__c == 'Lock'){
                    mp.Revenue_Lock__c = 'Unlock';
                    update mp;}
                    Creation.createPDHeader(mp,AllOpps,pdcommon,selectedOD,selectedODOP,SelectedQuotes,OppIds,IdList);    
                    return new PageReference('/'+mp.Id);
                }
       }
       catch (Exception e){
            System.debug('An exception occurred: ' + e.getMessage());
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,e.getDMLMessage(0)));
            
      }
      return null;
    }