Source of file ExtensionTest.php
Size: 6,034 Bytes - Last Modified: 2021-12-23T10:51:09+00:00
/var/www/docs.ssmods.com/process/src/tests/php/ExtensionTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 | <?php namespace Terraformers\ScaffoldedFields\Tests; use SilverStripe\Core\Config\Config; use SilverStripe\Dev\SapphireTest; use Terraformers\ScaffoldedFields; class ExtensionTest extends SapphireTest { /** * @var string */ protected static $fixture_file = 'ExtensionTest.yml'; /** * @var array */ protected static $extra_dataobjects = [ Entrance::class, House::class, ]; /** * @var array */ protected static $required_extensions = [ House::class => [ ScaffoldedFields\Extension::class, ] ]; /** * @param array $expected * @dataProvider fieldsProvider */ public function testCmsFields(array $config, array $expected) { Config::modify()->set(House::class, 'field_removal', $config); /** @var House $house */ $house = $this->objFromFixture(House::class, 'house1'); $fields = $house->getCMSFields(); $tab = $fields->findOrMakeTab('Root.Main'); foreach ($expected as $fieldName => $present) { $field = $tab->fieldByName($fieldName); if ($present) { $this->assertNotNull($field); continue; } $this->assertNull($field); } } /** * @return array */ public function fieldsProvider() { return [ [ [], [ 'Title' => true, 'Address' => true, 'EntranceID' => true, 'Image' => true, ], ], [ [ [ 'property' => 'db', 'type' => ScaffoldedFields\Extension::TYPE_KEEP, 'fields' => [ 'Title', ], ], ], [ 'Title' => true, 'Address' => false, 'EntranceID' => true, 'Image' => true, ], ], [ [ [ 'property' => 'db', 'type' => ScaffoldedFields\Extension::TYPE_KEEP, ], ], [ 'Title' => false, 'Address' => false, 'EntranceID' => true, 'Image' => true, ], ], [ [ [ 'property' => 'db', 'type' => ScaffoldedFields\Extension::TYPE_REMOVE, 'fields' => [ 'Title', ], ], ], [ 'Title' => false, 'Address' => true, 'EntranceID' => true, 'Image' => true, ], ], [ [ [ 'property' => 'db', 'type' => ScaffoldedFields\Extension::TYPE_REMOVE, ], ], [ 'Title' => true, 'Address' => true, 'EntranceID' => true, 'Image' => true, ], ], [ [ [ 'property' => 'has_one', 'type' => ScaffoldedFields\Extension::TYPE_KEEP, ], ], [ 'Title' => true, 'Address' => true, 'EntranceID' => false, 'Image' => false, ], ], [ [ [ 'property' => 'has_one', 'type' => ScaffoldedFields\Extension::TYPE_KEEP, 'fields' => [ 'Entrance', ], ], ], [ 'Title' => true, 'Address' => true, 'EntranceID' => true, 'Image' => false, ], ], [ [ [ 'property' => 'has_one', 'type' => ScaffoldedFields\Extension::TYPE_REMOVE, 'fields' => [ 'Image', ], ], ], [ 'Title' => true, 'Address' => true, 'EntranceID' => true, 'Image' => false, ], ], [ [ [ 'property' => 'extra', 'fields' => [ 'Address', 'Entrance', ], ], ], [ 'Title' => true, 'Address' => false, 'EntranceID' => true, 'Image' => true, ], ], [ [ [ 'property' => 'extra', 'fields' => [ 'Address', 'EntranceID', ], ], ], [ 'Title' => true, 'Address' => false, 'EntranceID' => false, 'Image' => true, ], ], ]; } } |