You need to sign in to do that
Don't have an account?

Need help in test class call
Hi,
I wrote a trigger which is working as expected for the requirement my problem is with the test class I wrote a test class which is giving only 54% code coverage I need suggest on the lines which are not covered in the trigger
Test class
Thanks
Sudhir
I wrote a trigger which is working as expected for the requirement my problem is with the test class I wrote a test class which is giving only 54% code coverage I need suggest on the lines which are not covered in the trigger
trigger GenQuoteApproval on QuoteLineItem (After Insert, After Update, After Delete) { Decimal LineMaxDiscount; Decimal LineMaxACV; Decimal SubLineMaxDiscount; Decimal SubLineMaxACV; Decimal SerLineMaxDiscount; Decimal SerLineMaxACV; Decimal TraLineMaxDiscount; Decimal TraLineMaxACV; Map<ID, Quote> ParentQuote = new Map<ID, Quote>(); String SALREPID; String MRGID; String SALID; String CFOID; String SERID; String TRAID; String Level; Integer GSublevel1Count; Integer GSublevel2Count; Integer GSublevel3Count; Integer GSublevel4Count; Integer GSerlevel1Count; Integer GSerlevel2Count; Integer GSerlevel3Count; Decimal SubscriptionTerm; Integer GTralevel1Count; Integer GTralevel2Count; Integer GTralevel3Count; Try { if ( Trigger.isAfter) { List<Id> listIds = new List<Id>(); //Set<Id> listIds = new Set<Id>(); List<Quote> QuotetList = new List<Quote>(); /* Get Quote ID */ for (QuoteLineItem childquoteline : Trigger.new) { listIds.add(childquoteline.QuoteId); } ParentQuote = new Map<Id, Quote>([SELECT id,Level_1__c,Level_2__c,Level_3__c,Level_4__c FROM Quote WHERE ID IN :listIds]); /* Get service list of all quote id */ list<id> serviceid = new list<id>(); for(QuoteLineItem getserviceid : [select id from QuoteLineItem where quoteid in :listIds and product2.Productcode like 'CBSVC%'] ) { serviceid.add(getserviceid.id); } /* Get subscription list of all quote id */ list<id> subscriptionid = new list<id>(); for(QuoteLineItem getsubscriptionid : [select id from QuoteLineItem where quoteid in :listIds and Subscription_Terms__c <> 0] ) { subscriptionid.add(getsubscriptionid.id); } /* Subscription Discount and ACV */ List<AggregateResult> MaxSubscription = [select max(Discount_Percent__c) SubQuoteLineMaxDiscount,sum(f_ACV__c) SubQuoteLineMaxACV from QuoteLineItem where quoteid in :listIds and Subscription_Terms__c <> 0 and ID not in :serviceid ]; for (AggregateResult SubQuoteMaxDiscount : MaxSubscription) { SubLineMaxDiscount = (Decimal)SubQuoteMaxDiscount.get('SubQuoteLineMaxDiscount'); SubLineMaxACV = (Decimal)SubQuoteMaxDiscount.get('SubQuoteLineMaxACV'); } system.debug('Subscription Line Discount :' + SubLineMaxDiscount); system.debug('Subscription Line ACV :' + SubLineMaxACV); /* Service Discount and ACV */ List<AggregateResult> MaxService = [select max(Discount_Percent__c) SerQuoteLineMaxDiscount,SUM(f_ACV__c) SerQuoteLineMaxACV from QuoteLineItem where quoteid in :listIds and product2.Productcode like 'CBSVC%' and id not in :subscriptionid]; for (AggregateResult SerQuoteMaxDiscount : MaxService) { SerLineMaxDiscount = (Decimal)SerQuoteMaxDiscount.get('SerQuoteLineMaxDiscount'); SerLineMaxACV = (Decimal)SerQuoteMaxDiscount.get('SerQuoteLineMaxACV'); } system.debug('Service Line Discount :' + SerLineMaxDiscount); system.debug('Service Line ACV :' + SerLineMaxACV); /* Training Discount and ACV */ List<AggregateResult> MaxTraining = [select max(Discount_Percent__c) SerQuoteLineMaxDiscount,SUM(f_ACV__c) TraQuoteLineMaxACV from QuoteLineItem where quoteid in :listIds and product2.Productcode like 'T%' and id not in :subscriptionid]; for (AggregateResult TraQuoteMaxDiscount : MaxTraining) { TraLineMaxDiscount = (Decimal)TraQuoteMaxDiscount.get('TraQuoteLineMaxDiscount'); TraLineMaxACV = (Decimal)TraQuoteMaxDiscount.get('TraQuoteLineMaxACV'); } system.debug('Training Line Discount :' + TraLineMaxDiscount); system.debug('Training Line ACV :' + TraLineMaxACV); Opportunity Opp = [select ownerid from opportunity where id in (select OpportunityId from quote where id in :listIds) ]; system.debug(listIds); SubscriptionTerm = ApprovalUtils.GetSubscriptionTerm(listIds); system.debug('Get New Subscription Term' + SubscriptionTerm); /* Get Manager ID */ User Usr = [select managerid from user where id = :opp.ownerid]; /* Subscription Query to get level 1..4 values */ if ( SubscriptionTerm != null && SubLineMaxACV != null && SubLineMaxDiscount != null) { GSublevel1Count = ApprovalUtils.SubLevel1(SubscriptionTerm , SubLineMaxACV , SubLineMaxDiscount); system.debug('Subscription Level1 :' + GSublevel1Count); GSublevel2Count = ApprovalUtils.SubLevel2(SubscriptionTerm , SubLineMaxACV , SubLineMaxDiscount); system.debug('Subscription Level2 :' + GSublevel2Count); GSublevel3Count = ApprovalUtils.SubLevel3(SubscriptionTerm , SubLineMaxACV , SubLineMaxDiscount); system.debug('Subscription Level3 :' + GSublevel3Count); GSublevel4Count = ApprovalUtils.SubLevel4(SubscriptionTerm , SubLineMaxACV , SubLineMaxDiscount); system.debug('Subscription Level4 :' + GSublevel4Count); } /* Service Query to get level 1..4 values */ if (SerLineMaxACV != null && SerLineMaxDiscount != null) { GSerlevel1Count = ApprovalUtils.SerLevel1(SerLineMaxACV,SerLineMaxDiscount); system.debug('Service Level1 :' + GSerlevel1Count); GSerlevel2Count = ApprovalUtils.SerLevel2(SerLineMaxACV,SerLineMaxDiscount); system.debug('Service Level2 :' + GSerlevel2Count); GSerlevel3Count = ApprovalUtils.SerLevel3(SerLineMaxACV,SerLineMaxDiscount); system.debug('Service Level3 :' + GSerlevel3Count); } /* Training Query to get level 1..4 values */ if (TraLineMaxACV != null && TraLineMaxDiscount != null) { GTralevel1Count = ApprovalUtils.TraLevel1(TraLineMaxACV,TraLineMaxDiscount); system.debug('Training Level1 :' + GTralevel1Count); GTralevel2Count = ApprovalUtils.TraLevel2(TraLineMaxACV,TraLineMaxDiscount); system.debug('Training Level2 :' + GTralevel2Count); GTralevel3Count = ApprovalUtils.TraLevel3(TraLineMaxACV,TraLineMaxDiscount); system.debug('Training Level3 :' + GTralevel3Count); } If( GSublevel1Count >= 1 || GSerlevel1Count >= 1 || GTralevel1Count >= 1 ) { SALREPID = Opp.OwnerId; SERID = '0053400000839zg'; TRAID = '00580000006GbpI'; } If (GSublevel2Count >= 1 || GSerlevel2Count >= 1 || GTralevel2Count >= 1 ) { SALREPID = NULL; MRGID = Usr.managerid; SERID = '0053400000839zg'; TRAID = '00580000006GbpI'; } /* Future here you may have to change for amount > 1000000 if its going only to SVP */ If ( GSublevel3Count >= 1 || GSerlevel3Count >= 1 || GTralevel3Count >= 1) { SALREPID = NULL; MRGID = Usr.managerid; SALID = '00580000007jaoA'; SERID = '0053400000839zg'; TRAID = '00580000006GbpI'; } If ( GSublevel4Count >= 1 ) { SALREPID = NULL; MRGID = Usr.managerid; SALID = '00580000007jaoA'; CFOID = '00580000006HV0w'; Level = '4sub'; } //system.debug('Which Level :' + Level); system.debug('Sales Rep :' + SALREPID); system.debug('Manager :' + MRGID); system.debug('Sales Ops :' + SALID); system.debug('CEO CFO :' + CFOID); for (QuoteLineItem gqtl : Trigger.new) { Quote MyParentQuote = ParentQuote.get(gqtl.QuoteId); MyParentQuote.Level_1__c = SALREPID; MyParentQuote.Level_2__c=MRGID; MyParentQuote.Level_3__c=SALID; MyParentQuote.Level_4__c=CFOID; MyParentQuote.Level_5_Service__c = SERID; MyParentQuote.Level_6_Training__c = TRAID; } update ParentQuote.values(); } } catch(Exception e) { System.debug('The following exception has occurred: ' + e.getMessage()); } }In trigger line 157 to 243 code is not covered in above trigger which is high lighting red in color below is the test class which i have written which is giving only 54% code coverage please suggest me how to get 100% code coverage
Test class
@istest(seealldata=true) public class ApprovalUtils_Test_New{ @isTest(SeeAllData=true) // required for using the standard pricebook, unfortunately public static void ApprovalUtilsTest() { Decimal SubscriptionTerm; ApprovalUtils.SubLevel1(1,0,0); ApprovalUtils.SubLevel2(1,0,10); ApprovalUtils.SubLevel3(1,0,11); ApprovalUtils.SubLevel4(1,0,41); ApprovalUtils.SerLevel1(1,1); ApprovalUtils.SerLevel2(1,10); ApprovalUtils.SerLevel3(1,41); ApprovalUtils.TraLevel1(1,1); ApprovalUtils.TraLevel2(1,10); ApprovalUtils.TraLevel3(1,41); Profile pf = [SELECT Id FROM Profile WHERE Name='Standard User']; User u2 = new User(Alias = 'newUser', Email='newuser@testorg.com', EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US', LocaleSidKey='en_US', ProfileId = pf.Id, TimeZoneSidKey='America/Los_Angeles', UserName='newuser@testorg.com'); Account a = new Account(Name = 'Test Account'); insert a; Opportunity o = new Opportunity(Name = 'Test Opp', StageName = 'Test Stage', CloseDate = Date.today(), AccountId = a.Id); insert o; Pricebook2 pb = [select Id from Pricebook2 where IsStandard = true limit 1]; Product2 p = new Product2(Name = 'T-Product', isActive = true); insert p; PricebookEntry pbe = new PricebookEntry(Pricebook2Id = pb.Id, Product2Id = p.Id, UnitPrice = 1, isActive = true); insert pbe; Quote q = new Quote(Name = 'Test Quote', OpportunityId = o.Id, PriceBook2Id = pb.Id); insert q; QuoteLineItem qli = new QuoteLineItem(QuoteId = q.Id, PriceBookEntryId = pbe.Id, Quantity = 1, UnitPrice = 100, Subscription_Terms__c=1,Number_of_Nodes__c=1); insert qli; } }
Thanks
Sudhir
This might be happening because your conditions in line 157 are not satisfied.
Try ading the values of the fields :
Discount_Percent__c and f_ACV__c while creating the quoteLineItem in your Test Class.
In case, any of these fields is a formula, try satisfying the formula to get some data.
Also, Check your debug logs after running the test class to see what's the value for SerLineMaxDiscount and SerLineMaxACV in line 113 and 114 of your trigger.
Hope this helps.
Regards
Medhya