You are here

public function MigrateUserConfigsTest::testUserSettings in Drupal 8

Tests migration of user variables to user.settings.yml.

File

core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserConfigsTest.php, line 55

Class

MigrateUserConfigsTest
Upgrade variables to user.*.yml.

Namespace

Drupal\Tests\user\Kernel\Migrate\d6

Code

public function testUserSettings() {
  $config = $this
    ->config('user.settings');
  $this
    ->assertIdentical(TRUE, $config
    ->get('notify.status_blocked'));
  $this
    ->assertIdentical(FALSE, $config
    ->get('notify.status_activated'));
  $this
    ->assertIdentical(FALSE, $config
    ->get('verify_mail'));
  $this
    ->assertIdentical('admin_only', $config
    ->get('register'));
  $this
    ->assertIdentical('Guest', $config
    ->get('anonymous'));

  // Tests migration of user_register using the AccountSettingsForm.
  // Map D6 value to D8 value
  $user_register_map = [
    [
      0,
      UserInterface::REGISTER_ADMINISTRATORS_ONLY,
    ],
    [
      1,
      UserInterface::REGISTER_VISITORS,
    ],
    [
      2,
      UserInterface::REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL,
    ],
  ];
  foreach ($user_register_map as $map) {

    // Tests migration of user_register = 1
    Database::getConnection('default', 'migrate')
      ->update('variable')
      ->fields([
      'value' => serialize($map[0]),
    ])
      ->condition('name', 'user_register')
      ->execute();

    /** @var \Drupal\migrate\Plugin\MigrationInterface $migration */
    $migration = $this
      ->getMigration('d6_user_settings');

    // Indicate we're rerunning a migration that's already run.
    $migration
      ->getIdMap()
      ->prepareUpdate();
    $this
      ->executeMigration($migration);
    $form = $this->container
      ->get('form_builder')
      ->getForm(AccountSettingsForm::create($this->container));
    $this
      ->assertIdentical($map[1], $form['registration_cancellation']['user_register']['#value']);
  }
}