Skip to content

Instantly share code, notes, and snippets.

@jbro-io
Created June 15, 2023 19:43
Show Gist options
  • Save jbro-io/d7fada1567c3687cb24fa3e7ece593e2 to your computer and use it in GitHub Desktop.
Save jbro-io/d7fada1567c3687cb24fa3e7ece593e2 to your computer and use it in GitHub Desktop.

Revisions

  1. jbro-io created this gist Jun 15, 2023.
    106 changes: 106 additions & 0 deletions sfdx-trigger-handler-test
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,106 @@
    @isTest
    private class TriggerHandlerTest {
    // I normally put private classes at the bottom, but to prevent you from having to scroll ...
    private class TestTriggerHandler extends TriggerHandler {
    public TriggerOperation Method { get; private set; }

    @testVisible
    protected override void beforeInsert(List<SObject> newRecords) {
    this.Method = TriggerOperation.BEFORE_INSERT;
    }
    @testVisible
    protected override void beforeUpdate(Map<Id, SObject> updatedRecordsMap, Map<Id, SObject> oldRecordsMap) {
    this.Method = TriggerOperation.BEFORE_UPDATE;
    }
    @testVisible
    protected override void beforeDelete(Map<Id, SObject> deletedRecordsMap) {
    this.Method = TriggerOperation.BEFORE_DELETE;
    }
    @testVisible
    protected override void afterInsert(Map<Id, SObject> newRecordsMap) {
    this.Method = TriggerOperation.AFTER_INSERT;
    }
    @testVisible
    protected override void afterUpdate(Map<Id, SObject> updatedRecordsMap, Map<Id, SObject> oldRecordsMap) {
    this.Method = TriggerOperation.AFTER_UPDATE;
    }
    @testVisible
    protected override void afterDelete(Map<Id, SObject> deletedRecordsMap) {
    this.Method = TriggerOperation.AFTER_DELETE;
    }
    @testVisible
    protected override void afterUndelete(Map<Id, SObject> undeletedRecordsMap) {
    this.Method = TriggerOperation.AFTER_UNDELETE;
    }
    }

    @isTest
    static void it_should_perform_before_insert() {
    TestTriggerHandler testHandler = new TestTriggerHandler();
    TriggerHandler.triggerContext = TriggerOperation.BEFORE_INSERT;

    testHandler.execute();

    System.assertEquals(TriggerOperation.BEFORE_INSERT, testHandler.Method);
    }

    @isTest
    static void it_should_perform_before_update() {
    TestTriggerHandler testHandler = new TestTriggerHandler();
    TriggerHandler.triggerContext = TriggerOperation.BEFORE_UPDATE;

    testHandler.execute();

    System.assertEquals(TriggerOperation.BEFORE_UPDATE, testHandler.Method);
    }

    @isTest
    static void it_should_perform_before_delete() {
    TestTriggerHandler testHandler = new TestTriggerHandler();
    TriggerHandler.triggerContext = TriggerOperation.BEFORE_DELETE;

    testHandler.execute();

    System.assertEquals(TriggerOperation.BEFORE_DELETE, testHandler.Method);
    }

    @isTest
    static void it_should_perform_after_insert() {
    TestTriggerHandler testHandler = new TestTriggerHandler();
    TriggerHandler.triggerContext = TriggerOperation.AFTER_INSERT;

    testHandler.execute();

    System.assertEquals(TriggerOperation.AFTER_INSERT, testHandler.Method);
    }

    @isTest
    static void it_should_perform_after_update() {
    TestTriggerHandler testHandler = new TestTriggerHandler();
    TriggerHandler.triggerContext = TriggerOperation.AFTER_UPDATE;

    testHandler.execute();

    System.assertEquals(TriggerOperation.AFTER_UPDATE, testHandler.Method);
    }

    @isTest
    static void it_should_perform_after_delete() {
    TestTriggerHandler testHandler = new TestTriggerHandler();
    TriggerHandler.triggerContext = TriggerOperation.AFTER_DELETE;

    testHandler.execute();

    System.assertEquals(TriggerOperation.AFTER_DELETE, testHandler.Method);
    }

    @isTest
    static void it_should_perform_after_undelete() {
    TestTriggerHandler testHandler = new TestTriggerHandler();
    TriggerHandler.triggerContext = TriggerOperation.AFTER_UNDELETE;

    testHandler.execute();

    System.assertEquals(TriggerOperation.AFTER_UNDELETE, testHandler.Method);
    }
    }