Skip to content

IDGenerator support for xxxHistory SObjects #75

Open
@cropredyHelix

Description

@cropredyHelix

Currently, fflib_IDGenerator.generate(ContactHistory.SObjectType) returns null000000000000 for any xxxHistory object because getDescribe().getKeyPrefix() returns null for these SObjects

Extend the class's generate method to look like this:

 public static Id generate(Schema.SObjectType sobjectType) {
   String keyPrefix = sobjectType.getDescribe().getKeyPrefix();
   if (keyPrefix == null) {
    keyPrefix =  sobjectType.getDescribe().getName().endsWith('History') ? '017' : null;
   }

   fakeIdCount++;
   String fakeIdPrefix = ID_PATTERN.substring(0, 12 - fakeIdCount.format().length());
   return Id.valueOf(keyPrefix + fakeIdPrefix + fakeIdCount);
 }

While mocking xxxHistory records is problematic as you can't mock OldValue or NewValue fields including via Json.deserialize, you can mock the other fields (Id, ParentId, Field) via Json.deserialize and hence can produce selector mocks for use cases such as testing Field History deletion (introduced in V42)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions