You are here

public function MigrateFilterFormatTest::testFilterFormat in Drupal 9

Same name in this branch
  1. 9 core/modules/filter/tests/src/Kernel/Migrate/d6/MigrateFilterFormatTest.php \Drupal\Tests\filter\Kernel\Migrate\d6\MigrateFilterFormatTest::testFilterFormat()
  2. 9 core/modules/filter/tests/src/Kernel/Migrate/d7/MigrateFilterFormatTest.php \Drupal\Tests\filter\Kernel\Migrate\d7\MigrateFilterFormatTest::testFilterFormat()
Same name and namespace in other branches
  1. 8 core/modules/filter/tests/src/Kernel/Migrate/d7/MigrateFilterFormatTest.php \Drupal\Tests\filter\Kernel\Migrate\d7\MigrateFilterFormatTest::testFilterFormat()

Tests the Drupal 7 filter format to Drupal 8 migration.

File

core/modules/filter/tests/src/Kernel/Migrate/d7/MigrateFilterFormatTest.php, line 88

Class

MigrateFilterFormatTest
Upgrade variables to filter.formats.*.yml.

Namespace

Drupal\Tests\filter\Kernel\Migrate\d7

Code

public function testFilterFormat() {
  $this
    ->assertEntity('custom_text_format', 'Custom Text format', [
    'filter_autop' => 0,
    'filter_html' => -10,
  ], 0, TRUE);
  $this
    ->assertEntity('filtered_html', 'Filtered HTML', [
    'filter_autop' => 2,
    'filter_html' => 1,
    'filter_htmlcorrector' => 10,
    'filter_url' => 0,
  ], 0, TRUE);
  $this
    ->assertEntity('full_html', 'Full HTML', [
    'filter_autop' => 1,
    'filter_htmlcorrector' => 10,
    'filter_url' => 0,
  ], 1, TRUE);
  $this
    ->assertEntity('plain_text', 'Plain text', [
    'filter_html_escape' => 0,
    'filter_url' => 1,
    'filter_autop' => 2,
  ], 10, TRUE);

  // This assertion covers issue #2555089. Drupal 7 formats are identified
  // by machine names, so migrated formats should be merged into existing
  // ones.
  $this
    ->assertNull(FilterFormat::load('plain_text1'));

  // Ensure that filter-specific settings were migrated.

  /** @var \Drupal\filter\FilterFormatInterface $format */
  $format = FilterFormat::load('filtered_html');
  $this
    ->assertInstanceOf(FilterFormatInterface::class, $format);
  $config = $format
    ->filters('filter_html')
    ->getConfiguration();
  $this
    ->assertSame('<div> <span> <ul type> <li> <ol start type> <a href hreflang> <img src alt height width>', $config['settings']['allowed_html']);
  $config = $format
    ->filters('filter_url')
    ->getConfiguration();
  $this
    ->assertSame(128, $config['settings']['filter_url_length']);

  // The disabled php_code format gets migrated, but the php_code filter is
  // changed to filter_null.
  $this
    ->assertEntity('php_code', 'PHP code', [
    'filter_null' => 0,
  ], 11, FALSE);

  // Test a non-existent format.
  $this
    ->assertEntity('image_resize_filter', 'Image resize', [], 0, TRUE);

  // For each filter that does not exist on the destination, there should be
  // a log message.
  $migration = $this
    ->getMigration('d7_filter_format');
  $errors = array_map(function ($message) {
    return $message->message;
  }, iterator_to_array($migration
    ->getIdMap()
    ->getMessages()));
  $this
    ->assertCount(2, $errors);
  sort($errors);
  $message = 'Filter image_resize_filter could not be mapped to an existing filter plugin; omitted since it is a transformation-only filter. Install and configure a successor after the migration.';
  $this
    ->assertEquals($errors[0], $message);
  $message = 'Filter php_code could not be mapped to an existing filter plugin; defaulting to filter_null and dropping all settings. Either redo the migration with the module installed that provides an equivalent filter, or modify the text format after the migration to remove this filter if it is no longer necessary.';
  $this
    ->assertEquals($errors[1], $message);
}