diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php index 8c705517cbb6d732afeb2fd041030b64fc9a05ef..87bd66d3770ae597a63b93b6498e3111d0ea4490 100644 --- a/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php +++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php @@ -102,7 +102,7 @@ public function checkRequirements() { } } else { - throw new RequirementsException('Missing source provider ' . $this->pluginDefinition['source_provider'], ['source_provider' => $this->pluginDefinition['source_provider']]); + throw new RequirementsException('The module ' . $this->pluginDefinition['source_provider'] . ' is not enabled in the source site.'); } } } diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/DrupalSqlBaseTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/DrupalSqlBaseTest.php new file mode 100644 index 0000000000000000000000000000000000000000..f603afa5397c2b04fc3e016401d42544cc946288 --- /dev/null +++ b/core/modules/migrate_drupal/tests/src/Unit/source/DrupalSqlBaseTest.php @@ -0,0 +1,102 @@ +<?php + +namespace Drupal\Tests\migrate_drupal\Unit\source; + +use Drupal\Tests\migrate\Unit\MigrateTestCase; +use Drupal\migrate\Exception\RequirementsException; + +/** + * @coversDefaultClass Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase + * @group migrate_drupal + */ +class DrupalSqlBaseTest extends MigrateTestCase { + + /** + * Define bare minimum migration configuration. + */ + protected $migrationConfiguration = array( + 'id' => 'DrupalSqlBase', + ); + + /** + * @var \Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase + */ + protected $base; + + /** + * Minimum database contents needed to test DrupalSqlBase. + */ + protected $databaseContents = array( + 'system' => array( + array( + 'filename' => 'sites/all/modules/module1', + 'name' => 'module1', + 'type' => 'module', + 'status' => 0, + 'schema_version' => -1, + ), + ), + ); + + /** + * @covers ::checkRequirements + */ + public function testSourceProviderNotActive() { + $this->setExpectedException(RequirementsException::class, 'The module module1 is not enabled in the source site.'); + $plugin_definition['requirements_met'] = TRUE; + $plugin_definition['source_provider'] = 'module1'; + /** @var \Drupal\Core\State\StateInterface $state */ + $state = $this->getMock('Drupal\Core\State\StateInterface'); + /** @var \Drupal\Core\Entity\EntityManagerInterface $entity_manager */ + $entity_manager = $this->getMock('Drupal\Core\Entity\EntityManagerInterface'); + $plugin = new TestDrupalSqlBase([], 'placeholder_id', $plugin_definition, $this->getMigration(), $state, $entity_manager); + $plugin->setDatabase($this->getDatabase($this->databaseContents)); + $system_data = $plugin->getSystemData(); + $plugin->checkRequirements(); + } + +} + +namespace Drupal\Tests\migrate_drupal\Unit\source; + +use Drupal\Core\Database\Connection; +use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase; + +/** + * Extends the DrupalSqlBase abstract class. + */ +class TestDrupalSqlBase extends DrupalSqlBase { + + /** + * {@inheritdoc} + */ + public function fields() { + return []; + } + + /** + * {@inheritdoc} + */ + public function query() { + } + + /** + * Tweaks DrupalSqlBase to set a new database connection for tests. + * + * @param \Drupal\Core\Database\Connection + * The new connection to use. + * + * @see \Drupal\Tests\migrate\Unit\MigrateSourceSqlTestCase + */ + public function setDatabase(Connection $database) { + $this->database = $database; + } + + /** + * {@inheritdoc} + */ + public function getIds() { + return []; + } + +}