Unverified Commit 08350aec authored by Lee Rowlands's avatar Lee Rowlands
Browse files

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
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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');
    }
  }

}
+56 −0
Original line number Diff line number Diff line
<?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'],
    ];
  }

}