diff --git a/framework/default/sobject-fabricator/classes/sfab_ChildRelationshipNode.cls b/framework/default/sobject-fabricator/classes/sfab_ChildRelationshipNode.cls deleted file mode 100644 index 9edcc2f7f7f..00000000000 --- a/framework/default/sobject-fabricator/classes/sfab_ChildRelationshipNode.cls +++ /dev/null @@ -1,59 +0,0 @@ -public class sfab_ChildRelationshipNode implements sfab_FabricatedSObject.sfab_FabricatedSObjectNode { - - @testVisible private String fieldName; - @testVisible private List children; - - public sfab_ChildRelationshipNode( String fieldName ) { - this.fieldName = fieldName; - this.children = new List(); - } - - public sfab_ChildRelationshipNode(String fieldName, List children) { - this.fieldName = fieldName; - this.children = children; - } - - public sfab_ChildRelationshipNode addChild( sfab_FabricatedSObject child ) { - this.children.add( child ); - return this; - } - - public String getName() { - return fieldName; - } - - public Integer getNumberOfChildren() { - return children.size(); - } - - public List getChildren() { - return children; - } - - public Map serialize( Boolean persistable ) { - List> serializedChildren = new List>(); - - for (sfab_FabricatedSObject child : children) { - serializedChildren.add(child.serialize( persistable )); - } - - return new Map { - fieldName => new Map { - 'totalSize' => children.size(), - 'done' => true, - 'records' => serializedChildren - } - }; - } - - public void postBuildProcess( Object objectToProcess ) { - // Note: this relies on the deserialization of the Fabricated SObject returning the - // child objects in same order as the input map, otherwise the Blob field values - // will be applied to the wrong objects. As far as we can tell, this is reliable - // at the time of writing. If it becomes not the case, this will need re-writing - List childSobjects = ((Sobject)objectToProcess).getSObjects( fieldName ); - for ( Integer i=0; i - - 53.0 - Active - diff --git a/framework/default/sobject-fabricator/classes/sfab_FabricatedSObject.cls b/framework/default/sobject-fabricator/classes/sfab_FabricatedSObject.cls index 188ff6412b7..9958d1c5fbc 100644 --- a/framework/default/sobject-fabricator/classes/sfab_FabricatedSObject.cls +++ b/framework/default/sobject-fabricator/classes/sfab_FabricatedSObject.cls @@ -664,33 +664,163 @@ public virtual class sfab_FabricatedSObject { } } - public class sfab_FabricatedSObjectNodeStub implements sfab_FabricatedSObjectNode { - public Boolean serializeInvoked = false; - public Map serializedNode; - private String name; + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // sfab_FabricatedSObjectNode implementations + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - public sfab_FabricatedSObjectNodeStub( String name ) { - serializedNode = new Map(); - this.name = name; + public class sfab_FieldValuePairNode implements sfab_FabricatedSObjectNode { + + @testVisible protected Schema.SObjectField field; + @testVisible protected Object value; + + public sfab_FieldValuePairNode(Schema.SObjectField field, Object value) { + this.field = field; + this.value = value; } public String getName() { - return name; + return field?.getDescribe().getName(); } - public sfab_FabricatedSObjectNodeStub(Map serializedNode) { - this.serializedNode = serializedNode; + public Object getValue() { + return value; + } + + public Map serialize( Boolean persistable ) { + if ( fieldIsBlob() ) { + return new Map(); // is handled by the post process instead as deserializing a blob field does not work (API 50) + } else { + return new Map { getName() => value }; + } + } + + public void postBuildProcess( Object objectToProcess ) { + if ( fieldIsBlob() ) { + Blob valueToSet; + if ( value instanceOf Blob ) { + valueToSet = (Blob)value; + } else if ( value instanceOf String ) { + valueToSet = Blob.valueOf( (String)value ); + } + ((Sobject)objectToProcess).put( field, valueToSet ); + } + } + + private Boolean fieldIsBlob() { + return field.getDescribe().getType() == Schema.DisplayType.BASE64; + } + } + + public class sfab_ChildRelationshipNode implements sfab_FabricatedSObjectNode { + + @testVisible private String fieldName; + @testVisible private List children; + + public sfab_ChildRelationshipNode( String fieldName ) { + this.fieldName = fieldName; + this.children = new List(); + } + + public sfab_ChildRelationshipNode(String fieldName, List children) { + this.fieldName = fieldName; + this.children = children; + } + + public sfab_ChildRelationshipNode addChild( sfab_FabricatedSObject child ) { + this.children.add( child ); + return this; + } + + public String getName() { + return fieldName; + } + + public Integer getNumberOfChildren() { + return children.size(); + } + + public List getChildren() { + return children; } public Map serialize( Boolean persistable ) { - serializeInvoked = true; - return serializedNode; + List> serializedChildren = new List>(); + + for (sfab_FabricatedSObject child : children) { + serializedChildren.add(child.serialize( persistable )); + } + + return new Map { + fieldName => new Map { + 'totalSize' => children.size(), + 'done' => true, + 'records' => serializedChildren + } + }; + } + + public void postBuildProcess( Object objectToProcess ) { + // Note: this relies on the deserialization of the Fabricated SObject returning the + // child objects in same order as the input map, otherwise the Blob field values + // will be applied to the wrong objects. As far as we can tell, this is reliable + // at the time of writing. If it becomes not the case, this will need re-writing + List childSobjects = ((Sobject)objectToProcess).getSObjects( fieldName ); + for ( Integer i=0; i serialize( Boolean persistable ) { + + Object serializedParent = parent.serialize( persistable ); + Map fields = new Map(); + if ( ! persistable ) + { + fields.put( fieldName, serializedParent ); + } + return fields; } public void postBuildProcess( Object objectToProcess ) { + parent.postBuildProcess( ((Sobject)objectToProcess).getSobject( fieldName ) ); } } + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // Stub implementations + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + public class sfab_FabricatedSObjectStub extends sfab_FabricatedSObject { private Map serializedMap; @testVisible private Boolean serializeInvoked = false; @@ -712,4 +842,31 @@ public virtual class sfab_FabricatedSObject { return serializedMap; } } + + public class sfab_FabricatedSObjectNodeStub implements sfab_FabricatedSObjectNode { + public Boolean serializeInvoked = false; + public Map serializedNode; + private String name; + + public sfab_FabricatedSObjectNodeStub( String name ) { + serializedNode = new Map(); + this.name = name; + } + + public String getName() { + return name; + } + + public sfab_FabricatedSObjectNodeStub(Map serializedNode) { + this.serializedNode = serializedNode; + } + + public Map serialize( Boolean persistable ) { + serializeInvoked = true; + return serializedNode; + } + + public void postBuildProcess( Object objectToProcess ) { + } + } } \ No newline at end of file diff --git a/framework/default/sobject-fabricator/classes/sfab_FieldValuePairNode.cls b/framework/default/sobject-fabricator/classes/sfab_FieldValuePairNode.cls deleted file mode 100644 index 15a23e47518..00000000000 --- a/framework/default/sobject-fabricator/classes/sfab_FieldValuePairNode.cls +++ /dev/null @@ -1,41 +0,0 @@ -public class sfab_FieldValuePairNode implements sfab_FabricatedSObject.sfab_FabricatedSObjectNode { - @testVisible protected Schema.SObjectField field; - @testVisible protected Object value; - - public sfab_FieldValuePairNode(Schema.SObjectField field, Object value) { - this.field = field; - this.value = value; - } - - public String getName() { - return field?.getDescribe().getName(); - } - - public Object getValue() { - return value; - } - - public Map serialize( Boolean persistable ) { - if ( fieldIsBlob() ) { - return new Map(); // is handled by the post process instead as deserializing a blob field does not work (API 50) - } else { - return new Map { getName() => value }; - } - } - - public void postBuildProcess( Object objectToProcess ) { - if ( fieldIsBlob() ) { - Blob valueToSet; - if ( value instanceOf Blob ) { - valueToSet = (Blob)value; - } else if ( value instanceOf String ) { - valueToSet = Blob.valueOf( (String)value ); - } - ((Sobject)objectToProcess).put( field, valueToSet ); - } - } - - private Boolean fieldIsBlob() { - return field.getDescribe().getType() == Schema.DisplayType.BASE64; - } -} \ No newline at end of file diff --git a/framework/default/sobject-fabricator/classes/sfab_FieldValuePairNode.cls-meta.xml b/framework/default/sobject-fabricator/classes/sfab_FieldValuePairNode.cls-meta.xml deleted file mode 100644 index f928c8e56bc..00000000000 --- a/framework/default/sobject-fabricator/classes/sfab_FieldValuePairNode.cls-meta.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 53.0 - Active - diff --git a/framework/default/sobject-fabricator/classes/sfab_ParentRelationshipNode.cls b/framework/default/sobject-fabricator/classes/sfab_ParentRelationshipNode.cls deleted file mode 100644 index 1a1ad262f64..00000000000 --- a/framework/default/sobject-fabricator/classes/sfab_ParentRelationshipNode.cls +++ /dev/null @@ -1,42 +0,0 @@ -public class sfab_ParentRelationshipNode implements sfab_FabricatedSObject.sfab_FabricatedSObjectNode { - - @testVisible private String fieldName; - @testVisible private sfab_FabricatedSObject parent; - - public sfab_ParentRelationshipNode(String fieldName, sfab_FabricatedSObject parent) { - this.fieldName = fieldName; - this.parent = parent; - } - - public String getName() { - return fieldName; - } - - public sfab_FabricatedSObject getParent() { - return parent; - } - - public sfab_FabricatedSObject set( String fieldName, Object value ) { - return parent.set( fieldName, value ); - } - - public sfab_FabricatedSObject add( String fieldName, sfab_FabricatedSObject fabricatedChild ) { - return parent.add( fieldName, fabricatedChild ); - } - - public Map serialize( Boolean persistable ) { - - Object serializedParent = parent.serialize( persistable ); - Map fields = new Map(); - if ( ! persistable ) - { - fields.put( fieldName, serializedParent ); - } - return fields; - } - - public void postBuildProcess( Object objectToProcess ) { - parent.postBuildProcess( ((Sobject)objectToProcess).getSobject( fieldName ) ); - } - -} \ No newline at end of file diff --git a/framework/default/sobject-fabricator/classes/sfab_ParentRelationshipNode.cls-meta.xml b/framework/default/sobject-fabricator/classes/sfab_ParentRelationshipNode.cls-meta.xml deleted file mode 100644 index f928c8e56bc..00000000000 --- a/framework/default/sobject-fabricator/classes/sfab_ParentRelationshipNode.cls-meta.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 53.0 - Active - diff --git a/framework/default/sobject-fabricator/classes/tests/sfab_ChildRelationshipNodeTest.cls b/framework/default/sobject-fabricator/classes/tests/sfab_ChildRelationshipNodeTest.cls deleted file mode 100644 index 8edb8276c21..00000000000 --- a/framework/default/sobject-fabricator/classes/tests/sfab_ChildRelationshipNodeTest.cls +++ /dev/null @@ -1,148 +0,0 @@ -@isTest -private class sfab_ChildRelationshipNodeTest { - @isTest - private static void serialize_whenPassedTrue_expectSerializeInvokedOnChildren() { - 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 { child1, child2 }); - - node.serialize( true ); - - System.assert(child1.serializeInvoked); - System.assert(child1.serializeInvokedWith); - System.assert(child2.serializeInvoked); - System.assert(child2.serializeInvokedWith); - } - @isTest - private static void serialize_whenPassedFalse_expectSerializeInvokedOnChildren() { - 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 { child1, child2 }); - - node.serialize( false ); - - System.assert(child1.serializeInvoked); - System.assert(!child1.serializeInvokedWith); - System.assert(child2.serializeInvoked); - System.assert(!child2.serializeInvokedWith); - } - - @isTest - private static void serialize_whenPassedTrue_expectDoneMapKey() { - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List()); - - Map builtNode = node.serialize( true ); - - System.assert(((Map)builtNode.get('Accounts__r')).containsKey('done')); - System.assert((Boolean)((Map)builtNode.get('Accounts__r')).get('done')); - } - - @isTest - private static void serialize_whenPassedTrue_expectTotalSizeMapKey() { - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List { - new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class), - new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class) - }); - - Map builtNode = node.serialize( true ); - - System.assert(((Map)builtNode.get('Accounts__r')).containsKey('totalSize')); - System.assertEquals(2, ((Map)builtNode.get('Accounts__r')).get('totalSize')); - } - - @isTest - private static void serialize_whenPassedTrue_expectSerializedChildrenMap() { - sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' }); - sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' }); - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List { child1, child2 }); - - List> serializedChildren = new List>(); - serializedChildren.add(child1.serialize()); - serializedChildren.add(child2.serialize()); - - Map builtNode = node.serialize( true ); - - System.assertEquals(serializedChildren, ((Map)builtNode.get('Accounts__r')).get('records')); - } - - @isTest - private static void serialize_whenPassedFalse_expectDoneMapKey() { - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List()); - - Map builtNode = node.serialize( false ); - - System.assert(((Map)builtNode.get('Accounts__r')).containsKey('done')); - System.assert((Boolean)((Map)builtNode.get('Accounts__r')).get('done')); - } - - @isTest - private static void serialize_whenPassedFalse_expectTotalSizeMapKey() { - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List { - new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class), - new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class) - }); - - Map builtNode = node.serialize( false ); - - System.assert(((Map)builtNode.get('Accounts__r')).containsKey('totalSize')); - System.assertEquals(2, ((Map)builtNode.get('Accounts__r')).get('totalSize')); - } - - @isTest - private static void serialize_whenPassedFalse_expectSerializedChildrenMap() { - sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' }); - sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' }); - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List { child1, child2 }); - - List> serializedChildren = new List>(); - serializedChildren.add(child1.serialize()); - serializedChildren.add(child2.serialize()); - - Map builtNode = node.serialize( false ); - - System.assertEquals(serializedChildren, ((Map)builtNode.get('Accounts__r')).get('records')); - } - - @isTest - private static void getNumberOfChildren_expectNumberOfChildrenAdded() { - - sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' }); - sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' }); - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', new List { child1, child2 }); - - System.assertEquals(2, node.getNumberOfChildren()); - } - - @isTest - private static void getChildren_expectTheChildren() { - - sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' }); - sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' }); - List children = new List { child1, child2 }; - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r', children); - - System.assertEquals(children, node.getChildren()); - } - - @isTest - private static void getName_expectTheName() { - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r'); - System.assertEquals('Accounts__r', node.getName()); - } - - @isTest - private static void constructor_withNoChildren_expectEmptyChildren() { - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r'); - System.assertEquals(0, node.getNumberOfChildren()); - } - - @isTest - private static void addChild_expectAddsAChildNode() { - - sfab_ChildRelationshipNode node = new sfab_ChildRelationshipNode('Accounts__r' ); - node.addChild( new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' } ) ); - node.addChild( new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' } ) ); - - System.assertEquals(2, node.getNumberOfChildren()); - } -} \ No newline at end of file diff --git a/framework/default/sobject-fabricator/classes/tests/sfab_ChildRelationshipNodeTest.cls-meta.xml b/framework/default/sobject-fabricator/classes/tests/sfab_ChildRelationshipNodeTest.cls-meta.xml deleted file mode 100644 index f928c8e56bc..00000000000 --- a/framework/default/sobject-fabricator/classes/tests/sfab_ChildRelationshipNodeTest.cls-meta.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 53.0 - Active - diff --git a/framework/default/sobject-fabricator/classes/tests/sfab_FabricatedSObjectTest.cls b/framework/default/sobject-fabricator/classes/tests/sfab_FabricatedSObjectTest.cls index a849303df27..ef0ba30de64 100644 --- a/framework/default/sobject-fabricator/classes/tests/sfab_FabricatedSObjectTest.cls +++ b/framework/default/sobject-fabricator/classes/tests/sfab_FabricatedSObjectTest.cls @@ -911,4 +911,259 @@ private class sfab_FabricatedSObjectTest { System.assertEquals( Blob.valueOf( 'ghi' ), sobj.ContentVersions[1].VersionData ); System.assertEquals( Blob.valueOf( 'abc' ), sobj.ContentVersions[2].VersionData ); } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // sfab_FabricatedSObject.sfab_FieldValuePairNode tests + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @isTest + private static void fieldNode_serialize_whenPassedTrue_expectMap() { + sfab_FabricatedSObject.sfab_FieldValuePairNode node = new sfab_FabricatedSObject.sfab_FieldValuePairNode(Account.Name, 'Foo'); + Map builtNode = node.serialize( true ); + + System.assertEquals(new Map { 'Name' => 'Foo' }, builtNode); + } + @isTest + private static void fieldNode_serialize_whenPassedFalse_expectMap() { + sfab_FabricatedSObject.sfab_FieldValuePairNode node = new sfab_FabricatedSObject.sfab_FieldValuePairNode(Account.Name, 'Foo'); + Map builtNode = node.serialize( false ); + + System.assertEquals(new Map { 'Name' => 'Foo' }, builtNode); + } + + @isTest + private static void fieldNode_getName_expectNameFromField() { + sfab_FabricatedSObject.sfab_FieldValuePairNode node = new sfab_FabricatedSObject.sfab_FieldValuePairNode(Account.Name, 'Foo'); + System.assertEquals( 'Name', node.getName() ); + } + + @isTest + private static void fieldNode_getName_whenNoField_expectNull() { + sfab_FabricatedSObject.sfab_FieldValuePairNode node = new sfab_FabricatedSObject.sfab_FieldValuePairNode(null, 'Foo'); + System.assertEquals( null, node.getName() ); + } + + @isTest + private static void fieldNode_getValue_expectValueFromField() { + sfab_FabricatedSObject.sfab_FieldValuePairNode node = new sfab_FabricatedSObject.sfab_FieldValuePairNode(Account.Name, 'Foo'); + System.assertEquals( 'Foo', node.getValue() ); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // sfab_FabricatedSObject.sfab_FabricatedSObject.sfab_ChildRelationshipNode tests + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @isTest + private static void childNode_serialize_whenPassedTrue_expectSerializeInvokedOnChildren() { + 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_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List { child1, child2 }); + + node.serialize( true ); + + System.assert(child1.serializeInvoked); + System.assert(child1.serializeInvokedWith); + System.assert(child2.serializeInvoked); + System.assert(child2.serializeInvokedWith); + } + @isTest + private static void childNode_serialize_whenPassedFalse_expectSerializeInvokedOnChildren() { + 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_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List { child1, child2 }); + + node.serialize( false ); + + System.assert(child1.serializeInvoked); + System.assert(!child1.serializeInvokedWith); + System.assert(child2.serializeInvoked); + System.assert(!child2.serializeInvokedWith); + } + + @isTest + private static void childNode_serialize_whenPassedTrue_expectDoneMapKey() { + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List()); + + Map builtNode = node.serialize( true ); + + System.assert(((Map)builtNode.get('Accounts__r')).containsKey('done')); + System.assert((Boolean)((Map)builtNode.get('Accounts__r')).get('done')); + } + + @isTest + private static void childNode_serialize_whenPassedTrue_expectTotalSizeMapKey() { + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List { + new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class), + new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class) + }); + + Map builtNode = node.serialize( true ); + + System.assert(((Map)builtNode.get('Accounts__r')).containsKey('totalSize')); + System.assertEquals(2, ((Map)builtNode.get('Accounts__r')).get('totalSize')); + } + + @isTest + private static void childNode_serialize_whenPassedTrue_expectSerializedChildrenMap() { + sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' }); + sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' }); + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List { child1, child2 }); + + List> serializedChildren = new List>(); + serializedChildren.add(child1.serialize()); + serializedChildren.add(child2.serialize()); + + Map builtNode = node.serialize( true ); + + System.assertEquals(serializedChildren, ((Map)builtNode.get('Accounts__r')).get('records')); + } + + @isTest + private static void childNode_serialize_whenPassedFalse_expectDoneMapKey() { + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List()); + + Map builtNode = node.serialize( false ); + + System.assert(((Map)builtNode.get('Accounts__r')).containsKey('done')); + System.assert((Boolean)((Map)builtNode.get('Accounts__r')).get('done')); + } + + @isTest + private static void childNode_serialize_whenPassedFalse_expectTotalSizeMapKey() { + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List { + new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class), + new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class) + }); + + Map builtNode = node.serialize( false ); + + System.assert(((Map)builtNode.get('Accounts__r')).containsKey('totalSize')); + System.assertEquals(2, ((Map)builtNode.get('Accounts__r')).get('totalSize')); + } + + @isTest + private static void childNode_serialize_whenPassedFalse_expectSerializedChildrenMap() { + sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' }); + sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' }); + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List { child1, child2 }); + + List> serializedChildren = new List>(); + serializedChildren.add(child1.serialize()); + serializedChildren.add(child2.serialize()); + + Map builtNode = node.serialize( false ); + + System.assertEquals(serializedChildren, ((Map)builtNode.get('Accounts__r')).get('records')); + } + + @isTest + private static void childNode_getNumberOfChildren_expectNumberOfChildrenAdded() { + + sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' }); + sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' }); + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', new List { child1, child2 }); + + System.assertEquals(2, node.getNumberOfChildren()); + } + + @isTest + private static void childNode_getChildren_expectTheChildren() { + + sfab_FabricatedSObject.sfab_FabricatedSObjectStub child1 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' }); + sfab_FabricatedSObject.sfab_FabricatedSObjectStub child2 = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' }); + List children = new List { child1, child2 }; + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r', children); + + System.assertEquals(children, node.getChildren()); + } + + @isTest + private static void childNode_getName_expectTheName() { + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r'); + System.assertEquals('Accounts__r', node.getName()); + } + + @isTest + private static void childNode_constructor_withNoChildren_expectEmptyChildren() { + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r'); + System.assertEquals(0, node.getNumberOfChildren()); + } + + @isTest + private static void childNode_addChild_expectAddsAChildNode() { + + sfab_FabricatedSObject.sfab_ChildRelationshipNode node = new sfab_FabricatedSObject.sfab_ChildRelationshipNode('Accounts__r' ); + node.addChild( new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-1' } ) ); + node.addChild( new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo-2' } ) ); + + System.assertEquals(2, node.getNumberOfChildren()); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // sfab_FabricatedSObject.sfab_ParentRelationshipNode tests + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @isTest + private static void parentNode_serialize_whenPassedTrue_expectSerializeInvokedOnParent() { + sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class); + sfab_FabricatedSObject.sfab_ParentRelationshipNode node = new sfab_FabricatedSObject.sfab_ParentRelationshipNode('Account__r', fabricatedParent); + + node.serialize( true ); + + System.assert(fabricatedParent.serializeInvoked); + System.assert(fabricatedParent.serializeInvokedWith); + } + + @isTest + private static void parentNode_serialize_whenPassedFalse_expectSerializeInvokedOnParent() { + sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class); + sfab_FabricatedSObject.sfab_ParentRelationshipNode node = new sfab_FabricatedSObject.sfab_ParentRelationshipNode('Account__r', fabricatedParent); + + node.serialize( false ); + + System.assert(fabricatedParent.serializeInvoked); + System.assert(!fabricatedParent.serializeInvokedWith); + } + + @isTest + private static void parentNode_serialize_whenPassedFalse_expectSerializedParentMap() { + sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo' }); + sfab_FabricatedSObject.sfab_ParentRelationshipNode node = new sfab_FabricatedSObject.sfab_ParentRelationshipNode('Account__r', fabricatedParent); + + Map builtNode = node.serialize( false ); + + System.assertEquals(new Map { 'Account__r' => fabricatedParent.serialize() }, builtNode); + } + + @isTest + private static void parentNode_serialize_whenPassedTrue_expectSerializedParentMap() { + sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo' }); + sfab_FabricatedSObject.sfab_ParentRelationshipNode node = new sfab_FabricatedSObject.sfab_ParentRelationshipNode('Account__r', fabricatedParent); + + Map builtNode = node.serialize( true ); + + System.assertEquals(new Map(), builtNode); + } + + @isTest + private static void parentNode_getName_expectParentReturned() { + sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo' }); + sfab_FabricatedSObject.sfab_ParentRelationshipNode node = new sfab_FabricatedSObject.sfab_ParentRelationshipNode('Account__r', fabricatedParent); + + System.assertEquals( 'Account__r', node.getName() ); + } + + @isTest + private static void parentNode_getParent_expectParentReturned() { + sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo' }); + sfab_FabricatedSObject.sfab_ParentRelationshipNode node = new sfab_FabricatedSObject.sfab_ParentRelationshipNode('Account__r', fabricatedParent); + + System.assertEquals( fabricatedParent, node.getParent() ); + } } \ No newline at end of file diff --git a/framework/default/sobject-fabricator/classes/tests/sfab_FieldValuePairNodeTest.cls b/framework/default/sobject-fabricator/classes/tests/sfab_FieldValuePairNodeTest.cls deleted file mode 100644 index 99c82ad8ac3..00000000000 --- a/framework/default/sobject-fabricator/classes/tests/sfab_FieldValuePairNodeTest.cls +++ /dev/null @@ -1,35 +0,0 @@ -@isTest -private class sfab_FieldValuePairNodeTest { - @isTest - private static void serialize_whenPassedTrue_expectMap() { - sfab_FieldValuePairNode node = new sfab_FieldValuePairNode(Account.Name, 'Foo'); - Map builtNode = node.serialize( true ); - - System.assertEquals(new Map { 'Name' => 'Foo' }, builtNode); - } - @isTest - private static void serialize_whenPassedFalse_expectMap() { - sfab_FieldValuePairNode node = new sfab_FieldValuePairNode(Account.Name, 'Foo'); - Map builtNode = node.serialize( false ); - - System.assertEquals(new Map { 'Name' => 'Foo' }, builtNode); - } - - @isTest - private static void getName_expectNameFromField() { - sfab_FieldValuePairNode node = new sfab_FieldValuePairNode(Account.Name, 'Foo'); - System.assertEquals( 'Name', node.getName() ); - } - - @isTest - private static void getName_whenNoField_expectNull() { - sfab_FieldValuePairNode node = new sfab_FieldValuePairNode(null, 'Foo'); - System.assertEquals( null, node.getName() ); - } - - @isTest - private static void getValue_expectValueFromField() { - sfab_FieldValuePairNode node = new sfab_FieldValuePairNode(Account.Name, 'Foo'); - System.assertEquals( 'Foo', node.getValue() ); - } -} \ No newline at end of file diff --git a/framework/default/sobject-fabricator/classes/tests/sfab_FieldValuePairNodeTest.cls-meta.xml b/framework/default/sobject-fabricator/classes/tests/sfab_FieldValuePairNodeTest.cls-meta.xml deleted file mode 100644 index f928c8e56bc..00000000000 --- a/framework/default/sobject-fabricator/classes/tests/sfab_FieldValuePairNodeTest.cls-meta.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 53.0 - Active - diff --git a/framework/default/sobject-fabricator/classes/tests/sfab_ParentRelationshipNodeTest.cls b/framework/default/sobject-fabricator/classes/tests/sfab_ParentRelationshipNodeTest.cls deleted file mode 100644 index 0d7648695d9..00000000000 --- a/framework/default/sobject-fabricator/classes/tests/sfab_ParentRelationshipNodeTest.cls +++ /dev/null @@ -1,60 +0,0 @@ -@isTest -private class sfab_ParentRelationshipNodeTest { - @isTest - private static void serialize_whenPassedTrue_expectSerializeInvokedOnParent() { - sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class); - sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent); - - node.serialize( true ); - - System.assert(fabricatedParent.serializeInvoked); - System.assert(fabricatedParent.serializeInvokedWith); - } - - @isTest - private static void serialize_whenPassedFalse_expectSerializeInvokedOnParent() { - sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class); - sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent); - - node.serialize( false ); - - System.assert(fabricatedParent.serializeInvoked); - System.assert(!fabricatedParent.serializeInvokedWith); - } - - @isTest - private static void serialize_whenPassedFalse_expectSerializedParentMap() { - sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo' }); - sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent); - - Map builtNode = node.serialize( false ); - - System.assertEquals(new Map { 'Account__r' => fabricatedParent.serialize() }, builtNode); - } - - @isTest - private static void serialize_whenPassedTrue_expectSerializedParentMap() { - sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo' }); - sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent); - - Map builtNode = node.serialize( true ); - - System.assertEquals(new Map(), builtNode); - } - - @isTest - private static void getName_expectParentReturned() { - sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo' }); - sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent); - - System.assertEquals( 'Account__r', node.getName() ); - } - - @isTest - private static void getParent_expectParentReturned() { - sfab_FabricatedSObject.sfab_FabricatedSObjectStub fabricatedParent = new sfab_FabricatedSObject.sfab_FabricatedSObjectStub(Account.class, new Map { 'Name' => 'Foo' }); - sfab_ParentRelationshipNode node = new sfab_ParentRelationshipNode('Account__r', fabricatedParent); - - System.assertEquals( fabricatedParent, node.getParent() ); - } -} \ No newline at end of file diff --git a/framework/default/sobject-fabricator/classes/tests/sfab_ParentRelationshipNodeTest.cls-meta.xml b/framework/default/sobject-fabricator/classes/tests/sfab_ParentRelationshipNodeTest.cls-meta.xml deleted file mode 100644 index f928c8e56bc..00000000000 --- a/framework/default/sobject-fabricator/classes/tests/sfab_ParentRelationshipNodeTest.cls-meta.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 53.0 - Active -