Approval processes have multiple paths: submit, approve, reject, recall.
Test cases:
- Submit: triggered correctly when entry criteria met.
- Step approver: correctly routed.
- Approve at step: advances to next.
- Reject at step: triggers rejection actions.
- Final approval: triggers final actions.
- Final rejection: triggers rejection.
- Recall: triggers recall actions.
Apex test: `apex @isTest static void testApprovalSubmission() { Opportunity o = new Opportunity(Name='Test', StageName='Negotiation', Amount=10000, CloseDate=Date.today()); insert o;
Approval.ProcessSubmitRequest req = new Approval.ProcessSubmitRequest(); req.setObjectId(o.Id); Approval.ProcessResult result = Approval.process(req);
System.assert(result.isSuccess()); System.assertEquals(1, [SELECT count() FROM ProcessInstance WHERE TargetObjectId=:o.Id]); } `
UI testing: Provar / Selenium drives submit / approve / reject manually.
Common pitfalls:
- Testing only submission, not approval.
- No test for skipped steps.
- Not testing recall.
Senior insight: approval processes have many states. Comprehensive coverage required.
