You need to sign in to do that
Don't have an account?
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){
}
}
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.
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
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.
Hi vinita,
I tried to use like this.Still gettiomng 65%only