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
Paolo Magliocco 18Paolo Magliocco 18 

Test class AddQuoteLineItem

Hi. I'm writing test class and this cover 15% of code.
Can someone help me to complete test class?
Thank you.

This is code of class :

public class AddQuoteLineItemCtrl {
    
    private final Quote quote{get; set;}
    public integer pageNum {get; set;}
    public ID IDToQuery {get; set;}
    public string nameToQuery {get; set;}
    public ID IDToQuery2 {get; set;}
    public string nameToQuery2 {get; set;}
    public ID standardPricebookID {get; set;}
    public List<PricebookEntry> queryspbe {get; set;}
    public List<Product2> queryprodotti {get; set;}
    public List<Product2> queryprodottifiltrata {get; set;}
    public List<Edizione__c> queryedizioni {get; set;}
    public List<Edizione__c> queryedizionifiltrata {get; set;}
    public Product2 prodottoselezionato {get; set;}
    public Edizione__c edizioneselezionata {get;set;}
    public decimal IVA {get; set;}
    public decimal prezzodilistino {get; set;}
    public integer partecipazionipresenti {get; private set;}
    public integer partecipazionidisponibili {get; set;}
    public Boolean numeropartecipazioninonvalido {get; set;}
    public integer numeropartecipazioni{get;
                                        set{
                                            integer pdisp = partecipazionidisponibili;
                                            if (value <= pdisp){
                                                numeropartecipazioni = value;
                                            } else {
                                                numeropartecipazioninonvalido = TRUE;
                                                numeropartecipazioni = 0;
                                            }
                                        }
                                       }
    public boolean partecipazionisettate {get; set;}
    public List<Partecipazione__c> listapartecipazioni {get; set;}
    public QuoteLineItem qli {get; set;}
    
    public AddQuoteLineItemCtrl(ApexPages.StandardController Ctrl){
        
        if (!Test.isRunningTest()) {ctrl.addfields(new list<string>{'Account.Percentuale_IVA_def__c', 'Opportunity.Account.Id'});}
        this.quote = (Quote)Ctrl.getRecord();
        
        PageNum = 0;
        prodottoselezionato = new Product2();
        edizioneselezionata = new Edizione__c(Ha_Partecipazioni__c=FALSE);
        nameToQuery = '';
        partecipazionipresenti=0;
        partecipazionidisponibili=0;
        numeropartecipazioninonvalido = FALSE;
        partecipazionisettate = FALSE;
        listapartecipazioni = new List<Partecipazione__c>();
        qli = new QuoteLineItem();
        
        //queryprodotti = [SELECT Id, Name, Valuta__c, ProductCode, IsActive, Tipo_prezzo__c, Prezzo_di_listino__c, IVA__c, Tipologia_Prodotto__c, Unit_di_vendita__c FROM Product2 ORDER BY Name ASC];
        standardPricebookID = [SELECT Id FROM Pricebook2 WHERE isStandard=TRUE LIMIT 1][0].Id;
        queryspbe = [SELECT Id, UnitPrice, Product2.Id, Pricebook2.Id FROM PricebookEntry WHERE Pricebook2.Id=:standardPricebookID];
        List<ID> p2list = new List<ID>();
        for (PricebookEntry pbe : queryspbe) {
            p2list.add(pbe.Product2.Id);
        }
        
        queryprodotti = [SELECT Id, Name, A_Catalogo__c, Ha_Edizioni__c, ProductCode, IsActive, Tipo_prezzo__c, Tipologia_Prodotto_def__c, IVA__c, Unit_di_vendita__c FROM Product2 WHERE Id IN :p2list ORDER BY Name ASC];
        queryprodottifiltrata=queryprodotti.clone();
        
        
        
    }
    
    public pageReference search(){
        queryprodottifiltrata.clear();
        for (Product2 p : queryprodotti){
            if (p.Name.toLowerCase().contains(nametoquery.toLowerCase())){
                queryprodottifiltrata.add(p);
            }
        }
        return NULL;
    }
    
    public pageReference search2(){
        queryedizionifiltrata.clear();
        for (Edizione__c p : queryedizioni){
            if (p.Name.toLowerCase().contains(nametoquery2.toLowerCase())){
                queryedizionifiltrata.add(p);
            }
        }
        return NULL;
    }
    
    public pageReference selectname(){
        
        for (Product2 p : queryprodotti){
            if (p.Id == IDtoQuery){
                prodottoselezionato = p;
                break;
            }
        }
        for (PricebookEntry pbe : queryspbe) {
            if (pbe.Product2Id == prodottoselezionato.Id){
                prezzodilistino = pbe.UnitPrice;
            }
        }
        if (prodottoselezionato.IVA__c != quote.Account.Percentuale_IVA_def__c){
            IVA = quote.Account.Percentuale_IVA_def__c;
        } else if (prodottoselezionato.IVA__c != NULL) {
            IVA = prodottoselezionato.IVA__c;
        }
        if (!prodottoselezionato.Ha_Edizioni__c){
            pagenum++;
            pagenum++;
            return NULL;
        }
        queryedizioni = [SELECT Id, Name, Ha_Partecipazioni__c, Data_inizio__c, Data_fine__c, Durata__c, Massimo_numero_di_partecipanti__c, Prodotto__c, Posti_ricevuti__c, Citt_Sede__c, Stato_Provincia_Sede__c, Sede__c FROM Edizione__c WHERE Prodotto__c =: IDtoQuery];
        queryedizionifiltrata = queryedizioni.clone();
        pageNum++;
        return NULL;
    }
    
    public pageReference selectname2(){
        for (Edizione__c e : queryedizioni){
            if (e.Id == IdtoQuery2){
                edizioneselezionata = e;
                break;
            }
        }
        qli.UnitPrice = prezzodilistino;
        partecipazionipresenti = [SELECT Id FROM Partecipazione__c WHERE Edizione__r.Id=:edizioneselezionata.Id].size();
        integer pmax;
        if (edizioneselezionata.Massimo_numero_di_partecipanti__c==NULL){
            pmax=12;
        } else {
            pmax=edizioneselezionata.Massimo_numero_di_partecipanti__c.intValue();
        }
        partecipazionidisponibili = pmax - partecipazionipresenti;
        if (partecipazionidisponibili <= 0) {
                ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.WARNING, 'L\'edizione selezionata non ha posti disponibili (il numero di partecipazioni presenti ha raggiunto il numero massimo di partecipazioni impostato per l\'edizione). Selezionare un\'altra edizione, oppure aumentare il numero di posti disponibili per l\'edizione interessata.'));
            return NULL;
        } else {
        pagenum++;
        return NULL;
        }
    }
    
    public pageReference next(){
        qli.QuoteId=quote.Id;
        qli.Product2Id=prodottoselezionato.Id;
        if(edizioneselezionata.Id != NULL){
            qli.Edizione__c=edizioneselezionata.Id;
        }
        ID pbeID = NULL; 
        for (PriceBookEntry pbe : queryspbe){
        if(pbe.Product2.id==qli.Product2Id){
            pbeID=pbe.ID;
        }        
        }
        qli.PriceBookEntryId=pbeID;
        pagenum++;
        return NULL;
    }
    
    public pageReference salva1(){
        qli.QuoteId=quote.Id;
        qli.Product2Id=prodottoselezionato.Id;
        if(edizioneselezionata.Id != NULL){
            qli.Edizione__c=edizioneselezionata.Id;
        }
        ID pbeID = NULL;
        for (PriceBookEntry pbe : queryspbe){
        if(pbe.Product2.id==qli.Product2Id){
            pbeID=pbe.ID;
        }        
        }
        qli.PriceBookEntryId=pbeID;
        try{
            insert qli;
        } catch (Exception e) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, e.getmessage()));
            return NULL;
        }
        return new PageReference('/' + quote.Id);
    }
    
    public pageReference salva2(){
    
        try{
            insert qli;
        } catch (Exception e) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, e.getmessage()));
            return NULL;
        }
    
        List<Partecipazione__c> listapartecipazioni2 = new List<Partecipazione__c>();
        for (Partecipazione__c p : listapartecipazioni){
            p.Voce_Preventivo__c=qli.Id;
            p.Edizione__c=edizioneselezionata.Id;
            p.Account__c = quote.Opportunity.Account.Id;
            p.Stato__c = 'Partecipante';
            listapartecipazioni2.add(p);
            }
        
        try{
            insert listapartecipazioni2;
        } catch (Exception e) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, e.getmessage()));
            return NULL;
        }
        
        return new PageReference('/' + quote.Id);
        
    }
    
    public pageReference previous0(){
        return new PageReference('/' + quote.Id);
    }
    
    public pageReference previous(){
        if (pagenum==1){
            prodottoselezionato = new Product2();
            IVA = NULL;
            prezzodilistino = NULL;
        }
        partecipazionisettate = FALSE;
        pagenum--;
        return NULL;
    }
    
    public pageReference previous2(){
        edizioneselezionata=new Edizione__c(Ha_Partecipazioni__c=TRUE);
        pagenum--;
        pagenum--;
        return NULL;
    }
    
    public pageReference creapartecipazioni(){
        if (numeropartecipazioninonvalido) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Il numero delle partecipazioni da creare deve essere minore o uguale al numero di partecipazioni disponibili per questa edizione.'));
            numeropartecipazioninonvalido=FALSE;
            return NULL;
        }
        partecipazionisettate = TRUE;
        listapartecipazioni.clear();
        for (integer i=1; i<=numeropartecipazioni; i++) {
            listapartecipazioni.add(new Partecipazione__c());
        }
        return NULL;
    }

}


This is code of test class :

@isTest

public class AddQuoteLineItemCtrl_Test {
    static testMethod void Costruttore_Test()
    {

 /******************************************************************* INIZIO DEL TEST   ***********************************************************************************************/      
 
      test.startTest();
      
      Account acc = new Account();
      acc.name='Test';
      acc.billingStreet='via delle rose';
      acc.billingCity='Milano';
      acc.billingState='Giappone';
      acc.billingCountry='Italy';
      insert acc;
        
      Opportunity opp = new Opportunity();
      opp.Accountid = acc.id;
      opp.Name = 'test';
      opp.StageName = 'Prospecting';
      opp.CloseDate = date.today();
      opp.Type = 'New Client';
      opp.NextStep = 'Test';
      opp.LeadSource = 'Business Development';
      insert opp;
      
      Product2 prod = new Product2 ();
      prod.name='test';
      prod.IsActive=true;
      insert prod;
      List<Product2> l_prod = new List<Product2>(); 
      l_prod.add(prod);

      Id pricebookId = Test.getStandardPricebookId();
      List<PricebookEntry> l_pbe = new List<PricebookEntry>();
      PricebookEntry pbe = new PricebookEntry ();
      pbe.Product2Id=prod.Id;
      pbe.IsActive=true;
      pbe.UnitPrice=1;
      pbe.isStandard=true;
      pbe.Pricebook2Id=pricebookId;
      insert pbe;
      l_pbe.add(pbe);
      
      
      List<Quote> l_off = new List<Quote>();
      
      Quote offerta = new Quote();
      offerta.Name = 'I trulli';
      offerta.N_Offerta__c = '1000000';
      offerta.OpportunityId = opp.id;
      offerta.Pricebook2Id = pricebookId ;
      offerta.Training__c = TRUE;
      insert offerta;
    
     Date data = date.newInstance(2999,02,36);  
     Edizione__c edz = New Edizione__c();
     edz.Name = 'Test';
     edz.data_inizio__c = data;
     edz.data_fine__c = data+3;
     edz.motivo_stato__c='edizione erogata';
     insert edz;
     List<Edizione__c> l_edz = new List<Edizione__c>();
     l_edz.add(edz);
     List<Partecipazione__c> l_part = new List<Partecipazione__c>();
      
      ApexPages.StandardController controller = new ApexPages.StandardController(offerta);
      AddQuoteLineItemCtrl stdController = new AddQuoteLineItemCtrl(controller);
      
      stdController.search();
      stdController.search2();
      
      
      
      

/******************************************************************* FINE DEL TEST   ***********************************************************************************************/      
 
   test.stopTest();

   }
  
 }
Harish RamachandruniHarish Ramachandruni

@isTest

public class AddQuoteLineItemCtrl_Test {
    static testMethod void Costruttore_Test()
    {

 /******************************************************************* INIZIO DEL TEST   ***********************************************************************************************/      
 
      test.startTest();
      
      Account acc = new Account();
      acc.name='Test';
      acc.billingStreet='via delle rose';
      acc.billingCity='Milano';
      acc.billingState='Giappone';
      acc.billingCountry='Italy';
      insert acc;
        
      Opportunity opp = new Opportunity();
      opp.Accountid = acc.id;
      opp.Name = 'test';
      opp.StageName = 'Prospecting';
      opp.CloseDate = date.today();
      opp.Type = 'New Client';
      opp.NextStep = 'Test';
      opp.LeadSource = 'Business Development';
      insert opp;
      
      Product2 prod = new Product2 ();
      prod.name='test';
      prod.IsActive=true;
      insert prod;
      List<Product2> l_prod = new List<Product2>(); 
      l_prod.add(prod);

      Id pricebookId = Test.getStandardPricebookId();
      List<PricebookEntry> l_pbe = new List<PricebookEntry>();
      PricebookEntry pbe = new PricebookEntry ();
      pbe.Product2Id=prod.Id;
      pbe.IsActive=true;
      pbe.UnitPrice=1;
      pbe.isStandard=true;
      pbe.Pricebook2Id=pricebookId;
      insert pbe;
      l_pbe.add(pbe);
      
      
      List<Quote> l_off = new List<Quote>();
      
      Quote offerta = new Quote();
      offerta.Name = 'I trulli';
      offerta.N_Offerta__c = '1000000';
      offerta.OpportunityId = opp.id;
      offerta.Pricebook2Id = pricebookId ;
      offerta.Training__c = TRUE;
      insert offerta;
    
     Date data = date.newInstance(2999,02,36);  
     Edizione__c edz = New Edizione__c();
     edz.Name = 'Test';
     edz.data_inizio__c = data;
     edz.data_fine__c = data+3;
     edz.motivo_stato__c='edizione erogata';
     insert edz;
     List<Edizione__c> l_edz = new List<Edizione__c>();
     l_edz.add(edz);
     List<Partecipazione__c> l_part = new List<Partecipazione__c>();
      
      ApexPages.StandardController controller = new ApexPages.StandardController(offerta);
      AddQuoteLineItemCtrl stdController = new AddQuoteLineItemCtrl(controller);
      
      stdController.search();
      stdController.search2();
      


/***********************************




add all methodes like this . *********************/

stdController.​previous2 ();//all methods like this 


      
      
      

/******************************************************************* FINE DEL TEST   ***********************************************************************************************/      
 
   test.stopTest();

   }
  
 }




stdController.​previous2 ();//all methods like this .

ask me any issue .





regrads ,
harish.r