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, 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' + ); + } }