Source of file SearchVariantVersionedTest.php
Size: 4,969 Bytes - Last Modified: 2021-12-23T10:31:32+00:00
/var/www/docs.ssmods.com/process/src/tests/SearchVariantVersionedTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | <?php namespace SilverStripe\FullTextSearch\Tests; use SilverStripe\Core\Config\Config; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Dev\SapphireTest; use SilverStripe\FullTextSearch\Search\FullTextSearch; use SilverStripe\FullTextSearch\Search\Indexes\SearchIndex_Recording; use SilverStripe\FullTextSearch\Search\Services\SearchableService; use SilverStripe\FullTextSearch\Search\Variants\SearchVariantVersioned; use SilverStripe\FullTextSearch\Tests\SearchVariantVersionedTest\SearchVariantVersionedTest_Index; use SilverStripe\FullTextSearch\Tests\SearchVariantVersionedTest\SearchVariantVersionedTest_Item; use SilverStripe\FullTextSearch\Tests\SearchVariantVersionedTest\SearchVariantVersionedTest_IndexNoStage; use SilverStripe\FullTextSearch\Search\Processors\SearchUpdateProcessor; use SilverStripe\FullTextSearch\Search\Processors\SearchUpdateImmediateProcessor; use SilverStripe\FullTextSearch\Search\Updaters\SearchUpdater; class SearchVariantVersionedTest extends SapphireTest { /** * @var SearchVariantVersionedTest_Index */ private static $index = null; protected static $extra_dataobjects = array( SearchVariantVersionedTest_Item::class ); protected function setUp(): void { parent::setUp(); if (self::$index === null) { self::$index = singleton(SearchVariantVersionedTest_Index::class); } Config::modify()->set(Injector::class, SearchUpdateProcessor::class, array( 'class' => SearchUpdateImmediateProcessor::class )); FullTextSearch::force_index_list(self::$index); SearchUpdater::clear_dirty_indexes(); } public function testPublishing() { // Check that write updates Stage $classesToSkip = [SearchVariantVersionedTest_Item::class]; Config::modify()->set(SearchableService::class, 'indexing_canview_exclude_classes', $classesToSkip); Config::modify()->set(SearchableService::class, 'variant_state_draft_excluded', false); $item = new SearchVariantVersionedTest_Item(array('TestText' => 'Foo')); $item->write(); SearchUpdater::flush_dirty_indexes(); $this->assertEquals(array( array('ID' => $item->ID, '_versionedstage' => 'Stage') ), self::$index->getAdded(array('ID', '_versionedstage'))); // Check that publish updates Live self::$index->reset(); $item->copyVersionToStage('Stage', 'Live'); SearchUpdater::flush_dirty_indexes(); $this->assertEquals(array( array('ID' => $item->ID, '_versionedstage' => 'Stage'), array('ID' => $item->ID, '_versionedstage' => 'Live') ), self::$index->getAdded(array('ID', '_versionedstage'))); // Just update a SiteTree field, and check it updates Stage self::$index->reset(); $item->Title = "Pow!"; $item->write(); SearchUpdater::flush_dirty_indexes(); $expected = array(array( 'ID' => $item->ID, '_versionedstage' => 'Stage' )); $added = self::$index->getAdded(array('ID', '_versionedstage')); $this->assertEquals($expected, $added); // Test unpublish self::$index->reset(); $item->deleteFromStage('Live'); SearchUpdater::flush_dirty_indexes(); $this->assertCount(1, self::$index->deleted); $this->assertEquals( SiteTree::class, self::$index->deleted[0]['base'] ); $this->assertEquals( $item->ID, self::$index->deleted[0]['id'] ); $this->assertEquals( 'Live', self::$index->deleted[0]['state'][SearchVariantVersioned::class] ); } public function testExcludeVariantState() { $index = singleton(SearchVariantVersionedTest_IndexNoStage::class); FullTextSearch::force_index_list($index); // Check that write doesn't update stage $item = new SearchVariantVersionedTest_Item(array('TestText' => 'Foo')); $item->write(); SearchUpdater::flush_dirty_indexes(); $this->assertEquals(array(), $index->getAdded(array('ID', '_versionedstage'))); // Check that publish updates Live $index->reset(); $item->copyVersionToStage('Stage', 'Live'); SearchUpdater::flush_dirty_indexes(); $this->assertEquals(array( array('ID' => $item->ID, '_versionedstage' => 'Live') ), $index->getAdded(array('ID', '_versionedstage'))); } public function testCanBeDisabledViaConfig() { $variant = new SearchVariantVersioned; Config::modify()->set(SearchVariantVersioned::class, 'enabled', true); $this->assertTrue($variant->appliesToEnvironment()); Config::modify()->set(SearchVariantVersioned::class, 'enabled', false); $this->assertFalse($variant->appliesToEnvironment()); } } |