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
lxchlxch 

Test on object returning aggregated SUM values from SOQL in apex class

I'm working on Apex Test Class. If anyone knows the problem the below test code. Thanks!

The Class is returning Object sumBalance with SUM values (alias: bl, bt, pt) from SOQL and component receives {v.sumBalance.bl}, {v.sumBalance.bt},  {v.sumBalance.pt}. These are working fine. But can't figure out how to test this Class....

Class
public with sharing class DueBalanceController{
    @AuraEnabled
    public static Object sumBalance (String recordId){
        Date d_today = system.Date.today();
        AggregateResult[] groupedResults = [
            SELECT SUM(Balance__c)bl,SUM(Paid_Total__c)pt,SUM(Billing_Total__c)bt, Tenant__c
            FROM Billing__c 
            WHERE Tenant__c	= :recordId AND User_Due_Date__c <= :d_today AND (Status__c='Unpaid' OR Status__c='Paid' OR Status__c='Captured')
            GROUP BY Tenant__c
        ];
        Object sumAmount = groupedResults[0];
        return sumAmount;
    }
}

Test Class
@isTest
public class DueBalanceControllerTest {
        
    @isTest 
    public static void testDueBalanceController(){
        String recordTypeId  = Schema.getGlobalDescribe().get('Account').getDescribe().getRecordTypeInfosByName().get('Person Account').getRecordTypeId();
        Account acct= new Account(
          RecordTypeID = recordTypeId ,
          FirstName = 'Test FName',
          LastName='Test LName',
          PersonMailingStreet='test@yahoo.com',
          PersonMailingPostalCode='12345',
          PersonMailingCity='SFO',
          PersonEmail='test@yahoo.com',
          PersonHomePhone='1234567',
          PersonMobilePhone='12345678' 
        );
        insert acct;
        
        Case cs = new Case(
        	Subject='Test',
            Status ='Closed'
        );
        insert cs;
            
        Billing__c bl = new Billing__c(Name='Test');
        bl.Monthly_Rent__c = 200000;
        bl.Paid_Total__c = 100000;
        bl.Status__c = 'Paid';
        bl.User_Due_Date__c = system.Date.today()-20;
        bl.Tenant__c = acct.Id;
        bl.Case__c = cs.Id;
        insert bl;
    
    Test.StartTest();
		Object sumBalance = DueBalanceController.sumBalance(acct.Id);
        System.assertNotEquals(null,sumBalance);
    Test.StopTest();
        
	}
}


 
Best Answer chosen by lxch
lxchlxch
Test.StartTest();
        Object sumBalance = DueBalanceController.sumBalance(acct.Id);
        AggregateResult ar = (AggregateResult)sumBalance;
        System.assertEquals(200000,(Decimal)ar.get('bt'));
    Test.StopTest();
Needed to return by AggregatedResult. Solved by other discussion board.