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
IKZIKZ 

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CaseTrigger: execution of BeforeUpdate

getting CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CaseTrigger: execution of BeforeUpdate error
caused by: System.NullPointerException: Attempt to de-reference a null object

Class.BusinessHoursHelper.getBusinessHoursByRecordType: line 43, column 1
Class.CaseTriggerHelper.calculateBusinessHours: line 79, column 1
Class.CaseTriggerHandler.beforeUpdate: line 48, column 1
Trigger.CaseTrigger: line 19, column 1: []
Stack Trace
Class.BusinessHoursHelperTest.testcalculateBusinessHours: line 35, column 1
in below test class:
@isTest
private class BusinessHoursHelperTest {
    private static final Integer BULK_SIZE = 10;
    
    static testMethod void testcalculateBusinessHours() {
        SetupDataBH setupData = new SetupDataBH();
        
        Date startOfWeek = Datetime.now().date().toStartOfWeek();
        System.debug('startOfWeek: ' + startOfWeek);
        
        System.debug(Business_Hours__c.getAll());
        User u = setupData.TestUser;
        System.runAs(u){
            Account acc = [SELECT Id FROM Account LIMIT 1];
            Case c = new Case(AccountId = acc.Id, 
                              Subject='test', 
                              CreatedDate = Datetime.now().addDays(Date.today().daysBetween(startOfWeek) == 0 ? -3 : -1),
                              Initial_FCO_Date__c = Datetime.now(),
                              RecordTypeId = RecordTypeUtility.getIdByName(RecordTypeUtility.CASE_CUSTOMER),
                              Status = 'New',
                              Origin = 'Phone'
                             );
                             
                              System.debug('Date.today().daysBetween(startOfWeek): ' + Date.today().daysBetween(startOfWeek));
                              System.debug('1newCase.CreatedDate: ' + c.CreatedDate);
            
            insert c;
            
            Test.startTest();
            
            for (List<Case> inserted_cases : c.Id) {
                inserted_cases.Initial_FCO_Date__c = Datetime.now();
            }
            update inserted_cases;
            
            Test.stopTest();
            
            
            List<Case> test_cases = [SELECT Id, CreatedDate, Initial_FCO_Date__c, Business_Hours_FCO_Created_CreateDate__c, Status, Origin FROM Case WHERE Id = :c.Id];            

            for (Case updated_case : test_cases) {
                System.assert (updated_case.Initial_FCO_Date__c != null);
                System.assert (updated_case.Business_Hours_FCO_Created_CreateDate__c != null);
                System.assert(updated_case.Business_Hours_FCO_Created_CreateDate__c >= 8.50 && updated_case.Business_Hours_FCO_Created_CreateDate__c < 8.51, 'Business_Hours_FCO_Created_CreateDate__c = ' + updated_case.Business_Hours_FCO_Created_CreateDate__c );
            }
        }
        
    }
    
    class SetupDataBH {
        public User TestUser;
        public User TestFCOUser;
        public User DataImporter;
        public List <BusinessHours> TestBusinessHours;
        
        public SetupDataBH() {
            TestUser = [SELECT Id FROM User WHERE LastName = 'BusinessHoursHelperTest' AND FirstName = 'SYSADMIN' LIMIT 1];
            TestFCOUser = [SELECT Id FROM User WHERE LastName = 'BusinessHoursHelperTest' AND FirstName = 'FCO' LIMIT 1];
            DataImporter = [SELECT Id FROM User WHERE Alias = 'Importer' AND LastName = 'Importer' AND FirstName = 'Data'];
            TestBusinessHours = [SELECT Id FROM BusinessHours WHERE IsDefault = true];
        }
    }
    
    @testSetup
    static void createAndInsertTestUser() {
        List<sObject> ls = Test.loadData(Business_Hours__c.sObjectType, 'BusinessHourRecords');
        system.debug(ls);
        
        System.runAs(new User(Id=UserInfo.getUserId())){
            UserTestData.getUserForTest()
                .setProfile(ProfileUtilities.ProfileType.FCO)
                .setFirstName('FCO')
                .setLastName('BusinessHoursHelperTest')
                .save()
                .getRecord();
            
            User testUser = UserTestData.getUserForTest()
                .setProfile(ProfileUtilities.ProfileType.SYSADMIN)
                .setFirstName('SYSADMIN')
                .setLastName('BusinessHoursHelperTest')
                .save()
                .getRecord();
            
            AccountBuilder.getBuilder().setFirstName('fName').setLastName('lName').setRecordType(RecordTypeUtility.ACCOUNT_PERSON_ACCOUNT).save().getRecord();
        }
    }
}

not sure how to fix that, an pleasey ideas?
MKRMKR
Hi,

Can you post the code for BusinessHoursHelper class and especially getBusinessHoursByRecordType method?

Regards,
Mkr
IKZIKZ
turned out I referenced wrong fields for that record type
thank you for looking into that Mkr