function CKEditor5PluginManagerTest::providerTestProvidedElements

Same name in other branches
  1. 9 core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php \Drupal\Tests\ckeditor5\Kernel\CKEditor5PluginManagerTest::providerTestProvidedElements()
  2. 11.x core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php \Drupal\Tests\ckeditor5\Kernel\CKEditor5PluginManagerTest::providerTestProvidedElements()

Provides uses cases enabling different elements and the expected results.

File

core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php, line 1320

Class

CKEditor5PluginManagerTest
Tests different ways of enabling CKEditor 5 plugins.

Namespace

Drupal\Tests\ckeditor5\Kernel

Code

public static function providerTestProvidedElements() : array {
    $text_align_classes = [
        'text-align-left' => TRUE,
        'text-align-center' => TRUE,
        'text-align-right' => TRUE,
        'text-align-justify' => TRUE,
    ];
    return [
        'sourceEditing' => [
            'plugins' => [
                'ckeditor5_sourceEditing',
            ],
            'text_editor_settings' => [],
            'expected_elements' => [],
            'expected_readable_string' => '',
        ],
        'imageResize' => [
            'plugins' => [
                'ckeditor5_imageResize',
            ],
            'text_editor_settings' => [],
            'expected_elements' => [],
            'expected_readable_string' => '',
        ],
        'language' => [
            'plugins' => [
                'ckeditor5_language',
            ],
            'text_editor_settings' => [],
            'expected_elements' => [
                'span' => [
                    'lang' => TRUE,
                    'dir' => TRUE,
                ],
            ],
            'expected_readable_string' => '<span lang dir>',
        ],
        'alignment and heading' => [
            'plugins' => [
                'ckeditor5_alignment',
                'ckeditor5_heading',
                'ckeditor5_paragraph',
            ],
            'text_editor_settings' => [
                'plugins' => [
                    'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION,
                ],
            ],
            'expected_elements' => [
                'p' => [
                    'class' => $text_align_classes,
                ],
                'h2' => [
                    'class' => $text_align_classes,
                ],
                'h3' => [
                    'class' => $text_align_classes,
                ],
                'h4' => [
                    'class' => $text_align_classes,
                ],
                'h5' => [
                    'class' => $text_align_classes,
                ],
                'h6' => [
                    'class' => $text_align_classes,
                ],
            ],
            'expected_readable_string' => '<p class="text-align-left text-align-center text-align-right text-align-justify"> <h2 class="text-align-left text-align-center text-align-right text-align-justify"> <h3 class="text-align-left text-align-center text-align-right text-align-justify"> <h4 class="text-align-left text-align-center text-align-right text-align-justify"> <h5 class="text-align-left text-align-center text-align-right text-align-justify"> <h6 class="text-align-left text-align-center text-align-right text-align-justify">',
        ],
        'alignment and heading, but all class values allowed for headings' => [
            'plugins' => [
                'ckeditor5_alignment',
                'ckeditor5_heading',
                'ckeditor5_paragraph',
                'ckeditor5_plugin_elements_test_headingsUseClassAnyValue',
            ],
            'text_editor_settings' => [
                'plugins' => [
                    'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION,
                ],
            ],
            'expected_elements' => [
                'p' => [
                    'class' => $text_align_classes,
                ],
                'h2' => [
                    'class' => TRUE,
                ],
                'h3' => [
                    'class' => TRUE,
                ],
                'h4' => [
                    'class' => TRUE,
                ],
                'h5' => [
                    'class' => TRUE,
                ],
                'h6' => [
                    'class' => TRUE,
                ],
                'h1' => [
                    'class' => TRUE,
                ],
            ],
            'expected_readable_string' => '<p class="text-align-left text-align-center text-align-right text-align-justify"> <h2 class> <h3 class> <h4 class> <h5 class> <h6 class> <h1 class>',
        ],
        'heading text container combo' => [
            'plugins' => [
                'ckeditor5_plugin_elements_test_headingCombo',
                'ckeditor5_paragraph',
            ],
            'text_editor_settings' => [
                'plugins' => [],
                // Deviate from the default toolbar items because that would cause
                // the `ckeditor5_heading` plugin to be enabled.
                // @see \Drupal\ckeditor5\Plugin\Editor\CKEditor5::getDefaultSettings()
'toolbar' => [
                    'items' => [
                        'bold',
                        'italic',
                    ],
                ],
            ],
            'expected_elements' => [
                'p' => [
                    'data-everytextcontainer' => TRUE,
                ],
                'h1' => [
                    'data-justheading' => TRUE,
                    'data-everytextcontainer' => TRUE,
                ],
            ],
            'expected_readable_string' => '<p data-everytextcontainer> <h1 data-justheading data-everytextcontainer>',
        ],
        'headings plus headings with attributes' => [
            'plugins' => [
                'ckeditor5_plugin_elements_test_headingsWithOtherAttributes',
                'ckeditor5_heading',
            ],
            'text_editor_settings' => [
                'plugins' => [
                    'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION,
                ],
            ],
            'expected_elements' => [
                'h2' => [
                    'class' => [
                        'additional-allowed-class' => TRUE,
                    ],
                ],
                'h3' => [
                    'data-just-h3' => TRUE,
                    'data-just-h3-limited' => [
                        'i-am-the-only-allowed-value' => TRUE,
                    ],
                ],
                'h4' => FALSE,
                'h5' => [
                    'data-just-h5-limited' => [
                        'first-allowed-value' => TRUE,
                        'second-allowed-value' => TRUE,
                    ],
                ],
                'h6' => FALSE,
                'h1' => [
                    'data-just-h1' => TRUE,
                ],
            ],
            'expected_readable_string' => '<h2 class="additional-allowed-class"> <h3 data-just-h3 data-just-h3-limited="i-am-the-only-allowed-value"> <h4> <h5 data-just-h5-limited="first-allowed-value second-allowed-value"> <h6> <h1 data-just-h1>',
        ],
        'headings plus headings with attributes and alignment' => [
            'plugins' => [
                'ckeditor5_plugin_elements_test_headingsWithOtherAttributes',
                'ckeditor5_heading',
                'ckeditor5_alignment',
            ],
            'text_editor_settings' => [
                'plugins' => [
                    'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION,
                ],
            ],
            'expected_elements' => [
                'h2' => [
                    'class' => [
                        'additional-allowed-class' => TRUE,
                    ] + $text_align_classes,
                ],
                'h3' => [
                    'data-just-h3' => TRUE,
                    'data-just-h3-limited' => [
                        'i-am-the-only-allowed-value' => TRUE,
                    ],
                    'class' => $text_align_classes,
                ],
                'h4' => [
                    'class' => $text_align_classes,
                ],
                'h5' => [
                    'data-just-h5-limited' => [
                        'first-allowed-value' => TRUE,
                        'second-allowed-value' => TRUE,
                    ],
                    'class' => $text_align_classes,
                ],
                'h6' => [
                    'class' => $text_align_classes,
                ],
                'h1' => [
                    'data-just-h1' => TRUE,
                    'class' => $text_align_classes,
                ],
            ],
            'expected_readable_string' => '<h2 class="additional-allowed-class text-align-left text-align-center text-align-right text-align-justify"> <h3 data-just-h3 data-just-h3-limited="i-am-the-only-allowed-value" class="text-align-left text-align-center text-align-right text-align-justify"> <h4 class="text-align-left text-align-center text-align-right text-align-justify"> <h5 data-just-h5-limited="first-allowed-value second-allowed-value" class="text-align-left text-align-center text-align-right text-align-justify"> <h6 class="text-align-left text-align-center text-align-right text-align-justify"> <h1 data-just-h1 class="text-align-left text-align-center text-align-right text-align-justify">',
        ],
    ];
}

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