<?php namespace SilverStripe\Forms\Tests; use SilverStripe\Dev\SapphireTest; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\TabSet; class TabSetTest extends SapphireTest { protected $usesDatabase = false; public function testChangeTabOrder(): void { $tabSet = new TabSet('Root'); $fieldList = new FieldList([$tabSet]); $fieldList->findOrMakeTab('Root.Main'); $fieldList->findOrMakeTab('Root.Next'); $fieldList->findOrMakeTab('Root.More'); $fieldList->findOrMakeTab('Root.Extra'); $fieldList->addFieldToTab('Root', new TabSet('SubTabSet')); $fieldList->findOrMakeTab('Root.SubTabSet.Another'); // Reorder tabs - intentionally leaving some alone, which will be added to the end. $tabSet->changeTabOrder([ 'SubTabSet', 'More', 'Main', 'Non-Existent', // will be ignored 'Another', // will be ignored ]); // Order is correct $this->assertSame(['SubTabSet', 'More', 'Main', 'Next', 'Extra'], $tabSet->getChildren()->column('Name')); // Sub-tab is still there $this->assertNotNull($fieldList->findTab('Root.SubTabSet.Another')); } }