fflib-apex-mocks
fflib-apex-mocks copied to clipboard
IDGenerator support for xxxHistory SObjects
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)
This issue also affects __Share
records