Skip to main content
Hi, My apex class is not covering for else if condition. my code coverage is only 68%. 

 

Apex Class :

 

public class SumQuoteHandler {

 

    Public static set<Id> ids = new set<Id>();

 

        Public static void sumQuotefeld(List<QuoteLineItem>QLL){

 

        Map<Id,  Quote> mapQuote = new Map<Id,  Quote>();

 

        for(QuoteLineItem QLII : QLL){

 

            ids.add(QLII.QuoteId);

 

            mapQuote.put(QLII.QuoteId, new Quote(Id = QLII.QuoteId, Rabatt_der_einmaligen_Geb_hren__c = 0, einmalige_Geb_hren__c = 0, monatlicher_LP_Lizenzen__c = 0));

 

        }

 

        //system.debug(ids);

 

        

 

        List<Quote> QI = [SELECT Id, Rabatt_der_einmaligen_Geb_hren__c, einmalige_Geb_hren__c, monatlicher_LP_Lizenzen__c  FROM Quote where Id =:ids]; // where Id IN:ids

 

        system.debug(QI);

 

        List<QuoteLineItem> QL = [SELECT id, QuoteId,Produktkategorie__c, isdeleted, GesamtpreisNEU__c, Euro_Rabatt_del__c, ListPrice FROM QuoteLineItem WHERE QuoteId IN: ids ];

 

         for(QuoteLineItem QQ : QL){

 

            if(QQ.Produktkategorie__c != 'Software Subscription' && QQ.Id!=null){

 

                if(QQ.Euro_Rabatt_del__c==null){

 

                      mapQuote.get(qq.QuoteId).Rabatt_der_einmaligen_Geb_hren__c  +=0;

 

                    mapQuote.get(qq.QuoteId).einmalige_Geb_hren__c +=QQ.GesamtpreisNEU__c;

 

                }

 

                else if(QQ.GesamtpreisNEU__c!=null){

 

                    mapQuote.get(qq.QuoteId).Rabatt_der_einmaligen_Geb_hren__c  +=QQ.Euro_Rabatt_del__c;  

 

                    mapQuote.get(qq.QuoteId).einmalige_Geb_hren__c +=QQ.GesamtpreisNEU__c;

 

                }

 

            }

 

             else if(QQ.Produktkategorie__c == 'Software Subscription' && QQ.Id!=null && QQ.ListPrice!=null){

 

                      mapQuote.get(qq.QuoteId).monatlicher_LP_Lizenzen__c +=QQ.ListPrice;

 

            }

 

}

 

update mapQuote.values();

 

}

 

}

 

Test Class :

 

@isTest

 

private class TestSumQuoteHandlerTest {

 

        @isTest static void TestsumQuotefeld() { 

 

    

 

        Account acc = new Account (name='Acme',CustomCountry__c = 'Deutschland');

 

        insert acc;

 

        Opportunity opp= new Opportunity ();

 

        opp.name= 'Testopp';

 

        Opp.Accountid= acc.id;

 

        opp.CloseDate= date.today();

 

        opp.StageName= 'Qualification';

 

        insert opp;

 

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

 

    insert pb;

 

Product2 prod = new Product2(Name = 'SLA: Bronze', Produktkategorie__c='software subscription', IsActive = true);

 

    insert prod;

 

PricebookEntry pbe=new PricebookEntry(unitprice=0.01,Product2Id=prod.Id, Pricebook2Id=Test.getStandardPricebookId(), IsActive= true);

 

     insert pbe;  

 

        Quote q= new Quote ();

 

             q.Name= 'Testq';

 

            Q.Rabatt_der_einmaligen_Geb_hren__c = 0;

 

            Q.einmalige_Geb_hren__c = 0;

 

            Q.monatlicher_LP_Lizenzen__c = 0;

 

            q.OpportunityId= Opp.id;

 

            q.BillingStreet= '123';

 

            q.BillingCity= 'City';

 

            q.BillingPostalCode= '12345';

 

            q.Pricebook2Id= Test.getStandardPricebookId();

 

            insert q;

 

        

 

          QuoteLineItem qli= new QuoteLineItem();

 

            qli.QuoteId=q.Id;

 

            qli.PricebookEntryid= pbe.Id;

 

            qli.quantity=2;

 

            qli.UnitPrice = 1;

 

            Qli.GesamtpreisNEU__c = 2;

 

            Qli.Euro_Rabatt_del__c = 2;

 

            Qli.Description = 'Test2';

 

            Qli.Quantity = 2;

 

            insert qli;

 

            List<QuoteLineitem> QLL = New List<Quotelineitem>();

 

            Qll.add(qli);

 

            sumquoteHandler.sumQuotefeld(QLL);

 

            }

 

            

 

        }

 

I shall be grateful to you for your kind assitance
8 respuestas
  1. 28 jul 2020, 10:14
    Hi Nishant,

     

    You need to create 1 more method and test it without GesamtpreisNEU__C as below:

     

     

    @isTest

    private class TestSumQuoteHandlerTest {

    @isTest static void TestsumQuotefeld() {

    Account acc = new Account (name='Acme',CustomCountry__c = 'Deutschland');

    insert acc;

    Opportunity opp= new Opportunity ();

    opp.name= 'Testopp';

    Opp.Accountid= acc.id;

    opp.CloseDate= date.today();

    opp.StageName= 'Qualification';

    insert opp;

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

    insert pb;

    Product2 prod = new Product2(Name = 'SLA: Bronze', Produktkategorie__c='Software Subscription', IsActive = true);

    insert prod;

    PricebookEntry pbe=new PricebookEntry(unitprice=0.01,Product2Id=prod.Id, Pricebook2Id=Test.getStandardPricebookId(), IsActive= true);

    insert pbe;

    Quote q= new Quote ();

    q.Name= 'Testq';

    Q.Rabatt_der_einmaligen_Geb_hren__c = 0;

    Q.einmalige_Geb_hren__c = 0;

    Q.monatlicher_LP_Lizenzen__c = 0;

    q.OpportunityId= Opp.id;

    q.BillingStreet= '123';

    q.BillingCity= 'City';

    q.BillingPostalCode= '12345';

    q.Pricebook2Id= Test.getStandardPricebookId();

    insert q;

    QuoteLineItem qli= new QuoteLineItem();

    qli.QuoteId=q.Id;

    qli.PricebookEntryid= pbe.Id;

    qli.quantity=2;

    qli.UnitPrice = 1;

    Qli.GesamtpreisNEU__c = 2;

    Qli.Euro_Rabatt_del__c = 2;

    Qli.Description = 'Test2';

    Qli.Quantity = 2;

    insert qli;

    List<QuoteLineitem> QLL = New List<Quotelineitem>();

    Qll.add(qli);

    sumquoteHandler.sumQuotefeld(QLL);

    }

      // New method to validate if condition

    @isTest static void TestsumQuotefeld_New() {

    Account acc = new Account (name='Acme',CustomCountry__c = 'Deutschland');

    insert acc;

    Opportunity opp= new Opportunity ();

    opp.name= 'Testopp';

    Opp.Accountid= acc.id;

    opp.CloseDate= date.today();

    opp.StageName= 'Qualification';

    insert opp;

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

    insert pb;

    Product2 prod = new Product2(Name = 'SLA: Bronze', Produktkategorie__c='Software Subscription', IsActive = true);

    insert prod;

    PricebookEntry pbe=new PricebookEntry(unitprice=0.01,Product2Id=prod.Id, Pricebook2Id=Test.getStandardPricebookId(), IsActive= true);

    insert pbe;

    Quote q= new Quote ();

    q.Name= 'Testq';

    Q.Rabatt_der_einmaligen_Geb_hren__c = 0;

    Q.einmalige_Geb_hren__c = 0;

    Q.monatlicher_LP_Lizenzen__c = 0;

    q.OpportunityId= Opp.id;

    q.BillingStreet= '123';

    q.BillingCity= 'City';

    q.BillingPostalCode= '12345';

    q.Pricebook2Id= Test.getStandardPricebookId();

    insert q;

    QuoteLineItem qli= new QuoteLineItem();

    qli.QuoteId=q.Id;

    qli.PricebookEntryid= pbe.Id;

    qli.quantity=2;

    qli.UnitPrice = 1;

    Qli.GesamtpreisNEU__c = 2;

    // Qli.Euro_Rabatt_del__c = 2;

    Qli.Description = 'Test2';

    Qli.Quantity = 2;

    insert qli;

    List<QuoteLineitem> QLL = New List<Quotelineitem>();

    Qll.add(qli);

    sumquoteHandler.sumQuotefeld(QLL);

    }

    }

     

     
0/9000