Skip to content

Commit

Permalink
Reducing the footprint of sfab
Browse files Browse the repository at this point in the history
  • Loading branch information
rob-baillie-ortoo committed Dec 3, 2021
1 parent b9e86a5 commit 7427970
Show file tree
Hide file tree
Showing 14 changed files with 93 additions and 103 deletions.
2 changes: 1 addition & 1 deletion TODO.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ SObject Fabricator:

* Review changes to sfab_FabricatedSObject
* Ensure the registration is complete - there are probably gaps
* see sfab_FabricatedSObject.addParentChild

* Unit Test
* ortoo_FabricatedSObjectRegister
* sfab_FabricatedSObject
* Do an end to end test for the fabricator committing stuff
* Set unsettable fields, and a parent and child
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
public class sfab_ChildRelationshipNode implements sfab_FabricatedSObjectNode {
public class sfab_ChildRelationshipNode implements sfab_FabricatedSObject.sfab_FabricatedSObjectNode {

@testVisible private String fieldName;
@testVisible private List<sfab_FabricatedSObject> children;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
public virtual class sfab_FabricatedSObject {

public interface sfab_FabricatedSObjectNode {
Map<String, Object> serialize( Boolean persistable );
void postBuildProcess( Object objectToProcess );
String getName();
}

private Type sType;
@testVisible protected Map<String,sfab_FabricatedSObjectNode> nodes = new Map<String,sfab_FabricatedSObjectNode>();

Expand Down Expand Up @@ -657,4 +663,53 @@ public virtual class sfab_FabricatedSObject {
return fullFieldName.contains( '.' );
}
}

public class sfab_FabricatedSObjectNodeStub implements sfab_FabricatedSObjectNode {
public Boolean serializeInvoked = false;
public Map<String, Object> serializedNode;
private String name;

public sfab_FabricatedSObjectNodeStub( String name ) {
serializedNode = new Map<String, Object>();
this.name = name;
}

public String getName() {
return name;
}

public sfab_FabricatedSObjectNodeStub(Map<String, Object> serializedNode) {
this.serializedNode = serializedNode;
}

public Map<String, Object> serialize( Boolean persistable ) {
serializeInvoked = true;
return serializedNode;
}

public void postBuildProcess( Object objectToProcess ) {
}
}

public class sfab_FabricatedSObjectStub extends sfab_FabricatedSObject {
private Map<String, Object> serializedMap;
@testVisible private Boolean serializeInvoked = false;
@testVisible private Boolean serializeInvokedWith = null;

public sfab_FabricatedSObjectStub(Type sType) {
super(sType);
this.serializedMap = new Map<String, Object>();
}

public sfab_FabricatedSObjectStub(Type sType, Map<String, Object> serializedMap) {
super(sType);
this.serializedMap = serializedMap;
}

public override Map<String, Object> serialize( Boolean persistable ) {
serializeInvoked = true;
serializeInvokedWith = persistable;
return serializedMap;
}
}
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
public class sfab_FieldValuePairNode implements sfab_FabricatedSObjectNode {
public class sfab_FieldValuePairNode implements sfab_FabricatedSObject.sfab_FabricatedSObjectNode {
@testVisible protected Schema.SObjectField field;
@testVisible protected Object value;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
public class sfab_ParentRelationshipNode implements sfab_FabricatedSObjectNode {
public class sfab_ParentRelationshipNode implements sfab_FabricatedSObject.sfab_FabricatedSObjectNode {

@testVisible private String fieldName;
@testVisible private sfab_FabricatedSObject parent;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
private class sfab_ChildRelationshipNodeTest {
@isTest
private static void serialize_whenPassedTrue_expectSerializeInvokedOnChildren() {
sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObjectStub(Account.class);
sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObjectStub(Account.class);
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class);
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class);
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObject> { child1, child2 });

node.serialize( true );
Expand All @@ -15,8 +15,8 @@ private class sfab_ChildRelationshipNodeTest {
}
@isTest
private static void serialize_whenPassedFalse_expectSerializeInvokedOnChildren() {
sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObjectStub(Account.class);
sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObjectStub(Account.class);
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class);
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class);
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObject> { child1, child2 });

node.serialize( false );
Expand All @@ -39,9 +39,9 @@ private class sfab_ChildRelationshipNodeTest {

@isTest
private static void serialize_whenPassedTrue_expectTotalSizeMapKey() {
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObjectStub> {
new sfab_FabricatedSObjectStub(Account.class),
new sfab_FabricatedSObjectStub(Account.class)
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObject.sfab_FabricatedSObjectStub> {
new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class),
new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class)
});

Map<String, Object> builtNode = node.serialize( true );
Expand All @@ -52,8 +52,8 @@ private class sfab_ChildRelationshipNodeTest {

@isTest
private static void serialize_whenPassedTrue_expectSerializedChildrenMap() {
sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' });
sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' });
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObject> { child1, child2 });

List<Map<String, Object>> serializedChildren = new List<Map<String, Object>>();
Expand All @@ -77,9 +77,9 @@ private class sfab_ChildRelationshipNodeTest {

@isTest
private static void serialize_whenPassedFalse_expectTotalSizeMapKey() {
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObjectStub> {
new sfab_FabricatedSObjectStub(Account.class),
new sfab_FabricatedSObjectStub(Account.class)
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObject.sfab_FabricatedSObjectStub> {
new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class),
new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class)
});

Map<String, Object> builtNode = node.serialize( false );
Expand All @@ -90,8 +90,8 @@ private class sfab_ChildRelationshipNodeTest {

@isTest
private static void serialize_whenPassedFalse_expectSerializedChildrenMap() {
sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' });
sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' });
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObject> { child1, child2 });

List<Map<String, Object>> serializedChildren = new List<Map<String, Object>>();
Expand All @@ -106,8 +106,8 @@ private class sfab_ChildRelationshipNodeTest {
@isTest
private static void getNumberOfChildren_expectNumberOfChildrenAdded() {

sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' });
sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' });
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List<sfab_FabricatedSObject> { child1, child2 });

System.assertEquals(2, node.getNumberOfChildren());
Expand All @@ -116,9 +116,9 @@ private class sfab_ChildRelationshipNodeTest {
@isTest
private static void getChildren_expectTheChildren() {

sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' });
sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' });
List<sfab_FabricatedSObjectStub> children = new List<sfab_FabricatedSObjectStub> { child1, child2 };
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' });
List<sfab_FabricatedSObject.sfab_FabricatedSObjectStub> children = new List<sfab_FabricatedSObject.sfab_FabricatedSObjectStub> { child1, child2 };
sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', children);

System.assertEquals(children, node.getChildren());
Expand All @@ -140,8 +140,8 @@ private class sfab_ChildRelationshipNodeTest {
private static void addChild_expectAddsAChildNode() {

sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r' );
node.addChild( new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' } ) );
node.addChild( new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' } ) );
node.addChild( new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-1' } ) );
node.addChild( new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo-2' } ) );

System.assertEquals(2, node.getNumberOfChildren());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@ private class sfab_FabricatedSObjectTest {

@isTest
private static void toSObject_expectSerializeInvokedOnNodes() {
sfab_FabricatedSObjectNodeStub node1 = new sfab_FabricatedSObjectNodeStub( 'node1' );
sfab_FabricatedSObjectNodeStub node2 = new sfab_FabricatedSObjectNodeStub( 'node2' );
SObject sObj = new sfab_FabricatedSObject(Account.class, new List<sfab_FabricatedSObjectNode> { node1, node2 }).toSObject();
sfab_FabricatedSObject.sfab_FabricatedSObjectNodeStub node1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectNodeStub( 'node1' );
sfab_FabricatedSObject.sfab_FabricatedSObjectNodeStub node2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectNodeStub( 'node2' );
SObject sObj = new sfab_FabricatedSObject(Account.class, new List<sfab_FabricatedSObject.sfab_FabricatedSObjectNode> { node1, node2 }).toSObject();
System.assert(node1.serializeInvoked);
System.assert(node2.serializeInvoked);
}

@isTest
private static void toSObject_expectProperties() {
Map<String, Object> fields = new Map<String, Object> { 'Id' => 'id-1', 'Name' => 'Foo' };
sfab_FabricatedSObjectNodeStub node = new sfab_FabricatedSObjectNodeStub(fields);
SObject sObj = new sfab_FabricatedSObject(Account.class, new List<sfab_FabricatedSObjectNode> { node }).toSObject();
sfab_FabricatedSObject.sfab_FabricatedSObjectNodeStub node = new sfab_FabricatedSObject.sfab_FabricatedSObjectNodeStub(fields);
SObject sObj = new sfab_FabricatedSObject(Account.class, new List<sfab_FabricatedSObject.sfab_FabricatedSObjectNode> { node }).toSObject();
System.assertEquals(fields.get('Id'), sObj.Id);
System.assertEquals(fields.get('Name'), sObj.get('Name'));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
private class sfab_ParentRelationshipNodeTest {
@isTest
private static void serialize_whenPassedTrue_expectSerializeInvokedOnParent() {
sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObjectStub(Account.class);
sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class);
sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent);

node.serialize( true );
Expand All @@ -13,7 +13,7 @@ private class sfab_ParentRelationshipNodeTest {

@isTest
private static void serialize_whenPassedFalse_expectSerializeInvokedOnParent() {
sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObjectStub(Account.class);
sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class);
sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent);

node.serialize( false );
Expand All @@ -24,7 +24,7 @@ private class sfab_ParentRelationshipNodeTest {

@isTest
private static void serialize_whenPassedFalse_expectSerializedParentMap() {
sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo' });
sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent);

Map<String, Object> builtNode = node.serialize( false );
Expand All @@ -34,7 +34,7 @@ private class sfab_ParentRelationshipNodeTest {

@isTest
private static void serialize_whenPassedTrue_expectSerializedParentMap() {
sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo' });
sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent);

Map<String, Object> builtNode = node.serialize( true );
Expand All @@ -44,15 +44,15 @@ private class sfab_ParentRelationshipNodeTest {

@isTest
private static void getName_expectParentReturned() {
sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo' });
sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent);

System.assertEquals( 'Account__r', node.getName() );
}

@isTest
private static void getParent_expectParentReturned() {
sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo' });
sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map<String, Object> { 'Name' => 'Foo' });
sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent);

System.assertEquals( fabricatedParent, node.getParent() );
Expand Down

0 comments on commit 7427970

Please sign in to comment.