function CKEditor5Test::testSave

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

Ensures that changes are saved in CKEditor 5.

File

core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php, line 646

Class

CKEditor5Test
Tests for CKEditor 5.

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

Code

public function testSave() : void {
  // To replicate the bug from https://www.drupal.org/i/3396742
  // We need 2 or more text formats and node edit page.
  FilterFormat::create([
    'format' => 'ckeditor5',
    'name' => 'CKEditor 5 HTML',
    'roles' => [
      RoleInterface::AUTHENTICATED_ID,
    ],
  ])->save();
  Editor::create([
    'format' => 'ckeditor5',
    'editor' => 'ckeditor5',
    'settings' => [
      'toolbar' => [
        'items' => [
          'sourceEditing',
        ],
      ],
      'plugins' => [
        'ckeditor5_sourceEditing' => [
          'allowed_tags' => [],
        ],
      ],
    ],
  ])->save();
  $this->assertSame([], array_map(function (ConstraintViolation $v) {
    return (string) $v->getMessage();
  }, iterator_to_array(CKEditor5::validatePair(Editor::load('ckeditor5'), FilterFormat::load('ckeditor5')))));
  FilterFormat::create([
    'format' => 'ckeditor5_2',
    'name' => 'CKEditor 5 HTML 2',
    'roles' => [
      RoleInterface::AUTHENTICATED_ID,
    ],
  ])->save();
  Editor::create([
    'format' => 'ckeditor5_2',
    'editor' => 'ckeditor5',
  ])->save();
  $this->assertSame([], array_map(function (ConstraintViolation $v) {
    return (string) $v->getMessage();
  }, iterator_to_array(CKEditor5::validatePair(Editor::load('ckeditor5_2'), FilterFormat::load('ckeditor5_2')))));
  $this->drupalCreateNode([
    'title' => 'My test content',
  ]);
  // Test that entered text is saved.
  $this->drupalGet('node/1/edit');
  $page = $this->getSession()
    ->getPage();
  $this->waitForEditor();
  $editor = $page->find('css', '.ck-content');
  $editor->setValue('Very important information');
  $page->pressButton('Save');
  $this->assertSession()
    ->responseContains('Very important information');
  // Test that changes only in source are saved.
  $this->drupalGet('node/1/edit');
  $page = $this->getSession()
    ->getPage();
  $this->waitForEditor();
  $this->pressEditorButton('Source');
  $editor = $page->find('css', '.ck-source-editing-area textarea');
  $editor->setValue('Text hidden in the source');
  $page->pressButton('Save');
  $this->assertSession()
    ->responseContains('Text hidden in the source');
}

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