mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
BUGFIX: Don't let deleteFromStage() kill the ID of the original record.
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@106080 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
3f6005fd6a
commit
5fbc19f5be
@ -798,7 +798,8 @@ class Versioned extends DataObjectDecorator {
|
||||
function deleteFromStage($stage) {
|
||||
$oldMode = Versioned::get_reading_mode();
|
||||
Versioned::reading_stage($stage);
|
||||
$result = $this->owner->delete();
|
||||
$clone = clone $this->owner;
|
||||
$result = $clone->delete();
|
||||
Versioned::set_reading_mode($oldMode);
|
||||
return $result;
|
||||
}
|
||||
|
@ -90,6 +90,32 @@ class VersionedTest extends SapphireTest {
|
||||
$this->assertTrue($page1->Version > $changedVersion, 'Create a new higher version number');
|
||||
$this->assertEquals('orig', $page1->Content, 'Copies the content from the old version');
|
||||
}
|
||||
|
||||
function testDeleteFromStage() {
|
||||
$page1 = $this->objFromFixture('Page', 'page1');
|
||||
$pageID = $page1->ID;
|
||||
|
||||
$page1->Content = 'orig';
|
||||
$page1->write();
|
||||
$page1->publish('Stage', 'Live');
|
||||
|
||||
$this->assertEquals(1, DB::query('SELECT COUNT(*) FROM "SiteTree" WHERE "ID" = '.$pageID)->value());
|
||||
$this->assertEquals(1, DB::query('SELECT COUNT(*) FROM "SiteTree_Live" WHERE "ID" = '.$pageID)->value());
|
||||
|
||||
$page1->deleteFromStage('Live');
|
||||
|
||||
// Confirm that deleteFromStage() doesn't manipulate the original record
|
||||
$this->assertEquals($pageID, $page1->ID);
|
||||
|
||||
$this->assertEquals(1, DB::query('SELECT COUNT(*) FROM "SiteTree" WHERE "ID" = '.$pageID)->value());
|
||||
$this->assertEquals(0, DB::query('SELECT COUNT(*) FROM "SiteTree_Live" WHERE "ID" = '.$pageID)->value());
|
||||
|
||||
$page1->delete();
|
||||
|
||||
$this->assertEquals(0, $page1->ID);
|
||||
$this->assertEquals(0, DB::query('SELECT COUNT(*) FROM "SiteTree" WHERE "ID" = '.$pageID)->value());
|
||||
$this->assertEquals(0, DB::query('SELECT COUNT(*) FROM "SiteTree_Live" WHERE "ID" = '.$pageID)->value());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user