You are here

public function SourceEditingTest::testAllowingExtraAttributes in Drupal 10

Tests allowing extra attributes on already supported tags using GHS.

@dataProvider providerAllowingExtraAttributes

File

core/modules/ckeditor5/tests/src/FunctionalJavascript/SourceEditingTest.php, line 177

Class

SourceEditingTest
@coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\SourceEditing @covers \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::getCKEditor5PluginConfig() @group ckeditor5 @internal

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

Code

public function testAllowingExtraAttributes(string $original_markup, string $expected_markup, ?string $allowed_elements_string = NULL) {
  $this->host->body->value = $original_markup;
  $this->host
    ->save();
  if ($allowed_elements_string) {

    // Allow creating additional HTML using SourceEditing.
    $text_editor = Editor::load('test_format');
    $settings = $text_editor
      ->getSettings();
    $settings['plugins']['ckeditor5_sourceEditing']['allowed_tags'][] = $allowed_elements_string;
    $text_editor
      ->setSettings($settings);

    // Keep the allowed HTML tags in sync.
    $text_format = FilterFormat::load('test_format');
    $allowed_elements = HTMLRestrictions::fromTextFormat($text_format);
    $updated_allowed_tags = $allowed_elements
      ->merge(HTMLRestrictions::fromString($allowed_elements_string));
    $filter_html_config = $text_format
      ->filters('filter_html')
      ->getConfiguration();
    $filter_html_config['settings']['allowed_html'] = $updated_allowed_tags
      ->toFilterHtmlAllowedTagsString();
    $text_format
      ->setFilterConfig('filter_html', $filter_html_config);

    // Verify the text format and editor are still a valid pair.
    $this
      ->assertSame([], array_map(function (ConstraintViolation $v) {
      return (string) $v
        ->getMessage();
    }, iterator_to_array(CKEditor5::validatePair($text_editor, $text_format))));

    // If valid, save both.
    $text_format
      ->save();
    $text_editor
      ->save();
  }
  $this
    ->drupalGet($this->host
    ->toUrl('edit-form'));
  $this
    ->waitForEditor();
  $this
    ->assertSame($expected_markup, $this
    ->getEditorDataAsHtmlString());
}