mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
BUG Correct relation saving in DataObject->duplicateRelations()
This caused problems when duplicate() was used in the CMS UI to duplicate a SiteTree object. Since every object of this type has a ParentID relation, it copied this empty relation into new "ghost page". See https://github.com/silverstripe/silverstripe-cms/issues/689
This commit is contained in:
parent
d5510f54b3
commit
f61ab7305d
@ -499,7 +499,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
|
||||
}
|
||||
}
|
||||
} else { //one-to-one relation
|
||||
$destinationObject->$name = $relations;
|
||||
$destinationObject->{"{$name}ID"} = $relations->ID;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
<?php
|
||||
|
||||
class DataObjectDuplicationTest extends SapphireTest {
|
||||
|
||||
protected $usesDatabase = true;
|
||||
|
||||
protected $extraDataObjects = array(
|
||||
'DataObjectDuplicateTestClass1',
|
||||
@ -28,6 +30,29 @@ class DataObjectDuplicationTest extends SapphireTest {
|
||||
);
|
||||
}
|
||||
|
||||
public function testDuplicateHasOne() {
|
||||
$relationObj = new DataObjectDuplicateTestClass1();
|
||||
$relationObj->text = 'class1';
|
||||
$relationObj->write();
|
||||
|
||||
$orig = new DataObjectDuplicateTestClass2();
|
||||
$orig->text = 'class2';
|
||||
$orig->oneID = $relationObj->ID;
|
||||
$orig->write();
|
||||
|
||||
$duplicate = $orig->duplicate();
|
||||
$this->assertEquals($relationObj->ID, $duplicate->oneID,
|
||||
'Copies has_one relationship'
|
||||
);
|
||||
$this->assertEquals(2, DataObjectDuplicateTestClass2::get()->Count(),
|
||||
'Only creates a single duplicate'
|
||||
);
|
||||
$this->assertEquals(1, DataObjectDuplicateTestClass1::get()->Count(),
|
||||
'Does not create duplicate of has_one relationship'
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public function testDuplicateManyManyClasses() {
|
||||
//create new test classes below
|
||||
$one = new DataObjectDuplicateTestClass1();
|
||||
|
Loading…
Reference in New Issue
Block a user