Merge pull request #2054 from chillu/pulls/dataobject-duplicate-hasone

BUG Correct relation saving in DataObject->duplicateRelations()
This commit is contained in:
Stig Lindqvist 2013-06-07 22:54:36 -07:00
commit dbc2b62c69
2 changed files with 26 additions and 1 deletions

View File

@ -499,7 +499,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
}
}
} else { //one-to-one relation
$destinationObject->$name = $relations;
$destinationObject->{"{$name}ID"} = $relations->ID;
}
}
}

View File

@ -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();