1
0
mirror of synced 2025-01-18 06:21:40 +03:00

Merge pull request #158 from goetas/cascade-all

Collapsed cascade elements, if cascade-all.
This commit is contained in:
Benjamin Eberlei 2011-11-18 06:49:40 -08:00
commit 0d4e0626cf
5 changed files with 47 additions and 0 deletions

View File

@ -279,6 +279,9 @@ class XmlExporter extends AbstractExporter
if ($associationMapping['isCascadeDetach']) {
$cascade[] = 'cascade-detach';
}
if (count($cascade) === 5) {
$cascade = array('cascade-all');
}
if ($cascade) {
$cascadeXml = $associationMappingXml->addChild('cascade');
foreach ($cascade as $type) {

View File

@ -147,6 +147,9 @@ class YamlExporter extends AbstractExporter
if ($associationMapping['isCascadeDetach']) {
$cascade[] = 'detach';
}
if (count($cascade) === 5) {
$cascade = array('all');
}
$associationMappingArray = array(
'targetEntity' => $associationMapping['targetEntity'],
'cascade' => $cascade,

View File

@ -324,7 +324,33 @@ abstract class AbstractClassMetadataExporterTest extends \Doctrine\Tests\OrmTest
{
$this->assertEquals('user', $class->associationMappings['address']['inversedBy']);
}
/**
* @depends testExportDirectoryAndFilesAreCreated
*/
public function testCascadeAllCollapsed()
{
$type = $this->_getType();
if ($type == 'xml') {
$xml = simplexml_load_file(__DIR__ . '/export/'.$type.'/Doctrine.Tests.ORM.Tools.Export.ExportedUser.dcm.xml');
$xml->registerXPathNamespace("d", "http://doctrine-project.org/schemas/orm/doctrine-mapping");
$nodes = $xml->xpath("/d:doctrine-mapping/d:entity/d:one-to-many[@field='interests']/d:cascade/d:*");
$this->assertEquals(1, count($nodes));
$this->assertEquals('cascade-all', $nodes[0]->getName());
} elseif ($type == 'yaml') {
$yaml = new \Symfony\Component\Yaml\Parser();
$value = $yaml->parse(file_get_contents(__DIR__ . '/export/'.$type.'/Doctrine.Tests.ORM.Tools.Export.ExportedUser.dcm.yml'));
$this->assertTrue(isset($value['Doctrine\Tests\ORM\Tools\Export\ExportedUser']['oneToMany']['interests']['cascade']));
$this->assertEquals(1, count($value['Doctrine\Tests\ORM\Tools\Export\ExportedUser']['oneToMany']['interests']['cascade']));
$this->assertEquals('all', $value['Doctrine\Tests\ORM\Tools\Export\ExportedUser']['oneToMany']['interests']['cascade'][0]);
} else {
$this->markTestSkipped('Test aviable only for '.$type.' dirver');
}
}
public function __destruct()
{
# $this->_deleteDirectory(__DIR__ . '/export/'.$this->_getType());

View File

@ -35,6 +35,16 @@
</order-by>
</one-to-many>
<one-to-many field="interests" target-entity="Doctrine\Tests\ORM\Tools\Export\Interests" mapped-by="user" orphan-removal="true">
<cascade>
<cascade-refresh/>
<cascade-persist/>
<cascade-merge/>
<cascade-detach/>
<cascade-remove/>
</cascade>
</one-to-many>
<many-to-many field="groups" target-entity="Doctrine\Tests\ORM\Tools\Export\Group">
<cascade>
<cascade-all/>

View File

@ -34,6 +34,11 @@ Doctrine\Tests\ORM\Tools\Export\User:
number: ASC
cascade: [ persist, merge ]
orphanRemoval: true
interests:
targetEntity: Doctrine\Tests\ORM\Tools\Export\Interests
mappedBy: user
cascade: [ persist, merge, remove, refresh, detach ]
orphanRemoval: true
manyToMany:
groups:
targetEntity: Doctrine\Tests\ORM\Tools\Export\Group