public function CKEditor5Test::testListPlugin in Drupal 10
Tests list plugin.
File
- core/
modules/ ckeditor5/ tests/ src/ FunctionalJavascript/ CKEditor5Test.php, line 473
Class
- CKEditor5Test
- Tests for CKEditor5.
Namespace
Drupal\Tests\ckeditor5\FunctionalJavascriptCode
public function testListPlugin() {
FilterFormat::create([
'format' => 'test_format',
'name' => 'CKEditor 5 with list',
'roles' => [
RoleInterface::AUTHENTICATED_ID,
],
])
->save();
Editor::create([
'format' => 'test_format',
'editor' => 'ckeditor5',
'settings' => [
'toolbar' => [
'items' => [
'sourceEditing',
'numberedList',
],
],
'plugins' => [
'ckeditor5_list' => [
'reversed' => FALSE,
'startIndex' => FALSE,
],
'ckeditor5_sourceEditing' => [
'allowed_tags' => [],
],
],
],
])
->save();
$this
->assertSame([], array_map(function (ConstraintViolation $v) {
return (string) $v
->getMessage();
}, iterator_to_array(CKEditor5::validatePair(Editor::load('test_format'), FilterFormat::load('test_format')))));
$ordered_list_html = '<ol><li>apple</li><li>banana</li><li>cantaloupe</li></ol>';
$page = $this
->getSession()
->getPage();
$assert_session = $this
->assertSession();
$this
->drupalGet('node/add');
$page
->fillField('title[0][value]', 'My test content');
$this
->pressEditorButton('Source');
$source_text_area = $assert_session
->waitForElement('css', '.ck-source-editing-area textarea');
$source_text_area
->setValue($ordered_list_html);
// Click source again to make source inactive and have the numbered list
// splitbutton active.
$this
->pressEditorButton('Source');
$numbered_list_dropdown_selector = '.ck-splitbutton__arrow';
// Check that there is no dropdown available for the numbered list because
// both reversed and startIndex are FALSE.
$assert_session
->elementNotExists('css', $numbered_list_dropdown_selector);
// Save content so source content is kept after changing the editor config.
$page
->pressButton('Save');
$edit_url = $this
->getSession()
->getCurrentURL() . '/edit';
$this
->drupalGet($edit_url);
$this
->waitForEditor();
// Enable the reversed functionality.
$editor = Editor::load('test_format');
$settings = $editor
->getSettings();
$settings['plugins']['ckeditor5_list']['reversed'] = TRUE;
$editor
->setSettings($settings);
$editor
->save();
$this
->getSession()
->reload();
$this
->waitForEditor();
$this
->click($numbered_list_dropdown_selector);
$reversed_order_button_selector = '.ck.ck-button.ck-numbered-list-properties__reversed-order';
$assert_session
->elementExists('css', $reversed_order_button_selector);
$assert_session
->elementTextEquals('css', $reversed_order_button_selector, 'Reversed order');
$start_index_element_selector = '.ck.ck-numbered-list-properties__start-index';
$assert_session
->elementNotExists('css', $start_index_element_selector);
// Have both the reversed and the start index enabled.
$editor = Editor::load('test_format');
$settings = $editor
->getSettings();
$settings['plugins']['ckeditor5_list']['startIndex'] = TRUE;
$editor
->setSettings($settings);
$editor
->save();
$this
->getSession()
->reload();
$this
->waitForEditor();
$this
->click($numbered_list_dropdown_selector);
$assert_session
->elementExists('css', $reversed_order_button_selector);
$assert_session
->elementTextEquals('css', $reversed_order_button_selector, 'Reversed order');
$assert_session
->elementExists('css', $start_index_element_selector);
}