Commit 8b52c0cb authored by catch's avatar catch
Browse files

Issue #3082211 by quietone, Pooja Ganjage, danflanagan8, Spokje, benjifisher,...

Issue #3082211 by quietone, Pooja Ganjage, danflanagan8, Spokje, benjifisher, Wim Leers, mikelutz: Migrate UI tests should provide the complete log message on failure

(cherry picked from commit 42c8484b)
parent 16ea8500
Loading
Loading
Loading
Loading
+65 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Drupal\Tests\migrate_drupal_ui\Functional;

use Drupal\Core\Logger\RfcLogLevel;
use Drupal\Tests\migrate_drupal\Traits\CreateTestContentEntitiesTrait;

/**
@@ -11,6 +12,27 @@ abstract class MigrateUpgradeExecuteTestBase extends MigrateUpgradeTestBase {

  use CreateTestContentEntitiesTrait;

  /**
   * Indicates if the watchdog logs should be output.
   *
   * @var bool
   */
  protected $outputLogs = FALSE;

  /**
   * The admin username after the migration.
   *
   * @var string
   */
  protected $migratedAdminUserName = 'admin';

  /**
   * The number of expected logged errors of type migrate_drupal_ui.
   *
   * @var string
   */
  protected $expectedLoggedErrors = 0;

  /**
   * {@inheritdoc}
   */
@@ -22,6 +44,17 @@ protected function setUp(): void {

  }

  /**
   * {@inheritdoc}
   */
  protected function tearDown(): void {
    if ($this->outputLogs) {
      $this->outputLogs($this->migratedAdminUserName);
      $this->assertLogError();
    }
    parent::tearDown();
  }

  /**
   * Executes an upgrade and then an incremental upgrade.
   */
@@ -70,4 +103,36 @@ public function useTestMailCollector() {
    $this->writeSettings($settings);
  }

  /**
   * Asserts log errors.
   */
  public function assertLogError() {
    $db = \Drupal::service('database');
    $num_errors = $db->select('watchdog', 'w')
      ->fields('w')
      ->condition('type', 'migrate_drupal_ui')
      ->condition('severity', RfcLogLevel::ERROR)
      ->countQuery()
      ->execute()
      ->fetchField();
    $this->assertSame($this->expectedLoggedErrors, (int) $num_errors);
  }

  /**
   * Preserve the logs pages.
   */
  public function outputLogs($username) {
    // Ensure user 1 is accessing the admin log. Change the username because
    // the migration changes the username of user 1 but not the password.
    if (\Drupal::currentUser()->id() != 1) {
      $this->rootUser->name = $username;
      $this->drupalLogin($this->rootUser);
    }
    $this->drupalGet('/admin/reports/dblog');
    while ($next_link = $this->getSession()->getPage()->findLink('Next page')) {
      $next_link->click();
    }

  }

}
+9 −0
Original line number Diff line number Diff line
@@ -54,6 +54,11 @@ protected function setUp(): void {

    $this->loadFixture($this->getModulePath('migrate_drupal') . '/tests/fixtures/drupal6.php');

    // Enable saving the logs and set the post migration admin user name.
    $this->outputLogs = TRUE;
    $this->migratedAdminUserName = 'root';
    $this->expectedLoggedErrors = 36;

    // @todo Remove this in https://www.drupal.org/node/3267515
    \Drupal::service('module_installer')->uninstall(['rdf']);
  }
@@ -205,6 +210,10 @@ public function testUpgradeAndIncremental() {
    $this->assertFollowUpMigrationResults();

    $this->assertEmailsSent();

    // Save logs and check the error count.
    $this->outputLogs('root');
    $this->assertLogError();
  }

  /**
+13 −1
Original line number Diff line number Diff line
@@ -45,6 +45,9 @@ class Upgrade7Test extends MigrateUpgradeExecuteTestBase {
  protected function setUp(): void {
    parent::setUp();

    // Install the Drupal 6 and Drupal 7 administration theme.
    \Drupal::service('theme_installer')->install(['seven']);

    // @todo remove in https://www.drupal.org/project/drupal/issues/3267040
    // Delete the existing content made to test the ID Conflict form. Migrations
    // are to be done on a site without content. The test of the ID Conflict
@@ -57,6 +60,11 @@ protected function setUp(): void {

    $this->loadFixture($this->getModulePath('migrate_drupal') . '/tests/fixtures/drupal7.php');

    // Enable saving the logs and set the post migration admin user name.
    $this->outputLogs = TRUE;
    $this->migratedAdminUserName = 'admin';
    $this->expectedLoggedErrors = 25;

    // @todo Remove this in https://www.drupal.org/node/3267515
    \Drupal::service('module_installer')->uninstall(['rdf']);
  }
@@ -73,7 +81,7 @@ protected function getSourceBasePath() {
   */
  protected function getEntityCounts() {
    return [
      'block' => 27,
      'block' => 43,
      'block_content' => 1,
      'block_content_type' => 1,
      'comment' => 4,
@@ -235,6 +243,10 @@ public function testUpgradeAndIncremental() {
    $this->assertFollowUpMigrationResults();

    $this->assertEmailsSent();

    // Save logs and check the error count.
    $this->outputLogs('admin');
    $this->assertLogError();
  }

  /**