BUG Fix versioned writes where subtables have no fields key

BUG Remove unnecessary config nesting in tests which are now handled via core
Fixes some regressions in recent framework fixes to versioned
This commit is contained in:
Damian Mooyman 2016-04-15 15:46:19 +12:00
parent aa77e2b63a
commit ec5e4f4581
6 changed files with 54 additions and 64 deletions

View File

@ -90,14 +90,14 @@ class SearchUpdater extends Object
$writes = array(); $writes = array();
foreach ($manipulation as $table => $details) { foreach ($manipulation as $table => $details) {
if (!isset($details['id']) || !isset($details['fields'])) { if (!isset($details['id'])) {
continue; continue;
} }
$id = $details['id']; $id = $details['id'];
$state = $details['state']; $state = $details['state'];
$class = $details['class']; $class = $details['class'];
$fields = $details['fields']; $fields = isset($details['fields']) ? $details['fields'] : array();
$base = ClassInfo::baseDataClass($class); $base = ClassInfo::baseDataClass($class);
$key = "$id:$base:".serialize($state); $key = "$id:$base:".serialize($state);
@ -125,6 +125,13 @@ class SearchUpdater extends Object
} }
} }
// Trim records without fields
foreach(array_keys($writes) as $key) {
if(empty($writes[$key]['fields'])) {
unset($writes[$key]);
}
}
// Then extract any state that is needed for the writes // Then extract any state that is needed for the writes
SearchVariant::call('extractManipulationWriteState', $writes); SearchVariant::call('extractManipulationWriteState', $writes);

View File

@ -66,7 +66,6 @@ class BatchedProcessorTest extends SapphireTest
public function setUp() public function setUp()
{ {
parent::setUp(); parent::setUp();
Config::nest();
if (!interface_exists('QueuedJob')) { if (!interface_exists('QueuedJob')) {
$this->skipTest = true; $this->skipTest = true;
@ -102,8 +101,6 @@ class BatchedProcessorTest extends SapphireTest
if ($this->oldProcessor) { if ($this->oldProcessor) {
SearchUpdater::$processor = $this->oldProcessor; SearchUpdater::$processor = $this->oldProcessor;
} }
Config::unnest();
Injector::inst()->unregisterNamedObject('QueuedJobService');
FullTextSearch::force_index_list(); FullTextSearch::force_index_list();
parent::tearDown(); parent::tearDown();
} }

View File

@ -87,8 +87,6 @@ class SearchUpdaterTest extends SapphireTest
SearchUpdater::bind_manipulation_capture(); SearchUpdater::bind_manipulation_capture();
Config::nest();
Config::inst()->update('Injector', 'SearchUpdateProcessor', array( Config::inst()->update('Injector', 'SearchUpdateProcessor', array(
'class' => 'SearchUpdateImmediateProcessor' 'class' => 'SearchUpdateImmediateProcessor'
)); ));
@ -97,13 +95,6 @@ class SearchUpdaterTest extends SapphireTest
SearchUpdater::clear_dirty_indexes(); SearchUpdater::clear_dirty_indexes();
} }
public function tearDown()
{
Config::unnest();
parent::tearDown();
}
public function testBasic() public function testBasic()
{ {
$item = new SearchUpdaterTest_Container(); $item = new SearchUpdaterTest_Container();

View File

@ -2,6 +2,9 @@
class SearchVariantVersionedTest extends SapphireTest class SearchVariantVersionedTest extends SapphireTest
{ {
/**
* @var SearchVariantVersionedTest_Index
*/
private static $index = null; private static $index = null;
protected $extraDataObjects = array( protected $extraDataObjects = array(
@ -23,8 +26,6 @@ class SearchVariantVersionedTest extends SapphireTest
SearchUpdater::bind_manipulation_capture(); SearchUpdater::bind_manipulation_capture();
Config::nest();
Config::inst()->update('Injector', 'SearchUpdateProcessor', array( Config::inst()->update('Injector', 'SearchUpdateProcessor', array(
'class' => 'SearchUpdateImmediateProcessor' 'class' => 'SearchUpdateImmediateProcessor'
)); ));
@ -33,13 +34,6 @@ class SearchVariantVersionedTest extends SapphireTest
SearchUpdater::clear_dirty_indexes(); SearchUpdater::clear_dirty_indexes();
} }
public function tearDown()
{
Config::unnest();
parent::tearDown();
}
public function testPublishing() public function testPublishing()
{ {
// Check that write updates Stage // Check that write updates Stage
@ -71,9 +65,13 @@ class SearchVariantVersionedTest extends SapphireTest
$item->write(); $item->write();
SearchUpdater::flush_dirty_indexes(); SearchUpdater::flush_dirty_indexes();
$this->assertEquals(self::$index->getAdded(array('ID', '_versionedstage')), array(
array('ID' => $item->ID, '_versionedstage' => 'Stage') $expected = array(array(
'ID' => $item->ID,
'_versionedstage' => 'Stage'
)); ));
$added = self::$index->getAdded(array('ID', '_versionedstage'));
$this->assertEquals($expected, $added);
} }
public function testExcludeVariantState() public function testExcludeVariantState()

View File

@ -12,12 +12,12 @@ class SolrIndexTest extends SapphireTest
public function setUp() public function setUp()
{ {
parent::setUp();
if (!class_exists('Phockito')) { if (!class_exists('Phockito')) {
$this->markTestSkipped("These tests need the Phockito module installed to run"); $this->markTestSkipped("These tests need the Phockito module installed to run");
$this->skipTest = true; $this->skipTest = true;
} }
parent::setUp();
} }
public function testFieldDataHasOne() public function testFieldDataHasOne()

View File

@ -35,8 +35,6 @@ class SolrIndexVersionedTest extends SapphireTest
SearchUpdater::bind_manipulation_capture(); SearchUpdater::bind_manipulation_capture();
Config::nest();
Config::inst()->update('Injector', 'SearchUpdateProcessor', array( Config::inst()->update('Injector', 'SearchUpdateProcessor', array(
'class' => 'SearchUpdateImmediateProcessor' 'class' => 'SearchUpdateImmediateProcessor'
)); ));
@ -51,7 +49,6 @@ class SolrIndexVersionedTest extends SapphireTest
public function tearDown() public function tearDown()
{ {
Versioned::set_reading_mode($this->oldMode); Versioned::set_reading_mode($this->oldMode);
Config::unnest();
parent::tearDown(); parent::tearDown();
} }