You need to sign in to do that
Don't have an account?
Gail
Write test class for before delete trigger - deletion fails?
My trigger works fine when testing via the UI but when I try to delete an account via a test class, I get the error FATAL_ERROR|System.NullPointerException: Attempt to de-reference a null object.
trigger:
trigger AccountBeforeDelete on Account (before delete) { Set<Id> TerritoryUpd = new Set<Id>(); Set<Id> StratDeleted = new Set<Id>(); List<Account> ChildUpd = new List<Account>(); For (Account a : trigger.old){ If (a.Territory_Test__c.startsWith('STRAT')) { <--- this is the line that fails StratDeleted.add(a.id); } } ChildUpd = [SELECT Id FROM Account WHERE Ultimate_Parent_Acct__c in :StratDeleted]; For (Account aa : ChildUpd) { TerritoryUpd.add(aa.id); } If(!TerritoryUpd.isEmpty()){ Territory_Mgmt.Assign_Accounts(TerritoryUpd); } }
test class code snippet:
test.starttest(); insert up_strat; insert ch_strat; ch_strat.Ultimate_Parent_Acct__c = up_strat.Id; update ch_strat; Account up_strat_del = [Select id, Territory_Test__c FROM Account where ID = :up_strat.id]; delete up_strat_del; test.stoptest();
I used to try just deleting up_strat but saw something about querying for the inserted object and then deleting. That didn't work. When I put a try catch statement around the deletion, the deletion still failed with the same error. Why is my trigger not recognizing up_strat_del?
Probably Territory_Test__c is null for that record.
You just need to put a null check
All Answers
Probably Territory_Test__c is null for that record.
You just need to put a null check
bizarre, that fixed it even though Territory_Test__c WAS NOT null in the object getting deleted and my assertions to ensure the trigger code worked were fine. Thanks, muchly, Avi.
I lied, it was null. Now I've got to figure out how to ensure it is STRAT... that's my problem.