function CKEditor5Test::testSave

Ensures that changes are saved in CKEditor 5.

File

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

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',
        'image_upload' => [
            'status' => FALSE,
        ],
        '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',
        'image_upload' => [
            'status' => FALSE,
        ],
    ])->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.