You are here

public function MigrateEntityContentValidationTest::test2 in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/migrate/tests/src/Kernel/MigrateEntityContentValidationTest.php \Drupal\Tests\migrate\Kernel\MigrateEntityContentValidationTest::test2()

Tests an import with invalid data and checks error messages.

File

core/modules/migrate/tests/src/Kernel/MigrateEntityContentValidationTest.php, line 103

Class

MigrateEntityContentValidationTest
Tests validation of an entity during migration.

Namespace

Drupal\Tests\migrate\Kernel

Code

public function test2() {
  $long_username = $this
    ->randomString(61);
  $username_constraint = new UserNameConstraint();
  $this
    ->runImport([
    'source' => [
      'plugin' => 'embedded_data',
      'data_rows' => [
        [
          'id' => 1,
          'name' => $long_username,
        ],
        [
          'id' => 2,
          'name' => $this
            ->randomString(32),
        ],
        [
          'id' => 3,
          'name' => $this
            ->randomString(32),
        ],
      ],
      'ids' => [
        'id' => [
          'type' => 'integer',
        ],
      ],
    ],
    'process' => [
      'name' => 'name',
    ],
    'destination' => [
      'plugin' => 'entity:user',
      'validate' => TRUE,
    ],
  ]);
  $this
    ->assertSame(sprintf('1: [user]: name=%s||name=%s||mail=Email field is required.', $username_constraint->illegalMessage, t($username_constraint->tooLongMessage, [
    '%name' => $long_username,
    '%max' => 60,
  ])), $this->messages[0], 'First message should have 3 validation errors.');
  $this
    ->assertSame(sprintf('2: [user]: name=%s||mail=Email field is required.', $username_constraint->illegalMessage), $this->messages[1], 'Second message should have 2 validation errors.');
  $this
    ->assertSame(sprintf('3: [user]: name=%s||mail=Email field is required.', $username_constraint->illegalMessage), $this->messages[2], 'Third message should have 2 validation errors.');
  $this
    ->assertArrayNotHasKey(3, $this->messages, 'Fourth message should not exist.');
}