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
Steven Wellman 28Steven Wellman 28 

Unit test failing

I've built this and I'm not sure why my first system.asserEquals is failing. The records don't seem to be updating. Thanks for any help.
Trigger
trigger CommissionsOnQCD on zqu__QuoteChargeDetail__c (before insert, before update) {
	
    List<zqu__QuoteChargeDetail__c> quoteCharges = [SELECT Id,
                                                    	   Name,
                                                           zqu__MRR__c,
                                                    	   zqu__BillingTotal__c
                                                      FROM zqu__QuoteChargeDetail__c
                                                     WHERE Id IN :Trigger.new];

    List<zqu__QuoteChargeDetail__c> updateQuoteCharges = new List<zqu__QuoteChargeDetail__c>();
    
    for (zqu__QuoteChargeDetail__c charges : quoteCharges) {
        
        // Standard products
        if (!charges.Name.contains('SEO')          && !charges.Name.contains('Social Ads') &&
            !charges.Name.contains('One Time Fee') && !charges.Name.contains('Setup Fee')
                                                           && charges.zqu__MRR__c != null){
                
            // Calculate PAR
            charges.PAR__c = charges.zqu__MRR__c * 12 * 0.2;

            
            // Calculate FL Commission
            if (charges.Name.contains('Annual')) {
                charges.FL_Commission__c = (charges.zqu__MRR__c * 12 * 0.2);
            } else {
                charges.FL_Commission__c = (charges.zqu__MRR__c * 12 * 0.15);
            }
            updateQuoteCharges.add(charges);
        }

        // SEO/Social Ads - non-standard products
		if ((charges.Name.contains('SEO') || charges.Name.contains('Social Ads')) && !charges.Name.contains('One Time Fee') 
            							          && !charges.Name.contains('Setup Fee')  && charges.zqu__MRR__c != null){
                
            // Calculate PAR
            charges.PAR__c = charges.zqu__MRR__c * 12 * 0.2 * 0.4;
            
            // Calculate FL Commission
            if (charges.Name.contains('Annual')) {
                charges.FL_Commission__c = (charges.zqu__MRR__c * 12 * 0.2 * 0.4);
            } else {
                charges.FL_Commission__c = (charges.zqu__MRR__c * 12 * 0.15 * 0.4);
            }
            updateQuoteCharges.add(charges);
        }

        // One Time Fees
        if (charges.Name.contains('One Time Fee') && charges.zqu__BillingTotal__c != null) {
            
            // Calculate PAR
            charges.PAR__c = charges.zqu__BillingTotal__c * 0.15;
            
            // Calculate FL Commission
            charges.FL_Commission__c = charges.zqu__BillingTotal__c * 0.15;
            updateQuoteCharges.add(charges);
        }

        // Setup fees
        if (charges.Name.contains('Setup Fee') && charges.zqu__BillingTotal__c != null) {
            charges.Setup_Fees__c = charges.zqu__BillingTotal__c;
            updateQuoteCharges.add(charges);
        }
    }
    update updateQuoteCharges;
}
Here's the Test Class:
@isTest
private class CommissionsOnQCDTest {

	@isTest static void createAccountContactOpp() {
		// Create Account 
		Account acc = New Account();
		acc.Name = '1234567890987654321';

		insert acc;

		// Create Contact
		Contact myCon = New Contact();
		myCon.FirstName = 'Steve';
		myCon.LastName  = 'Welderbeast';
		myCon.Email     = 'apextest@gmail.com';
		myCon.AccountId = acc.Id;

		insert myCon;

		// Create Opportunity
		Opportunity opp = New Opportunity();
		opp.Name = 'test opp';
		opp.AccountId = acc.Id;
		opp.CloseDate = Date.today();
		opp.StageName = 'Discovery';

		insert opp;

		// Create a quote
		zqu__Quote__c myQuote = New zqu__Quote__c();
		myQuote.zqu__Account__c = acc.Id;
		myQuote.Name = 'One';

		insert myQuote;

		// Create Annual - Standard
		zqu__QuoteChargeDetail__c quoteAnnualStandard = New zqu__QuoteChargeDetail__c();
		quoteAnnualStandard.Name = 'Marketing Essentials - Annual Service Fee';
		quoteAnnualStandard.zqu__MRR__c = 100;
		quoteAnnualStandard.zqu__Quote__c = myQuote.Id;

		insert quoteAnnualStandard;

		zqu__QuoteChargeDetail__c zQuote = [SELECT PAR__c,
												   FL_Commission__c,
												   Setup_Fees__c
											  FROM zqu__QuoteChargeDetail__c
											 WHERE Id = :quoteAnnualStandard.Id];

		system.assertEquals(240,zQuote.PAR__c);
		system.assertEquals(240,zQuote.FL_Commission__c);
		system.assertEquals(null,zQuote.Setup_Fees__c);

		// Create Annual - Non-Standard
		zqu__QuoteChargeDetail__c quoteAnnualNonStandard = New zqu__QuoteChargeDetail__c();
		quoteAnnualNonStandard.Name = 'SEO - Annual Service Fee';
		quoteAnnualNonStandard.zqu__MRR__c = 100;
		quoteAnnualNonStandard.zqu__Quote__c = myQuote.Id;

		insert quoteAnnualNonStandard;

		zqu__QuoteChargeDetail__c zQuote2 = [SELECT PAR__c,
												   FL_Commission__c,
												   Setup_Fees__c
											  FROM zqu__QuoteChargeDetail__c
											 WHERE Id = :quoteAnnualNonStandard.Id];

		system.assertEquals(96,zQuote2.PAR__c);
		system.assertEquals(96,zQuote2.FL_Commission__c);
		system.assertEquals(null,zQuote2.Setup_Fees__c);

		// Create Monthly - Standard
		zqu__QuoteChargeDetail__c quoteMonthlyStandard = New zqu__QuoteChargeDetail__c();
		quoteMonthlyStandard.Name = 'Engage - Monthly Service Fee';
		quoteMonthlyStandard.zqu__MRR__c = 100;
		quoteMonthlyStandard.zqu__Quote__c = myQuote.Id;

		insert quoteMonthlyStandard;

		zqu__QuoteChargeDetail__c zQuote3 = [SELECT PAR__c,
												   FL_Commission__c,
												   Setup_Fees__c
											  FROM zqu__QuoteChargeDetail__c
											 WHERE Id = :quoteMonthlyStandard.Id];

		system.assertEquals(240,zQuote3.PAR__c);
		system.assertEquals(180,zQuote3.FL_Commission__c);
		system.assertEquals(null,zQuote3.Setup_Fees__c);

		// Create Monthly - Non-Standard
		zqu__QuoteChargeDetail__c quoteMonthlyNonStandard = New zqu__QuoteChargeDetail__c();
		quoteMonthlyNonStandard.Name = 'SEO - Monthly Service Fee';
		quoteMonthlyNonStandard.zqu__MRR__c = 100;
		quoteMonthlyNonStandard.zqu__Quote__c = myQuote.Id;

		insert quoteMonthlyNonStandard;

		zqu__QuoteChargeDetail__c zQuote4 = [SELECT PAR__c,
												   FL_Commission__c,
												   Setup_Fees__c
											  FROM zqu__QuoteChargeDetail__c
											 WHERE Id = :quoteMonthlyNonStandard.Id];

		system.assertEquals(96,zQuote4.PAR__c);
		system.assertEquals(72,zQuote4.FL_Commission__c);
		system.assertEquals(null,zQuote4.Setup_Fees__c);

		// Create One Time Fee
		zqu__QuoteChargeDetail__c quoteOneTimeFee = New zqu__QuoteChargeDetail__c();
		quoteOneTimeFee.Name = 'SEO - One Time Fee';
		quoteOneTimeFee.zqu__MRR__c = 0;
		quoteOneTimeFee.zqu__BillingTotal__c = 100;
		quoteOneTimeFee.zqu__Quote__c = myQuote.Id;

		insert quoteOneTimeFee;

		zqu__QuoteChargeDetail__c zQuote5 = [SELECT PAR__c,
												   FL_Commission__c,
												   Setup_Fees__c
											  FROM zqu__QuoteChargeDetail__c
											 WHERE Id = :quoteOneTimeFee.Id];

		system.assertEquals(15,zQuote5.PAR__c);
		system.assertEquals(15,zQuote5.FL_Commission__c);
		system.assertEquals(null,zQuote5.Setup_Fees__c);


		// Create Setup Fee
		zqu__QuoteChargeDetail__c quoteSetupFee = New zqu__QuoteChargeDetail__c();
		quoteSetupFee.Name = 'SEO - Setup Fee';
		quoteSetupFee.zqu__MRR__c = 0;
		quoteSetupFee.zqu__BillingTotal__c = 100;
		quoteSetupFee.zqu__Quote__c = myQuote.Id;

		insert quoteSetupFee;

		zqu__QuoteChargeDetail__c zQuote6 = [SELECT PAR__c,
												   FL_Commission__c,
												   Setup_Fees__c
											  FROM zqu__QuoteChargeDetail__c
											 WHERE Id = :quoteSetupFee.Id];

		system.assertEquals(null,zQuote6.PAR__c);
		system.assertEquals(null,zQuote6.FL_Commission__c);
		system.assertEquals(100,zQuote6.Setup_Fees__c);


	}

}




 
Steven NsubugaSteven Nsubuga
I have made a few changes to your trigger.
There was no need to query for the records in the trigger, I removed that, ie quoteCharges.
There was no need to explicitly call update on the records in the trigger, I removed that, ie updateQuoteCharges.
trigger CommissionsOnQCD on zqu__QuoteChargeDetail__c (before insert, before update) {
	    
       
    for (zqu__QuoteChargeDetail__c charges : Trigger.new) {
        
        // Standard products
        if (!charges.Name.contains('SEO')          && !charges.Name.contains('Social Ads') &&
            !charges.Name.contains('One Time Fee') && !charges.Name.contains('Setup Fee')
                                                           && charges.zqu__MRR__c != null){
                
            // Calculate PAR
            charges.PAR__c = charges.zqu__MRR__c * 12 * 0.2;

            
            // Calculate FL Commission
            if (charges.Name.contains('Annual')) {
                charges.FL_Commission__c = (charges.zqu__MRR__c * 12 * 0.2);
            } else {
                charges.FL_Commission__c = (charges.zqu__MRR__c * 12 * 0.15);
            }
        }

        // SEO/Social Ads - non-standard products
		if ((charges.Name.contains('SEO') || charges.Name.contains('Social Ads')) && !charges.Name.contains('One Time Fee') 
            							          && !charges.Name.contains('Setup Fee')  && charges.zqu__MRR__c != null){
                
            // Calculate PAR
            charges.PAR__c = charges.zqu__MRR__c * 12 * 0.2 * 0.4;
            
            // Calculate FL Commission
            if (charges.Name.contains('Annual')) {
                charges.FL_Commission__c = (charges.zqu__MRR__c * 12 * 0.2 * 0.4);
            } else {
                charges.FL_Commission__c = (charges.zqu__MRR__c * 12 * 0.15 * 0.4);
            }
        }

        // One Time Fees
        if (charges.Name.contains('One Time Fee') && charges.zqu__BillingTotal__c != null) {
            
            // Calculate PAR
            charges.PAR__c = charges.zqu__BillingTotal__c * 0.15;
            
            // Calculate FL Commission
            charges.FL_Commission__c = charges.zqu__BillingTotal__c * 0.15;
            updateQuoteCharges.add(charges);
        }

        // Setup fees
        if (charges.Name.contains('Setup Fee') && charges.zqu__BillingTotal__c != null) {
            charges.Setup_Fees__c = charges.zqu__BillingTotal__c;
        }
    }
}