silverstripe-cms/tests/controller/ContentControllerSearchExtensionTest.php
2017-03-30 15:37:22 +01:00

54 lines
1.8 KiB
PHP

<?php
use SilverStripe\Versioned\Versioned;
use SilverStripe\CMS\Controllers\ContentController;
use SilverStripe\ORM\Search\FulltextSearchable;
use SilverStripe\Core\Config\Config;
use SilverStripe\Assets\File;
use SilverStripe\Dev\SapphireTest;
class ContentControllerSearchExtensionTest extends SapphireTest
{
protected static $required_extensions = array(
ContentController::class => [
\SilverStripe\CMS\Search\ContentControllerSearchExtension::class,
],
);
public function testCustomSearchFormClassesToTest()
{
$page = new Page();
$page->URLSegment = 'whatever';
$page->Content = 'oh really?';
$page->write();
$page->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
$controller = new ContentController($page);
$form = $controller->SearchForm();
if (get_class($form) == 'SilverStripe\\CMS\\Search\\SearchForm') {
$this->assertEquals(array('SilverStripe\\Assets\\File'), $form->getClassesToSearch());
}
}
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
FulltextSearchable::enable('SilverStripe\\Assets\\File');
}
/**
* 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()
{
parent::tearDownAfterClass();
Config::inst()->update('SilverStripe\\Assets\\File', 'create_table_options', array('SilverStripe\ORM\Connect\MySQLDatabase' => 'ENGINE=InnoDB'));
File::remove_extension('SilverStripe\\ORM\\Search\\FulltextSearchable');
}
}