<?php namespace SilverStripe\CMS\Tests\Controllers; use SilverStripe\Assets\File; use SilverStripe\CMS\Controllers\ContentController; use SilverStripe\CMS\Search\ContentControllerSearchExtension; use SilverStripe\Dev\SapphireTest; use SilverStripe\ORM\Search\FulltextSearchable; use SilverStripe\Versioned\Versioned; use Page; class ContentControllerSearchExtensionTest extends SapphireTest { protected static $required_extensions = array( ContentController::class => [ ContentControllerSearchExtension::class, ] ); public function testCustomSearchFormClassesToTest() { $page = new Page(); $page->URLSegment = 'whatever'; $page->Content = 'oh really?'; $page->write(); $page->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE); /** @var ContentController|ContentControllerSearchExtension $controller */ $controller = new ContentController($page); $form = $controller->SearchForm(); $this->assertEquals([ File::class ], $form->getClassesToSearch()); } public static function setUpBeforeClass() { parent::setUpBeforeClass(); FulltextSearchable::enable(File::class); } /** * FulltextSearchable::enable() leaves behind remains that don't get cleaned up * properly at the end of the test. This becomes apparent when a later test tries to * ALTER TABLE File and add fulltext indexes with the InnoDB table type. */ public static function tearDownAfterClass() { File::remove_extension(FulltextSearchable::class); parent::tearDownAfterClass(); } }