Source of file InheritanceScaffolderTest.php
Size: 2,680 Bytes - Last Modified: 2021-12-23T10:31:47+00:00
/var/www/docs.ssmods.com/process/src/tests/Scaffolding/Scaffolders/InheritanceScaffolderTest.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | <?php namespace SilverStripe\GraphQL\Tests\Scaffolding\Scaffolding; use GraphQL\Type\Definition\ObjectType; use InvalidArgumentException; use SilverStripe\Dev\SapphireTest; use SilverStripe\GraphQL\Controller; use SilverStripe\GraphQL\Manager; use SilverStripe\GraphQL\Scaffolding\Scaffolders\InheritanceScaffolder; use SilverStripe\GraphQL\Scaffolding\StaticSchema; use SilverStripe\GraphQL\Tests\Fake\DataObjectFake; use SilverStripe\GraphQL\Tests\Fake\FakePage; use SilverStripe\GraphQL\Tests\Fake\FakeRedirectorPage; use SilverStripe\GraphQL\Tests\Fake\FakeSiteTree; class InheritanceScaffolderTest extends SapphireTest { public function testThrowsOnNonExistentClass() { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessageMatches('/not exist/'); $scaffolder = new InheritanceScaffolder('fail'); } public function testThrowsOnNonDataObjectClass() { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessageMatches('/subclass of/'); $scaffolder = new InheritanceScaffolder(Controller::class); } public function testGettersAndSetters() { $scaffolder = new InheritanceScaffolder(DataObjectFake::class); $this->assertEquals(DataObjectFake::class, $scaffolder->getRootClass()); $scaffolder->setRootClass(FakePage::class); $this->assertEquals(FakePage::class, $scaffolder->getRootClass()); $scaffolder->setSuffix('test'); $this->assertEquals('test', $scaffolder->getSuffix()); } public function testScaffolding() { $schema = StaticSchema::inst(); $manager = new Manager(); $manager->addType(new ObjectType([ 'name' => $schema->typeNameForDataObject(FakeSiteTree::class) ])); $manager->addType(new ObjectType([ 'name' => $schema->typeNameForDataObject(FakePage::class) ])); $manager->addType(new ObjectType([ 'name' => $schema->typeNameForDataObject(FakeRedirectorPage::class) ])); $scaffolder = new InheritanceScaffolder(FakeSiteTree::class, 'TheSuffix'); $scaffold = $scaffolder->scaffold($manager); $typeName = StaticSchema::inst()->typeNameForDataObject(FakeSiteTree::class); $this->assertEquals($typeName . 'TheSuffix', $scaffold->config['name']); $nestedTypes = array_map(function ($type) { return $type->config['name']; }, $scaffold->getTypes()); $this->assertContains( StaticSchema::inst()->typeNameForDataObject(FakeSiteTree::class), $nestedTypes ); } } |