Skip to content
Snippets Groups Projects

Issue #3396742: CKEditor5 doens't save updated value if form submitted right after the change

Open Issue #3396742: CKEditor5 doens't save updated value if form submitted right after the change
1 unresolved thread
1 unresolved thread
@@ -726,4 +726,82 @@ function (ConstraintViolationInterface $v) {
$this->assertSession()->responseContains('Text hidden in the source');
}
/**
* Ensures that changes are saved in CKEditor 5.
*/
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');
}
}
Loading