From eedad00ebef73c0e6841fd8dd93232dbc4c67ce0 Mon Sep 17 00:00:00 2001 From: Loz Calver Date: Thu, 22 Oct 2020 15:14:15 +0100 Subject: [PATCH 1/2] NEW: Expose TreeDropdownField root node ID in schema Forms part of a fix for silverstripe-admin#954 --- src/Forms/TreeDropdownField.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Forms/TreeDropdownField.php b/src/Forms/TreeDropdownField.php index d51fc85f6..c884d3dcf 100644 --- a/src/Forms/TreeDropdownField.php +++ b/src/Forms/TreeDropdownField.php @@ -901,6 +901,7 @@ class TreeDropdownField extends FormField $data['data'] = array_merge($data['data'], [ 'urlTree' => $this->Link('tree'), 'showSearch' => $this->getShowSearch(), + 'treeBaseId' => $this->getTreeBaseID(), 'emptyString' => $this->getEmptyString(), 'hasEmptyDefault' => $this->getHasEmptyDefault(), 'multiple' => false, From 440c7cad35edb49a13547a432591b141cb7e72e1 Mon Sep 17 00:00:00 2001 From: Maxime Rainville Date: Fri, 23 Apr 2021 17:53:54 +1200 Subject: [PATCH 2/2] MNT Add test to cover TreeDropdownField::TreeBaseId --- tests/php/Forms/TreeDropdownFieldTest.php | 31 +++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/php/Forms/TreeDropdownFieldTest.php b/tests/php/Forms/TreeDropdownFieldTest.php index c06bc54d7..c9619abff 100644 --- a/tests/php/Forms/TreeDropdownFieldTest.php +++ b/tests/php/Forms/TreeDropdownFieldTest.php @@ -8,6 +8,8 @@ use SilverStripe\Control\Session; use SilverStripe\Dev\CSSContentParser; use SilverStripe\Dev\SapphireTest; use SilverStripe\Control\HTTPRequest; +use SilverStripe\Forms\FieldList; +use SilverStripe\Forms\Form; use SilverStripe\Forms\TreeDropdownField; use SilverStripe\ORM\Tests\HierarchyTest\TestObject; @@ -246,4 +248,33 @@ class TreeDropdownFieldTest extends SapphireTest $result ); } + + public function testTreeBaseID() + { + $treeBaseID = $this->idFromFixture(Folder::class, 'folder1'); + $field = new TreeDropdownField('TestTree', 'Test tree', Folder::class); + + // getSchemaDataDefaults needs the field to be attach to a form + new Form( + null, + 'mock', + new FieldList($field) + ); + + $this->assertEmpty($field->getTreeBaseID(), 'TreeBaseId does not have an initial value'); + + $field->setTreeBaseID($treeBaseID); + $this->assertEquals( + $treeBaseID, + $field->getTreeBaseID(), + 'Value passed to setTreeBaseID is returned by getTreeBaseID' + ); + + $schema = $field->getSchemaDataDefaults(); + $this->assertEquals( + $treeBaseID, + $schema['data']['treeBaseId'], + 'TreeBaseId is included in the default schema data' + ); + } }