function testDelete() { $mapper = new EntityDataMapper(); $part1 = new EntityPartStub1(); $part2 = new EntityPartStub2(); $entity = new Entity(); $entity->registerPart('Part1', $part1); $entity->registerPart('Part2', $part2); $this->toolkit->expectCallCount('createDataMapper', 3); $this->toolkit->expectArgumentsAt(0, 'createDataMapper', array('ObjectMapper')); $this->toolkit->expectArgumentsAt(1, 'createDataMapper', array('EntityPartStub1Mapper')); $this->toolkit->expectArgumentsAt(2, 'createDataMapper', array('EntityPartStub2Mapper')); $object_mapper = new MockMapper($this); $mapper1 = new MockMapper($this); $mapper2 = new MockMapper($this); $this->toolkit->setReturnReference('createDataMapper', $object_mapper, array('ObjectMapper')); $this->toolkit->setReturnReference('createDataMapper', $mapper1, array('EntityPartStub1Mapper')); $this->toolkit->setReturnReference('createDataMapper', $mapper2, array('EntityPartStub2Mapper')); $object_mapper->expectOnce('delete', array($entity)); $mapper1->expectOnce('delete', array($part1)); $mapper2->expectOnce('delete', array($part2)); $mapper->delete($entity); $object_mapper->tally(); $mapper1->tally(); $mapper2->tally(); }