Source of file UnstagedStagedRelationTest.php
Size: 2,191 Bytes - Last Modified: 2021-12-23T10:35:47+00:00
/var/www/docs.ssmods.com/process/src/tests/php/UnstagedStagedRelationTest.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | <?php namespace SilverStripe\Versioned\Tests; use SilverStripe\Dev\SapphireTest; use SilverStripe\ORM\FieldType\DBDatetime; use SilverStripe\Versioned\Tests\UnstagedStagedRelationTest\StagedObject; use SilverStripe\Versioned\Tests\UnstagedStagedRelationTest\UnstagedObject; use SilverStripe\Versioned\Tests\UnstagedStagedRelationTest\UnstagedStagedThroughObject; use SilverStripe\Versioned\Versioned; class UnstagedStagedRelationTest extends SapphireTest { protected static $extra_dataobjects = [ StagedObject::class, UnstagedStagedThroughObject::class, UnstagedObject::class, ]; protected $usesDatabase = true; public function testVersionedToStagedRelation() { Versioned::set_stage(Versioned::DRAFT); $stagedObject = StagedObject::create(); $stagedObject->write(); $stagedObject->publishRecursive(); $this->mockWait(); $unstagedObject = UnstagedObject::create(); $unstagedObject->write(); $this->mockWait(); $unstagedObject->StagedObjects()->add($stagedObject); $this->mockWait(); Versioned::set_stage(Versioned::LIVE); $unstagedObject->write(false, false, true); $this->assertCount(2, Versioned::get_all_versions(UnstagedObject::class, $unstagedObject->ID)); $this->assertCount(0, Versioned::get_version(UnstagedObject::class, $unstagedObject->ID, 1)->StagedObjects()); $this->assertCount(1, Versioned::get_version(UnstagedObject::class, $unstagedObject->ID, 2)->StagedObjects()); } /** * @param int $seconds */ protected function mockWait($seconds = 5) { DBDatetime::set_mock_now(DBDatetime::now()->getTimestamp() + $seconds); } public function testJoin() { Versioned::withVersionedMode(function () { Versioned::set_reading_mode('Stage.Live'); $count = UnstagedObject::get()->filter('StagedObjects.ID:GreaterThan', 0)->count(); $this->assertEquals( 0, $count, 'Queries with joins on stageless versioned table don\'t target the live table' ); }); } } |