public function testManyCascadeDeleteOne()
{
$refManyTestObjForCascade = new RefManyTestObjForCascade();
$refManyTestObjForCascade->id = "/functional/refManyTestObjForCascade";
$max = 5;
for ($i = 0; $i < $max; $i++) {
$newRefCascadeManyTestObj = new RefCascadeManyTestObj();
$newRefCascadeManyTestObj->id = "/functional/refCascadeManyTestObj{$i}";
$newRefCascadeManyTestObj->name = "refCascadeManyTestObj{$i}";
$refManyTestObjForCascade->references[] = $newRefCascadeManyTestObj;
}
$j = 0;
foreach ($refManyTestObjForCascade->references as $reference) {
for ($i = 0; $i < $max; $i++) {
$newRefRefTestObj = new RefRefTestObj();
$newRefRefTestObj->id = "/functional/refRefTestObj{$j}{$i}";
$newRefRefTestObj->name = "refRefTestObj{$j}{$i}";
$reference->references[] = $newRefRefTestObj;
}
$j++;
}
$this->dm->persist($refManyTestObjForCascade);
$this->dm->flush();
$this->dm->clear();
$referrer = $this->dm->find($this->referrerManyForCascadeType, '/functional/refManyTestObjForCascade');
$pos1 = 1;
$pos2 = 2;
$this->dm->remove($referrer->references[$pos1]->references[$pos2]);
$this->dm->flush();
$this->assertFalse($this->session->getNode("/functional")->hasNode("refRefTestObj{$pos1}{$pos2}"));
$this->assertTrue($this->session->getNode("/functional/refCascadeManyTestObj{$pos1}")->hasProperty("references"));
$this->assertCount($max, $this->session->getNode("/functional/refCascadeManyTestObj{$pos1}")->getProperty("references")->getString());
}