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
Revati BhavsarRevati Bhavsar 

Test class for before insert,before update trigger

Hello,
        Below is my trigger which runs before insert before update.Can anyone help me in writing a test class for it?

trigger appTrigger on Applicant__c (before insert,before update){

    public CustBusinessPro__Criteria__c Criteria {get;set;}
    public List < CustBusinessPro__Criteria__c > criteriaList {get;set;}
     boolean status;
   CustBusinessPro__Applicant__c app1;



   
    boolean outerBreak = false;
 
    String test;
    criteriaList=new LIST<CustBusinessPro__Criteria__c>([SELECT Id,Name,CustBusinessPro__Operations__c,CustBusinessPro__Where_Clause__c,CustBusinessPro__Loan_Type__c FROM CustBusinessPro__Criteria__c] );
    
    for(CustBusinessPro__Criteria__c cd: criteriaList){
         if(outerBreak) break;
        
            for(CustBusinessPro__Applicant__c app:Trigger.new){
            
     if(app.CustBusinessPro__Type_of_Loan__c==cd.CustBusinessPro__Loan_Type__c)
         {
            // System.debug('>>>>>>>>>>>>>>>>>'+ cd.CustBusinessPro__Where_Clause__c);
            test=cd.CustBusinessPro__Where_Clause__c;
            test=test.replaceAll('AND','&&');
            test=test.replaceAll('OR','||');

            test=test.replaceAll('CustBusinessPro__Age__c',String.valueOf(app.CustBusinessPro__Age__c));
            test=test.replaceAll('CustBusinessPro__Gender__c ','\'' + app.CustBusinessPro__Gender__c  + '\'');
            test=test.replaceAll('CustBusinessPro__Country__c','\'' + app.CustBusinessPro__Country__c + '\'');
            test=test.replaceAll('CustBusinessPro__City__c','\'' + app.CustBusinessPro__City__c + '\'');
            test=test.replaceAll('CustBusinessPro__Salary__c',String.valueOf(app.CustBusinessPro__Salary__c));
            test=test.replaceAll('CustBusinessPro__Marital_Status__c','\'' + app.CustBusinessPro__Marital_Status__c + '\'');
           
           
        
          
           Boolean b=EvaluateString.evaluateStringToBoolean(test);
            System.debug('>>>>>>>>>>>>>>>>> string is'+ test+'---------------bValue'+b);
            if(b)
            {  
               Boolean result1,result2,result3,result6;
               Boolean flag=true; 
               Decimal result4,result5;
              System.debug('Criteria satisfied'+cd);
              System.debug('operations----'+cd.CustBusinessPro__Operations__c);
              String[] operations=cd.CustBusinessPro__Operations__c.split(',');
              System.debug('splitted operations>>>>'+operations);
              for(String str:operations)
              { 
                
                  if(str == 'PAN_Check')
                 { system.debug('inside  pan');
                   PAN_Check pan = new PAN_Check();
                   result1=pan.PanCheck(app.CustBusinessPro__PAN__c,app.CustBusinessPro__Last_Name__c);
                  system.debug('>>>>>>>>returned value resultPan'+result1);
                  if(result1==false)
                  {flag=false;
                   break;}
                 }
                 else if(str == 'De_Dup')
                 {
                    system.debug('inside de_dup');
                    De_Dup d = new De_Dup();
                    result2=d.DeDup(app.CustBusinessPro__PAN__c,app.CustBusinessPro__Type_of_Loan__c);
                    system.debug('>>>>>>>>returned value resultDeDUP'+result2);
                    if(result2==false)
                {flag=false;
                   break;}
                 }
                 else if(str == 'CIBIL Verification')
                 {
                  system.debug('inside cibil');
                  CIBILVerification cibil=new CIBILVerification();
                  result3=cibil.CIBILCheck(app.CustBusinessPro__CIBIL_Score__c);
                   system.debug('>>>>>>>>returned value resultCibil'+result3);
                  if(result3==false)
                  {flag=false;
                   break;}
                 }
                 else if(str == 'Eligibility Verification')
                 {
                 system.debug('inside eligibilty');
                 EligibilityVerification elig=new EligibilityVerification();
                 result4=elig.EligibilityCheck(app.CustBusinessPro__Salary__c,app.CustBusinessPro__Type_of_Loan__c,app.CustBusinessPro__Loan_Amount__c);
                 system.debug('>>>>>>>>returned value resultElig'+result4);
                 }
                 else if(str == 'EMI Verification')
                 {
                    system.debug('inside EMI');
                    EMI_Calculation emi = new  EMI_Calculation();
                   result5= emi.EMICalculation(app.CustBusinessPro__Loan_Amount__c,app.CustBusinessPro__Loan_Tenure__c);
                   system.debug('>>>>>>>>returned value resultEMI'+result5);
                 }
                 else if(str == 'NegativeAreaCheck')
                 {
                   system.debug('inside NAC');
                   NegativeAreaCheck NAC = new NegativeAreaCheck();
                   result6=NAC.PincodeCheck(app.CustBusinessPro__Postal_Code__c);
                   system.debug('>>>>>>>>returned value resultNAC'+result6);
                  if(result6==false)
                  {flag=false;
                   break;}
                 }
              }
              //app1 = [Select CustBusinessPro__Sucess_Msg__c from CustBusinessPro__Applicant__c  where id=: app.id];
                if(flag==false)
                {  System.debug('-----operations terminated');
                  // app.addError('The loan could not be granted!');
                  app.CustBusinessPro__Sucess_Msg__c = 'Fail';
                   status=false;
                    outerBreak = true;
                   break;
                }
                if(flag==true)
                  app.CustBusinessPro__Sucess_Msg__c = 'Pass';
            }
            else
            {
              System.debug('Criteria not satisfied');
             // app.addError('The loan could not be granted.');
             app.CustBusinessPro__Sucess_Msg__c = 'Fail';
              status=false;
            }
    }
   else{ break;}
}

}
if(outerbreak){
 status=false;  
 system.debug('-----all out');
}
else{
status=true;

}

}
Thanks in advance!!
Srinivas SSrinivas S
Trigger format for your scenario -
@isTest
private class TestAppTrigger {
	static void testMethod testApp() {
		Applicant__c  applicant = new Applicant__c (Name='Test');
		//Note: populate all the mandatory fields.
		insert applicant;
		
		applicant.name = 'test2';
		//Note: do some update on the appropriate fields
		update.
	}
}

------------
Thanks,
Srinivas
- Please mark as solution if your problem is resolved.