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
roshrosh 

Please help me to write this test class? its urgent

//trigger by Raktim to restrict creation of PO based on Payment term (date:04/08/2022)

public class VConnect_PurchaseOrderTriggerHelper {
    public static void beforeInsert(List<VConnect_Purchase_Order__c> purOrdr){
        Id primaryInvRecId= Schema.SObjectType.Account.getRecordTypeInfosByName().get('Distributor').getRecordTypeId();
        Account accountId = [SELECT Id,VConnect_Days__c FROM Account WHERE OwnerId=: System.UserInfo.getUserId() AND RecordTypeId =:primaryInvRecId LIMIT 1];
        Set<String> payTerm = new Set<String>();
        for(VConnect_Purchase_Order__c varP : purOrdr){
            payTerm.add(varP.VConnect_Payment_Term__c);
        }
        
        List<VConnect_Payment_Term__c> payTermList = [SELECT Id,Name,VConnect_Days__c,VConnect_Payment_Term__c,VConnect_Payment_Term_Description__c
                                                          FROM VConnect_Payment_Term__c WHERE Name IN:payTerm];

        
        for(VConnect_Purchase_Order__c varPO : purOrdr){
            for(VConnect_Payment_Term__c varPT : payTermList){
                if(varPT.VConnect_Days__c > accountId.VConnect_Days__c){
                    varPO.addError('Payment Term Days exceeding, select less no of days');
                }
            }
        }
    }
}
AnkaiahAnkaiah (Salesforce Developers) 
Hi Rosh,

Try with below code and modify the test data.
@isTest
private class VConnect_PurchaseOrderTriggerHelperTest {
    static testMethod void testvpomethod(){
        
		//insert the mandatory data
        Account a = new Account(name='test acc',phone='9494146144',VConnect_Days__c='20');
        insert a;
		
		//insert the mandatory data
		VConnect_Payment_Term__c vpt = new VConnect_Payment_Term__c();
		vpt.Name = 'test';
		vpt.VConnect_Days__c ='30';
		insert vpt;
		
		//insert the mandatory data
		VConnect_Purchase_Order__c vpo = new VConnect_Purchase_Order__c();
		vpo.Name ='test vpo';
		vpo.VConnect_Payment_Term__c = vpt.id;
		insert vpo;
		
		VConnect_PurchaseOrderTriggerHelper.beforeInsert(vpo);
		
        
     }
 }

If this helps, Please mark it as best answer.

Thanks!!​​​​​​​