Unverified Commit 08350aec authored by larowlan's avatar larowlan

Issue #3178966 by quietone, huzooka, ravi.shankar, Wim Leers: Fatal error in...

Issue #3178966 by quietone, huzooka, ravi.shankar, Wim Leers: Fatal error in CommentEntityTranslation @MigrationSource when source site does not have comment or node module installed
parent 197b2406
......@@ -2,6 +2,7 @@
namespace Drupal\comment\Plugin\migrate\source\d7;
use Drupal\migrate\Exception\RequirementsException;
use Drupal\migrate\Row;
use Drupal\migrate_drupal\Plugin\migrate\source\d7\FieldableEntity;
......@@ -100,4 +101,20 @@ public function getIds() {
];
}
/**
* {@inheritdoc}
*/
public function checkRequirements() {
parent::checkRequirements();
if (!$this->moduleExists('comment')) {
// If we make it to here, the comment module isn't installed.
throw new RequirementsException('The module comment is not enabled in the source site');
}
if (!$this->moduleExists('node')) {
// Node module is also a requirement.
throw new RequirementsException('The module node is not enabled in the source site');
}
}
}
<?php
namespace Drupal\Tests\comment\Kernel\Migrate\d7;
use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
use Drupal\migrate\Exception\RequirementsException;
/**
* Tests check requirements for comment entity translation source plugin.
*
* @group comment
*/
class CommentEntityTranslationCheckRequirementsTest extends MigrateDrupal7TestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'content_translation',
'comment',
'language',
];
/**
* Tests exception thrown when the given module is not enabled in the source.
*
* @dataProvider providerTestCheckRequirements
*/
public function testCheckRequirements($module) {
// Disable the module in the source site.
$this->sourceDatabase->update('system')
->condition('name', $module)
->fields([
'status' => '0',
])
->execute();
$this->expectException(RequirementsException::class);
$this->expectExceptionMessage("The module $module is not enabled in the source site");
$this->getMigration('d7_comment_entity_translation')
->getSourcePlugin()
->checkRequirements();
}
/**
* Provides data for testCheckRequirements.
*
* @return string[][]
*/
public function providerTestCheckRequirements() {
return [
['comment'],
['node'],
];
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment