function SourceEditingTest::testSourceEditingSettingsForm

Same name and namespace in other branches
  1. 10 core/modules/ckeditor5/tests/src/FunctionalJavascript/SourceEditingTest.php \Drupal\Tests\ckeditor5\FunctionalJavascript\SourceEditingTest::testSourceEditingSettingsForm()
  2. 11.x core/modules/ckeditor5/tests/src/FunctionalJavascript/SourceEditingTest.php \Drupal\Tests\ckeditor5\FunctionalJavascript\SourceEditingTest::testSourceEditingSettingsForm()

@covers \Drupal\ckeditor5\Plugin\CKEditor5Plugin\SourceEditing::buildConfigurationForm

File

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

Class

SourceEditingTest
@coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\SourceEditing[[api-linebreak]] @covers \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::getCKEditor5PluginConfig()[[api-linebreak]] @group ckeditor5 @internal

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

Code

public function testSourceEditingSettingsForm() {
  $this->drupalLogin($this->drupalCreateUser([
    'administer filters',
  ]));
  $page = $this->getSession()
    ->getPage();
  $assert_session = $this->assertSession();
  $this->createNewTextFormat($page, $assert_session);
  $assert_session->assertWaitOnAjaxRequest();
  // The Source Editing plugin settings form should not be present.
  $assert_session->elementNotExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-sourceediting"]');
  $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-sourceEditing'));
  $this->triggerKeyUp('.ckeditor5-toolbar-item-sourceEditing', 'ArrowDown');
  $assert_session->assertWaitOnAjaxRequest();
  // The Source Editing plugin settings form should now be present and should
  // have no allowed tags configured.
  $page->clickLink('Source editing');
  $this->assertNotNull($assert_session->waitForElementVisible('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-sourceediting-allowed-tags"]'));
  $javascript = <<<JS
      const allowedTags = document.querySelector('[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-sourceediting-allowed-tags"]');
      allowedTags.value = '<div data-foo>';
      allowedTags.dispatchEvent(new Event('input'));
JS;
  $this->getSession()
    ->executeScript($javascript);
  // Immediately save the configuration. Intentionally do nothing that would
  // trigger an AJAX rebuild.
  $page->pressButton('Save configuration');
  // Verify that the configuration was saved.
  $this->drupalGet('admin/config/content/formats/manage/ckeditor5');
  $page->clickLink('Source editing');
  $this->assertNotNull($ghs_textarea = $assert_session->waitForElementVisible('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-sourceediting-allowed-tags"]'));
  $ghs_string = '<div data-foo>';
  $this->assertSame($ghs_string, $ghs_textarea->getValue());
  $allowed_html_field = $assert_session->fieldExists('filters[filter_html][settings][allowed_html]');
  $this->assertStringContainsString($ghs_string, $allowed_html_field->getValue(), "{$ghs_string} not found in the allowed tags value of: {$allowed_html_field->getValue()}");
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.