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
amritamrit 

Not getting coverge for frmula field

Hi,

 

Im not able to get coverage for formula field.there is a formula field named stage in RFP__c  which is taking value form Opportunity stage.Imgetting 0 coverage if i used opportunity in test class otherwise it is 65%

This is the test class

@isTest
private class TestRFPupdatevaluesTrigger{
 
  static testmethod void testTriggerMethod(){
        try{
            
            Account a= new Account(Name='AccTest1');
             Test.starttest();
            insert a;
           
               Account_Region_c__c ar = new Account_Region_c__c(Name='APAC',Origin_Parent__c=a.id);
                insert ar;
            
               Account_Entity__c ae=new Account_Entity__c(Name='Test12',Account_Region__c=ar.id);
                insert ae;
            
                Contact c=new Contact(LastName='Test1',Account_Region__c=ar.id,Accounts_Entity__c=ae.id);
                insert c;
                                CPI__c cpi=new CPI__c(Completes_Required__c=100,Name='General',Incidence_Rate__c=0.01,Bid_LOI_in_minutes__c=5,Audience__c='Gen Pop',Market__c='India',Actual_CPIchanged__c=3);
                insert cpi;
                CPI__c cpi1=new CPI__c(Completes_Required__c=0,Name='General',Incidence_Rate__c=0.01,Bid_LOI_in_minutes__c=0,Audience__c='Gen Pop',Market__c='India',Actual_CPIchanged__c=0);
                insert cpi1;
                List<RFP__c > rfplist= new List<RFP__c >();
                RFP__c rf=new RFP__c(Name='a',Rate_Card__c='General',Completes_Required__c=100,Incidence_Rate__c=0.01,Bid_LOI_in_minutes__c=5,Audience__c='Gen Pop',Market__c='India');
                insert rf;

               RFP__c rf1=new RFP__c(Name='b',Rate_Card__c='General',Completes_Required__c=0,Incidence_Rate__c=0.0,Bid_LOI_in_minutes__c=0,Audience__c='B2B',Market__c='India');
                insert rf1;
                
                
                 rf=cpi.Actual_CPIchanged__c;
                 rf=cpi.Actual_CPIchanged__c;
                 
                 rf1.Actual_CPI__c=cpi1.Actual_CPIchanged__c;
                 rf1.Proposed_CPI__c=cpi1.Actual_CPIchanged__c;
                System.assertEquals(3, rf.Actual_CPI__c);
                System.assertEquals(0, rf1.Actual_CPI__c);
                update rf;
                update rf1;
                rfplist.add(rf);
                rfplist.add(rf1);


              

Below code is not getting coverage:

 for(RFP__c r : trigger.new){

 

    if((r.Audience__c == 'B2B' || r.Audience__c == 'Gen Pop') && r.Stage__c == 'RFP_Received')
    {    
        aud.add(r.Audience__c);
    }
   
   
}



//If audience is B2B or Genpop
try{
if(aud.size()>0){
    Map<Decimal, CPI__c> cpi1 = new Map<Decimal, CPI__c>();
 
    for(CPI__c obj1 : [SELECT Id, Bid_LOI_in_minutes__c,Actual_CPI__c,Incidence_Rate__c,Actual_CPIchanged__c,Audience__c,Stage__c, Completes_Required__c,Name,Market__c  FROM CPI__c WHERE    (Bid_LOI_in_minutes__c IN :bid
                               AND  Completes_Required__c IN: comp AND Incidence_Rate__c IN:inc AND Audience__c IN:aud AND Name IN:ratecard AND Market__c IN:market)]){
        cpi1.put(obj1.Completes_Required__c , obj1);
        system.debug('CPI'+cpi1);
    }
 
 
    if(cpi1.size()>0){
    
         
        
           for(RFP__c r2 :trigger.new){
                
                        r2.Actual_CPI__c = cpi1.get(r2.Completes_Required__c).Actual_CPIchanged__c;
                        if(r2.Proposed_CPI__c == 0.00 )
                    {
                        r2.Proposed_CPI__c= cpi1.get(r2.Completes_Required__c).Actual_CPIchanged__c;
                                         }
                               
    
    }
   }
    else{
        
           for(RFP__c  r2 : trigger.new){
             
               r2.Actual_CPI__c =0.00;
            }
             
    }
}    
}

catch(exception e){
}


}
           
                           
     

 

 

Vinita_SFDCVinita_SFDC

Hello,

 

Formula fields are calculated once the record is updated or inserted, so to get values in test class you need to insert or update your record before using the formula field value in test class.

amritamrit

Thanks Vinita for your reply. I have field in opportunity named Stage__c which is populating in formula in RFP__c .

i tried to insert opportunity before inserting rfp object but code coverage is getting 0%.

Thanks

Vinita_SFDCVinita_SFDC

Hello,


Formula fields are calculated at query time. After you insert the opportunity, query for it, selecting the formula field value and it should work out.

amritamrit

Hi vinita,

 

I tried to use like this.Still gettiomng 65%only

 

RFP__c rf1=new RFP__c(Name='b',Rate_Card__c='General',Completes_Required__c=0,Incidence_Rate__c=0.0,Bid_LOI_in_minutes__c=0,Audience__c='B2B',Market__c='India');
insert rf1;
rf.Actual_CPI__c=cpi.Actual_CPIchanged__c;
rf.Proposed_CPI__c=cpi.Actual_CPIchanged__c;
rf1.Actual_CPI__c=cpi1.Actual_CPIchanged__c;
rf1.Proposed_CPI__c=cpi1.Actual_CPIchanged__c;
update rf;
update rf1;
RFP__c rf2 = [select id,Stage__c from RFP__c where id=:rf.id]; //then compare the formula field value with wat u expect in it based on ur understanding of the formula System.assertEquals(rf2.stage__c, your_expected_value)
System.assertEquals(rf2.Stage__c,'RFP__Received');
rfplist.add(rf);