Source of file UnpublishTest.php
Size: 2,702 Bytes - Last Modified: 2021-12-23T10:35:47+00:00
/var/www/docs.ssmods.com/process/src/tests/php/GraphQL/Legacy/Operations/UnpublishTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | <?php namespace SilverStripe\Versioned\Tests\GraphQL\Legacy\Operations; use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Definition\ResolveInfo; use SilverStripe\Dev\SapphireTest; use SilverStripe\GraphQL\Manager; use SilverStripe\GraphQL\Scaffolding\StaticSchema; use SilverStripe\GraphQL\Schema\Schema; use SilverStripe\Security\Member; use SilverStripe\Security\Security; use SilverStripe\Versioned\GraphQL\Operations\Unpublish; use SilverStripe\Versioned\Tests\GraphQL\Fake\Fake; use SilverStripe\Versioned\Versioned; use Exception; // GraphQL dependency is optional in versioned, // and this legacy implementation relies on existence of this class (in GraphQL v3) if (!class_exists(Manager::class)) { return; } class UnpublishTest extends SapphireTest { protected $usesDatabase = true; public static $extra_dataobjects = [ Fake::class, ]; protected function setUp(): void { parent::setUp(); if (class_exists(Schema::class)) { $this->markTestSkipped('Skipped GraphQL 3 test ' . __CLASS__); } } public function testPublish() { $typeName = StaticSchema::inst()->typeNameForDataObject(Fake::class); $manager = new Manager(); $manager->addType(new ObjectType(['name' => $typeName])); $publish = new Unpublish(Fake::class); $scaffold = $publish->scaffold($manager); $this->assertIsCallable($scaffold['resolve']); $record = new Fake(); $record->Name = 'First'; $record->write(); $record->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE); $result = Versioned::get_by_stage(Fake::class, Versioned::LIVE) ->byID($record->ID); $this->assertNotNull($result); $this->assertInstanceOf(Fake::class, $result); $this->assertEquals('First', $result->Name); $this->logInWithPermission('ADMIN'); $member = Security::getCurrentUser(); $scaffold['resolve']( null, [ 'ID' => $record->ID ], [ 'currentUser' => $member ], new ResolveInfo([]) ); $result = Versioned::get_by_stage(Fake::class, Versioned::LIVE) ->byID($record->ID); $this->assertNull($result); $record->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE); $this->expectException(Exception::class); $this->expectExceptionMessageMatches('/^Not allowed/'); $scaffold['resolve']( null, [ 'ID' => $record->ID ], [ 'currentUser' => new Member() ], new ResolveInfo([]) ); } } |