public function tearDown() { if ($this->oldProcessor) { SearchUpdater::$processor = $this->oldProcessor; } Config::unnest(); Injector::inst()->unregisterNamedObject('QueuedJobService'); FullTextSearch::force_index_list(); parent::tearDown(); }
function testExcludeVariantState() { $index = singleton('SearchVariantVersionedTest_IndexNoStage'); 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($index->getAdded(array('ID', '_versionedstage')), array()); // Check that publish updates Live $index->reset(); $item->publish("Stage", "Live"); SearchUpdater::flush_dirty_indexes(); $this->assertEquals($index->getAdded(array('ID', '_versionedstage')), array(array('ID' => $item->ID, '_versionedstage' => 'Live'))); }
function testSavingDirect() { // Initial add $item = new SearchVariantSiteTreeSubsitesPolyhomeTest_Item(); $item->write(); SearchUpdater::flush_dirty_indexes(); $this->assertEquals(self::$index->getAdded(array('ID', '_subsite')), array(array('ID' => $item->ID, '_subsite' => 0))); // Check that adding to subsites works self::$index->reset(); $item->setField('AddToSubsite[0]', 1); $item->setField('AddToSubsite[' . self::$subsite_a->ID . ']', 1); $item->write(); SearchUpdater::flush_dirty_indexes(); $this->assertEquals(self::$index->getAdded(array('ID', '_subsite')), array(array('ID' => $item->ID, '_subsite' => 0), array('ID' => $item->ID, '_subsite' => self::$subsite_a->ID))); $this->assertEquals(self::$index->deleted, array(array('base' => 'SiteTree', 'id' => $item->ID, 'state' => array('SearchVariantVersioned' => 'Stage', 'SearchVariantSiteTreeSubsitesPolyhome' => self::$subsite_b->ID)))); }
public function testDelete() { // Setup mocks $serviceMock = $this->getServiceMock(); self::$index->setService($serviceMock); // Delete the live record (not the stage) Versioned::reading_stage('Stage'); Phockito::reset($serviceMock); $item = new SearchVariantVersionedTest_Item(array('Title' => 'Too')); $item->write(); $item->publish('Stage', 'Live'); Versioned::reading_stage('Live'); $id = $item->ID; $item->delete(); SearchUpdater::flush_dirty_indexes(); Phockito::verify($serviceMock, 1)->deleteById($this->getExpectedDocumentId($id, 'Live')); Phockito::verify($serviceMock, 0)->deleteById($this->getExpectedDocumentId($id, 'Stage')); // Delete the stage record Versioned::reading_stage('Stage'); Phockito::reset($serviceMock); $item = new SearchVariantVersionedTest_Item(array('Title' => 'Too')); $item->write(); $item->publish('Stage', 'Live'); $id = $item->ID; $item->delete(); SearchUpdater::flush_dirty_indexes(); Phockito::verify($serviceMock, 1)->deleteById($this->getExpectedDocumentId($id, 'Stage')); Phockito::verify($serviceMock, 0)->deleteById($this->getExpectedDocumentId($id, 'Live')); }
function testHasManyHook() { $container1 = new SearchUpdaterTest_Container(); $container1->write(); $container2 = new SearchUpdaterTest_Container(); $container2->write(); //self::$index->reset(); //SearchUpdater::clear_dirty_indexes(); $hasMany1 = new SearchUpdaterTest_HasMany(); $hasMany1->HasManyContainerID = $container1->ID; $hasMany1->write(); $hasMany2 = new SearchUpdaterTest_HasMany(); $hasMany2->HasManyContainerID = $container1->ID; $hasMany2->write(); SearchUpdater::flush_dirty_indexes(); $this->assertEquals(self::$index->getAdded(array('ID')), array(array('ID' => $container1->ID), array('ID' => $container2->ID))); self::$index->reset(); $hasMany1->Field1 = 'Updated'; $hasMany1->write(); $hasMany2->Field1 = 'Updated'; $hasMany2->write(); SearchUpdater::flush_dirty_indexes(); $this->assertEquals(self::$index->getAdded(array('ID')), array(array('ID' => $container1->ID))); }
/** * Forces this object to trigger a re-index in the current state */ public function triggerReindex() { if (!$this->owner->ID) { return; } $id = $this->owner->ID; $class = $this->owner->ClassName; $state = SearchVariant::current_state($class); $base = ClassInfo::baseDataClass($class); $key = "{$id}:{$base}:" . serialize($state); $statefulids = array(array('id' => $id, 'state' => $state)); $writes = array($key => array('base' => $base, 'class' => $class, 'id' => $id, 'statefulids' => $statefulids, 'fields' => array())); SearchUpdater::process_writes($writes); }
<?php global $databaseConfig; if (isset($databaseConfig['type'])) { SearchUpdater::bind_manipulation_capture(); }