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
bhanu_prakashbhanu_prakash 

test class creation for lookup update

Help me to create test class for below code , Actually updating on lookup field on another


trigger code :

trigger updatecompany on pse__Expense_Report__c(after insert, after update){
        set<Id> ersIds = new set<Id>();

        // get the ids of the er whose company is not equal to null
        for(pse__Expense_Report__c er : trigger.new){
                if(er.ffpsai__OwnerCompany__c != null || er.ffpsai__OwnerCompany__c != ''){
                        ersIds.add(er.Id);
                }
        }

        List<pse__Region__c> reg = new List<pse__Region__c>();

        // query the export report with the er ids --
        
        for(pse__Region__c er : [select id, name, pse__Expense_Report__r.ffpsai__OwnerCompany__c from pse__Region__c where pse__Region__r.pse__Expense_Report__c  in : ersIds]){
                //assign the company value of er to export report company feidl
                
                er.ffpsai__OwnerCompany__c = er.pse__Expense_Report__r.ffpsai__OwnerCompany__c;

                // add them to the list
                reg.add(er);
        }

        update reg;
}

 
Sukanya BanekarSukanya Banekar
Hi bhanu,
You can simply insert data for pse__Expense_Report__c object
pse__Expense_Report__c obj= new pse__Expense_Report__c();
obj.ffpsai__OwnerCompany__c =''; // keep this blank
insert obj;

create data for pse__Region__c object and give lookup field as inserted above
pse__Region__c obj2= new pse__Region__c ();
obj2.pse__Expense_Report__c = obj.Id 
insert pse__Region__c ;

update obj i.e.pse__Expense_Report__c  and put some comapny name and write update obj

your trigger will get fire.

Let me know if this helps you to solve your problem.

Thanks,
Sukanya Banekar

 
Amol Salve 13Amol Salve 13
Hello Bhanu,
     Please used following test class for you functionality..
@isTest
public with sharing class updatecompanyTestClass {
    public static testmethod void updatecompanyTest(){
        
        List<pse__Expense_Report__c> PERlist = new List<pse__Expense_Report__c>();
        pse__Expense_Report__c PERObj = new pse__Expense_Report__c();
        PERObj.name= 'test';
        PERObj.ffpsai__OwnerCompany__c='Componytest1';
        insert PERObj;
        
        pse__Region__c PRObj = new pse__Region__c();
        PRObj.name = 'PrTest';
        PRObj.pse__Expense_Report__c = PERObj.Id;
        insert PRObj;
        pse__Expense_Report__c PERObjToUpdate = [SELECT Id, ffpsai__OwnerCompany__c, name FROM pse__Expense_Report__c WHERE NAME ='test'];
        test.starttest();
            PERObjToUpdate.ffpsai__OwnerCompany__c = 'Componytest2';
            update PERObjToUpdate;
        test.stopTest();
        pse__Region__c PERObjToUpdate = [SELECT Id, ffpsai__OwnerCompany__c, name FROM pse__Region__c WHERE PRObj.pse__Expense_Report__c = PERObjToUpdate.id];
        system.assertEquals(PERObjToUpdate.ffpsai__OwnerCompany__c, PERObjToUpdate.ffpsai__OwnerCompany__c);
    }
}

Thank you,
Amol Salve
Salesforce Developer