function ServiceNodeMapper()
 {
     parent::EntityDataMapper();
     $node_mapper = new CompositeMapper();
     $node_mapper->registerMapper(new LimbHandle(LIMB_DIR . '/core/data_mappers/TreeNodeDataMapper'));
     $node_mapper->registerMapper(new LimbHandle(LIMB_DIR . '/core/data_mappers/NodeConnectionMapper'));
     $this->registerPartMapper('node', $node_mapper);
     $this->registerPartMapper('service', new LimbHandle(LIMB_DIR . '/core/data_mappers/ServiceLocationMapper'));
 }
 function ContentServiceNodeMapper($table_class_name)
 {
     parent::EntityDataMapper();
     $node_mapper = new CompositeMapper();
     $node_mapper->registerMapper(new LimbHandle(LIMB_DIR . '/core/data_mappers/TreeNodeDataMapper'));
     $node_mapper->registerMapper(new LimbHandle(LIMB_DIR . '/core/data_mappers/NodeConnectionMapper'));
     $this->registerPartMapper('node', $node_mapper);
     $this->registerPartMapper('service', new LimbHandle(LIMB_DIR . '/core/data_mappers/ServiceLocationMapper'));
     $this->registerPartMapper('content', new LimbHandle(LIMB_DIR . '/core/data_mappers/OneTableObjectMapper', array($table_class_name)));
 }
  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();
  }