Source of file SearchableServiceTest.php
Size: 4,288 Bytes - Last Modified: 2021-12-23T10:31:32+00:00
/var/www/docs.ssmods.com/process/src/tests/SearchableServiceTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | <?php namespace SilverStripe\FullTextSearch\Tests; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Core\Config\Config; use SilverStripe\Dev\SapphireTest; use SilverStripe\FullTextSearch\Search\Services\SearchableService; use SilverStripe\FullTextSearch\Search\Variants\SearchVariantVersioned; use SilverStripe\Security\Member; use SilverStripe\Versioned\Versioned; class SearchableServiceTest extends SapphireTest { protected $usesDatabase = true; protected function setUp(): void { parent::setup(); SearchableService::singleton()->clearCache(); } public function testIsIndexable() { Versioned::set_draft_site_secured(false); Versioned::set_reading_mode('Stage.' . Versioned::DRAFT); Config::modify()->set(SearchableService::class, 'indexing_canview_exclude_classes', [SiteTree::class]); Member::actAs(null, function () { $searchableService = SearchableService::singleton(); $page = SiteTree::create(); $page->CanViewType = 'Anyone'; $page->ShowInSearch = 1; $page->write(); $this->assertTrue($searchableService->isIndexable($page)); $page = SiteTree::create(); $page->CanViewType = 'Anyone'; $page->ShowInSearch = 0; $page->write(); $this->assertFalse($searchableService->isIndexable($page)); }); } public function testIsViewable() { Versioned::set_draft_site_secured(false); Versioned::set_reading_mode('Stage.' . Versioned::DRAFT); Member::actAs(null, function () { $searchableService = SearchableService::singleton(); $page = SiteTree::create(); $page->CanViewType = 'Anyone'; $page->ShowInSearch = 1; $page->write(); $this->assertTrue($searchableService->isViewable($page)); $page = SiteTree::create(); $page->CanViewType = 'LoggedInUsers'; $page->ShowInSearch = 1; $page->write(); $this->assertFalse($searchableService->isViewable($page)); }); } public function testClearCache() { Config::modify()->set(SearchableService::class, 'indexing_canview_exclude_classes', [SiteTree::class]); $searchableService = SearchableService::singleton(); $page = SiteTree::create(); $page->CanViewType = 'Anyone'; $page->ShowInSearch = 0; $page->write(); $this->assertFalse($searchableService->isIndexable($page)); // test the results are cached (expect stale result) $page->ShowInSearch = 1; $page->write(); $this->assertFalse($searchableService->isIndexable($page)); // after clearing cache, expect fresh result $searchableService->clearCache(); $this->assertTrue($searchableService->isIndexable($page)); } public function testSkipIndexingCanViewCheck() { $searchableService = SearchableService::singleton(); $page = SiteTree::create(); $page->CanViewType = 'LoggedInUsers'; $page->ShowInSearch = 1; $page->write(); $this->assertFalse($searchableService->isIndexable($page)); Config::modify()->set(SearchableService::class, 'indexing_canview_exclude_classes', [SiteTree::class]); $searchableService->clearCache(); $this->assertTrue($searchableService->isIndexable($page)); } public function testVariantStateExcluded() { $searchableService = SearchableService::singleton(); $variantStateDraft = [SearchVariantVersioned::class => Versioned::DRAFT]; $variantStateLive = [SearchVariantVersioned::class => Versioned::LIVE]; // default variant_state_draft_excluded = true $this->assertTrue($searchableService->variantStateExcluded($variantStateDraft)); $this->assertFalse($searchableService->variantStateExcluded($variantStateLive)); Config::modify()->set(SearchableService::class, 'variant_state_draft_excluded', false); $this->assertFalse($searchableService->variantStateExcluded($variantStateDraft)); $this->assertFalse($searchableService->variantStateExcluded($variantStateLive)); } } |