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

Problem in writing Test class for Apex class with at least 80% coverage
Hi everyone,
I have create a apex class,used for updating the discount fields from account into Opportunity/QuoteLineItem fields.
Please advice.
Thanks in advance.
Regards
Sumitha P
I have create a apex class,used for updating the discount fields from account into Opportunity/QuoteLineItem fields.
public class DistributorDiscountChangeTriggerClass { @future /* Due to Apex CPU Time Limit issue we used @future annotation */ public static void DisupdService(set<Id> accByIds) /* Get the value from Apex */ { if(checkrecursive.runonce()) /*checkRecursive Class - used for run the trigger one time */ { try // Try -block { // Get the Open Opportunity Id, Distributor (Account ID) of the particular account. // Map<Id, Opportunity> oppByIds = new Map<Id,Opportunity>([SELECT Id,Distributor__c FROM Opportunity WHERE Distributor__c IN:accByIds AND IsClosed = FALSE]); System.debug('Opportunity ID' +oppByIds.size()); // Get the Quotelineitem details by using filtered Open Opportunity(oppByids) // List<QuoteLineItem> qlitmp= new List<QuoteLineItem>([select id,quote.opportunity.Distributor__c,Disti_Service_Product_Temp_Hidden__c,quote.opportunity.Override_Renewal_Discount__c,quote.opportunity.RecordType.name,Distributor_Discount_1__c,quote.opportunity.Distributor__r.Distributor_Discount_Renewal__c,product2.family,quote.opportunity.Distributor__r.Distributor_Discount_Service__c ,quote.opportunity.Distributor__r.Distributor_Discount_Product__c from quotelineitem where quote.opportunityID IN: oppByIds.keyset() and product2.family='Service']); System.debug('qlitmp -list'+qlitmp.size()); //Get the details of Open opportunity for Record Type List<Opportunity> oppqt= new List<Opportunity>([ SELECT Id,RecordType.name ,Override_Renewal_Discount__c,Distributor__r.Distributor_Discount_Renewal__c,Distributor__r.Distributor_Discount_Product__c,Distributor__r.Distributor_Discount_Service__c,Distributor_Discount_Product_Temp__c,Distributor_Discount_Service_Temp__c,Distributor__c FROM Opportunity WHERE Id IN: oppByIds.keySet() /*FOR UPDATE*/]); System.debug('Opportunity -list'+oppqt.size()); if ( !accByIds.isEmpty() ) // If account(accbyIds) Id is not null , the process enter into the IF loop { System.debug('Inside if Loop'); for ( Opportunity qt: oppqt ) { // NST's Record Type == Service Renewal // if(qt.RecordType.name=='Service Renewal' && qt.Override_Renewal_Discount__c==false) { System.debug('inside if SR false'); qt.Distributor_Discount_Service_Temp__c= qt.Distributor__r.Distributor_Discount_Renewal__c; qt.Distributor_Discount_Product_Temp__c= qt.Distributor__r.Distributor_Discount_Product__c; System.debug('Distributor_Discount_Renewal__c '+ qt.Distributor_Discount_Service_Temp__c); } else if(qt.RecordType.name=='Service Renewal' && qt.Override_Renewal_Discount__c==true) { System.debug('inside if SR true'); qt.Distributor_Discount_Service_Temp__c= qt.Distributor__r.Distributor_Discount_Service__c; qt.Distributor_Discount_Product_Temp__c=qt.Distributor__r.Distributor_Discount_Product__c; System.debug('Distributor_Discount_Service__c '+ qt.Distributor_Discount_Service_Temp__c); } //EOF NST's Record Type == Service Renewal // else if ( qt.Distributor__c != null) { System.debug('Distributor__c!= null'); qt.Distributor_Discount_Service_Temp__c= qt.Distributor__r.Distributor_Discount_Service__c; qt.Distributor_Discount_Product_Temp__c=qt.Distributor__r.Distributor_Discount_Product__c; System.debug('opportunity.Distributor_Discount_Service_Temp__c '+ qt.Distributor_Discount_Service_Temp__c); } } update oppqt;//opp } for(opportunity optyid : oppqt) { system.debug('optyid'+optyid.Distributor_Discount_Service_Temp__c); system.debug('optyid'+optyid.id); } /* for(quotelineitem qlitemp: qlitmp) { if(qlitemp.quote.opportunity.RecordType.name=='Service Renewal' && qlitemp.quote.opportunity.Override_Renewal_Discount__c==false && qlitemp.product2.family=='Service') { system.debug('1-false'); qlitemp.Disti_Service_Product_Temp_Hidden__c=qlitemp.quote.opportunity.Distributor__r.Distributor_Discount_Renewal__c; } else if(qlitemp.quote.opportunity.RecordType.name=='Service Renewal' && qlitemp.quote.opportunity.Override_Renewal_Discount__c==true && qlitemp.product2.family=='Service') { system.debug('1-false'); qlitemp.Disti_Service_Product_Temp_Hidden__c=qlitemp.quote.opportunity.Distributor__r.Distributor_Discount_Service__c; } else if(qlitemp.product2.family=='Service' && qlitemp.quote.opportunity.Distributor__c != null) { system.debug('12'); qlitemp.Disti_Service_Product_Temp_Hidden__c=qlitemp.quote.opportunity.Distributor__r.Distributor_Discount_Service__c ; } } update qlitmp; */ Map<Id, NST__c> nstdisByIds = new Map<Id,NST__c>( [ SELECT Id, Distributor_Account__c FROM NST__c WHERE Distributor_Account__c IN: accByIds AND NST_Status__c = 'Draft']); System.debug('nstdisByIds ID' +nstdisByIds.size()); List<NST__c> nstdis = [ SELECT Id,recordtype.id,recordtype.name,Distributor_Account__r.Distributor_Discount_Renewal__c,Distributor_Account__r.Distributor_Discount_Product__c,Distributor_Account__r.Distributor_Discount_Service__c, Product_Contractual_Discount_Temp__c,Service_Contractual_Discount_Temp__c,Distributor_Account__c FROM NST__c WHERE Id IN: nstdisByIds.keySet()]; System.debug('nstdis -list'+nstdis.size()); for ( NST__c qt: nstdis ) { System.debug('Inside FOr'); // NST's Record Type == Service Renewal // if(qt.RecordType.name=='Service Renewal') { System.debug('inside if'); qt.Service_Contractual_Discount_Temp__c= qt.Distributor_Account__r.Distributor_Discount_Renewal__c; System.debug('Distributor_Discount_Renewal__c '+ qt.Service_Contractual_Discount_Temp__c); } // End of NST's Record Type == Service Renewal // else if ( qt.Distributor_Account__c != null) { qt.Service_Contractual_Discount_Temp__c= qt.Distributor_Account__r.Distributor_Discount_Service__c; System.debug('opportunity.Service_Contractual_Discount_Temp__c '+ qt.Service_Contractual_Discount_Temp__c); } } update nstdis; system.debug('Updated'+nstdis.size()); system.debug('Updated'+nstdis); } catch(Exception e) { system.debug('e'+e); } } } }
Please advice.
Thanks in advance.
Regards
Sumitha P

If you can provice the exact problem that you are facing while writing test class code, then it will be useful. You can also go through documentation (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_testing.htm) regarding test classes. You can try this (https://trailhead.salesforce.com/en/modules/apex_testing/units/apex_testing_intro) trailhead module as well.