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
jrohrerjrohrer 

Test Class for Quote Line Item

Hi,

 

We are struggling with the code coverage for the Trigger below.  The Test Class code is below as well.  Any assistance and/or guidance would be greatly appreciated!!

 

Cheers,

Bindu & Jason

 

 

TRIGGER

trigger UpdateQuote on QuoteLineItem(before insert,before update)

{

        for(QuoteLineItem qout : trigger.New )

        {          

if(qout.Product_Name__c == 'Testing Product')

            {                                                 

if(qout.Annual_Vol__c <> NULL )

                {                                       

if(qout.Annual_Vol__c >=  0 && qout.Annual_Vol__c <= 100000)

                   {                       

                      qout.UnitPrice = 350 ;           

                   }

               }

              qout.Quantity = 1 ;    

           }

     }

 }   

 

 

 

 

TEST CLASS:

@isTest
   public class UpdateQuoteTest{
    //private static testmethod void testGetters()
    
    static testMethod void UpdateQuoteTest()
    {
       // Pricebook2 standardPB = [select id from Pricebook2 limit 1];
       
        Pricebook2 pb = new Pricebook2(Name = 'Standard Price Book 2009', Description = 'Price Book 2009 Products', IsActive = true );
        insert pb;
        Product2 prod = new Product2(Name = 'Testing Product', Family = 'Best Practices', IsActive = true);
        insert prod;
         List<Pricebook2> standardPbList = [select id, name, isActive from Pricebook2 where IsStandard = true ];
     //   PricebookEntry standardPrice = new PricebookEntry(Pricebook2Id = pb.Id, Product2Id = prod.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
    //    insert standardPrice;
    List<PricebookEntry> listPriceBook = new List<PricebookEntry>();
     for(Pricebook2 p : standardPbList ){
      PricebookEntry pbe = New PricebookEntry ();
      pbe = new PricebookEntry(Pricebook2Id = p.Id, Product2Id = prod.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
       listPriceBook.add(pbe);
     }
        insert listPriceBook;
        Opportunity opp = new Opportunity(Name = 'Test Syndicated 2010', Type = 'Syndicated - New', StageName = 'Planning', CloseDate = system.today());
        insert opp;
        List<OpportunityLineItem> opplineList = new List<OpportunityLineItem>();
       for(PricebookEntry pricebook : listPriceBook){
            OpportunityLineItem oli = new OpportunityLineItem ();
            oli  = new OpportunityLineItem(opportunityId = opp.Id, pricebookentryId = pricebook.Id, Quantity = 1, UnitPrice = 7500, Description = '2007 CMR #4 - Anti-Infectives');
            opplineList.add(oli);
       }
       insert opplineList;
     //   List<OpportunityLineItem> olis = [Select Id From OpportunityLineItem Where OpportunityId =: opp.Id];
     //   update olis[0];
        Quote quttest = new Quote (Name = 'qoutetest' , OpportunityId = opp.id , Pricebook2Id = pb.id );
        insert quttest ;
        List<QuoteLineItem> listval = new   List<QuoteLineItem>();
        Integer Annualvalue = 1000 ;
        for(PricebookEntry pricebook : listPriceBook){
            QuoteLineItem qutlineitemtest = new QuoteLineItem ();
            qutlineitemtest = new QuoteLineItem(QuoteId = quttest .id , Quantity = 3.00 ,Annual_Vol__c = Annualvalue ,UnitPrice = 12 , PricebookEntryId = pricebook.id);
            
            listval.add(qutlineitemtest);
            Annualvalue = Annualvalue + 1000;
         }
       insert listval;
    }
}

 

SimonJaiSimonJai

Can you run the test and print the code coverage?

 

Seems to be okay.

Vinit_KumarVinit_Kumar

You are missing (SeeAllData=true).Please change the following in your test class:-

 

from 

 

@isTest

 

to

 

@isTest(SeeAllData=true)

Smiley BinduSmiley Bindu

Error MessageSystem.DmlException: Insert failed. First exception on row 0; first error: FIELD_INTEGRITY_EXCEPTION, The pricebook entry is in a different pricebook than the one assigned to the Quote, or Quote has no pricebook assigned.: [PricebookEntryId]Stack TraceClass.UpdateQuoteTest.UpdateQuoteTest: line 47, column 1

 

I am getting this error when I changed to @isTest(SeeAllData=true).

 

 

Thanks alot for your help.

 

Bindu

Vinit_KumarVinit_Kumar

Bindu,

 

Try below way of testing PricebookEntry in your test class:-

 

Pricebook2 standardPB = [select name, isactive from Pricebook2 where IsStandard = true limit 1];
        
        Pricebook2 prb= new  Pricebook2(Name='Test',Description ='Price Book 2009 Products',IsActive = true);
        insert prb;
        
        Product2 pr = new Product2(Name='Test',IsActive=true);
        insert pr;
        
        PricebookEntry standardPrice = new PricebookEntry(Pricebook2Id = standardPB.Id, Product2Id = pr.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
        insert standardPrice;
        
        PricebookEntry pbe = new PricebookEntry(Pricebook2Id = prb.Id, Product2Id = pr.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
        insert pbe;

Smiley BinduSmiley Bindu

I am getting an error:

Error: Compile Error: expecting right curly bracket, found 'insert' at line 24 column 8

 

@isTest(SeeAllData=true)
public class AmtQuoteTest
{
//private static testmethod void testGetters()
static testMethod void UpdateQuoteTest()
{

Pricebook2 standardPB = [select name, isactive from Pricebook2 where IsStandard = true limit 1];

Pricebook2 prb= new Pricebook2(Name='Standard Price Book 2009',Description ='Price Book 2009 Products',IsActive = true);
insert prb;

Product2 pr = new Product2(Name='Connect Pro - Annual Fee',IsActive=true);
insert pr;

PricebookEntry standardPrice = new PricebookEntry(Pricebook2Id = standardPB.Id, Product2Id = pr.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
insert standardPrice;

PricebookEntry pbe = new PricebookEntry(Pricebook2Id = prb.Id, Product2Id = pr.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
insert pbe;
}
//insert listPriceBook;
Opportunity opp = new Opportunity(Name = 'Test Syndicated 2010', Type = 'Syndicated - New', StageName = 'Planning', CloseDate = system.today());
insert opp;

List<OpportunityLineItem> opplineList = new List<OpportunityLineItem>();
for(PricebookEntry pricebook : listPriceBook)
{
OpportunityLineItem oli = new OpportunityLineItem ();
oli = new OpportunityLineItem(opportunityId = opp.Id, pricebookentryId = pricebook.Id, Quantity = 1, UnitPrice = 7500, Description = '2007 CMR #4 - Anti-Infectives');
opplineList.add(oli);
}
insert opplineList;
// List<OpportunityLineItem> olis = [Select Id From OpportunityLineItem Where OpportunityId =: opp.Id];
// update olis[0];
Quote quttest = new Quote (Name = 'qoutetest' , OpportunityId = opp.id , Pricebook2Id = pb.id );
insert quttest ;
List<QuoteLineItem> listval = new List<QuoteLineItem>();
Integer Annualvalue = 1000 ;
for(PricebookEntry pricebook : listPriceBook)
{
QuoteLineItem qutlineitemtest = new QuoteLineItem ();
qutlineitemtest = new QuoteLineItem(QuoteId = quttest .id , Quantity = 3.00 ,Annual_Vol__c = Annualvalue ,UnitPrice = 12 , PricebookEntryId = pricebook.id);

listval.add(qutlineitemtest);
Annualvalue = Annualvalue + 1000;
}
insert listval;

}

 

Thanks for your help Vinit. 

sai rocks 3sai rocks 3
I am getting an error:
Error: Compile Error: expecting right curly bracket, found 'insert' at line 24 column 8
 
@isTest(SeeAllData=true)
public class AmtQuoteTest
{
//private static testmethod void testGetters()
static testMethod void UpdateQuoteTest()
{

Pricebook2 standardPB = [select name, isactive from Pricebook2 where IsStandard = true limit 1];

Pricebook2 prb= new Pricebook2(Name='Standard Price Book 2009',Description ='Price Book 2009 Products',IsActive = true);
insert prb;

Product2 pr = new Product2(Name='Connect Pro - Annual Fee',IsActive=true);
insert pr;

PricebookEntry standardPrice = new PricebookEntry(Pricebook2Id = standardPB.Id, Product2Id = pr.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
insert standardPrice;

PricebookEntry pbe = new PricebookEntry(Pricebook2Id = prb.Id, Product2Id = pr.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
insert pbe;
}
//insert listPriceBook;
Opportunity opp = new Opportunity(Name = 'Test Syndicated 2010', Type = 'Syndicated - New', StageName = 'Planning', CloseDate = system.today());
insert opp;

List<OpportunityLineItem> opplineList = new List<OpportunityLineItem>();
for(PricebookEntry pricebook : listPriceBook)
{
OpportunityLineItem oli = new OpportunityLineItem ();
oli = new OpportunityLineItem(opportunityId = opp.Id, pricebookentryId = pricebook.Id, Quantity = 1, UnitPrice = 7500, Description = '2007 CMR #4 - Anti-Infectives');
opplineList.add(oli);
}
insert opplineList;
// List<OpportunityLineItem> olis = [Select Id From OpportunityLineItem Where OpportunityId =: opp.Id];
// update olis[0];
Quote quttest = new Quote (Name = 'qoutetest' , OpportunityId = opp.id , Pricebook2Id = pb.id );
insert quttest ;
List<QuoteLineItem> listval = new List<QuoteLineItem>();
Integer Annualvalue = 1000 ;
for(PricebookEntry pricebook : listPriceBook)
{
QuoteLineItem qutlineitemtest = new QuoteLineItem ();
qutlineitemtest = new QuoteLineItem(QuoteId = quttest .id , Quantity = 3.00 ,Annual_Vol__c = Annualvalue ,UnitPrice = 12 , PricebookEntryId = pricebook.id);

listval.add(qutlineitemtest);
Annualvalue = Annualvalue + 1000;
}
insert listval;

}
 
sai rocks 3sai rocks 3
please help me the above error