Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
CRAP | |
100.00% |
33 / 33 |
MigrateSqlSourceTestCase | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
5 | |
100.00% |
33 / 33 |
setUp | |
100.00% |
1 / 1 |
1 | |
100.00% |
23 / 23 |
|||
testRetrieval | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
testSourceCount | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
testSourceId | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getValue | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase. | |
*/ | |
namespace Drupal\Tests\migrate\Unit; | |
use Drupal\Core\Database\Query\SelectInterface; | |
/** | |
* Base class for Migrate module source unit tests. | |
*/ | |
abstract class MigrateSqlSourceTestCase extends MigrateTestCase { | |
/** | |
* The tested source plugin. | |
* | |
* @var \Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase. | |
*/ | |
protected $source; | |
/** | |
* The database contents. | |
* | |
* Database contents represents a mocked database. It should contain an | |
* associative array with the table name as key, and as many nested arrays as | |
* the number of mocked rows. Each of those faked rows must be another array | |
* with the column name as the key and the value as the cell. | |
* | |
* @var array | |
*/ | |
protected $databaseContents = array(); | |
/** | |
* The plugin class under test. | |
* | |
* The plugin system is not working during unit testing so the source plugin | |
* class needs to be manually specified. | |
* | |
* @var string | |
*/ | |
const PLUGIN_CLASS = ''; | |
/** | |
* The high water mark at the beginning of the import operation. | |
* | |
* Once the migration is run, we save a mark of the migrated sources, so the | |
* migration can run again and update only new sources or changed sources. | |
* | |
* @var string | |
*/ | |
const ORIGINAL_HIGH_WATER = ''; | |
/** | |
* Expected results after the source parsing. | |
* | |
* @var array | |
*/ | |
protected $expectedResults = array(); | |
/** | |
* Expected count of source rows. | |
* | |
* @var int | |
*/ | |
protected $expectedCount = 0; | |
/** | |
* The source plugin instance under test. | |
* | |
* @var \Drupal\migrate\Plugin\MigrateSourceInterface | |
*/ | |
protected $plugin; | |
/** | |
* {@inheritdoc} | |
*/ | |
protected function setUp() { | |
$module_handler = $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface'); | |
$state = $this->getMock('Drupal\Core\State\StateInterface'); | |
$entity_manager = $this->getMock('Drupal\Core\Entity\EntityManagerInterface'); | |
$migration = $this->getMigration(); | |
$migration->expects($this->any()) | |
->method('getHighWater') | |
->will($this->returnValue(static::ORIGINAL_HIGH_WATER)); | |
// Setup the plugin. | |
$plugin_class = static::PLUGIN_CLASS; | |
$plugin = new $plugin_class($this->migrationConfiguration['source'], $this->migrationConfiguration['source']['plugin'], array(), $migration, $state, $entity_manager); | |
// Do some reflection to set the database and moduleHandler. | |
$plugin_reflection = new \ReflectionClass($plugin); | |
$database_property = $plugin_reflection->getProperty('database'); | |
$database_property->setAccessible(TRUE); | |
$module_handler_property = $plugin_reflection->getProperty('moduleHandler'); | |
$module_handler_property->setAccessible(TRUE); | |
// Set the database and the module handler onto our plugin. | |
$database_property->setValue($plugin, $this->getDatabase($this->databaseContents + array('test_map' => array()))); | |
$module_handler_property->setValue($plugin, $module_handler); | |
$plugin->setStringTranslation($this->getStringTranslationStub()); | |
$migration->expects($this->any()) | |
->method('getSourcePlugin') | |
->will($this->returnValue($plugin)); | |
$this->source = $plugin; | |
$this->expectedCount = count($this->expectedResults); | |
} | |
/** | |
* Tests that the source returns the same rows as expected. | |
*/ | |
public function testRetrieval() { | |
$this->assertInstanceOf(SelectInterface::class, $this->source->query()); | |
$this->queryResultTest($this->source, $this->expectedResults); | |
} | |
/** | |
* Tests that the source returns the row count expected. | |
*/ | |
public function testSourceCount() { | |
$count = $this->source->count(); | |
$this->assertTrue(is_numeric($count)); | |
$this->assertEquals($count, $this->expectedCount); | |
} | |
/** | |
* Tests the source defines a valid ID. | |
*/ | |
public function testSourceId() { | |
$this->assertNotEmpty($this->source->getIds()); | |
} | |
/** | |
* Gets the value on a row for a given key. | |
* | |
* @param \Drupal\migrate\Row $row | |
* The row identifier. | |
* @param string $key | |
* The key identifier. | |
* | |
* @return mixed | |
* The value on a row for a given key. | |
*/ | |
protected function getValue($row, $key) { | |
return $row->getSourceProperty($key); | |
} | |
} |