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();
foreach ($manipulation as $table => $details) {
if (!isset($details['id']) || !isset($details['fields'])) {
if (!isset($details['id'])) {
continue;
}
$id = $details['id'];
$state = $details['state'];
$class = $details['class'];
$fields = $details['fields'];
$fields = isset($details['fields']) ? $details['fields'] : array();
$base = ClassInfo::baseDataClass($class);
$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
SearchVariant::call('extractManipulationWriteState', $writes);

View File

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

View File

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

View File

@ -2,6 +2,9 @@
class SearchVariantVersionedTest extends SapphireTest
{
/**
* @var SearchVariantVersionedTest_Index
*/
private static $index = null;
protected $extraDataObjects = array(
@ -23,8 +26,6 @@ class SearchVariantVersionedTest extends SapphireTest
SearchUpdater::bind_manipulation_capture();
Config::nest();
Config::inst()->update('Injector', 'SearchUpdateProcessor', array(
'class' => 'SearchUpdateImmediateProcessor'
));
@ -33,13 +34,6 @@ class SearchVariantVersionedTest extends SapphireTest
SearchUpdater::clear_dirty_indexes();
}
public function tearDown()
{
Config::unnest();
parent::tearDown();
}
public function testPublishing()
{
// Check that write updates Stage
@ -71,9 +65,13 @@ class SearchVariantVersionedTest extends SapphireTest
$item->write();
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()

View File

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

View File

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