ConfigurablePluginTest.php

Same filename and directory in other branches
  1. 9 core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php
  2. 11.x core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php

Namespace

Drupal\Tests\ckeditor5\Kernel

File

core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\ckeditor5\Kernel;

use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition;
use Drupal\KernelTests\KernelTestBase;

/**
 * Tests configurable plugins.
 *
 * @group ckeditor5
 * @internal
 */
class ConfigurablePluginTest extends KernelTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'ckeditor5',
        // These modules must be installed for ckeditor5_config_schema_info_alter()
        // to work, which in turn is necessary for the plugin definition validation
        // logic.
        // @see \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition::validateDrupalAspects()
'filter',
        'editor',
    ];
    
    /**
     * The manager for "CKEditor 5 plugin" plugins.
     *
     * @var \Drupal\Component\Plugin\PluginManagerInterface
     */
    protected $manager;
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        $this->manager = $this->container
            ->get('plugin.manager.ckeditor5.plugin');
    }
    
    /**
     * Tests default settings for configurable CKEditor 5 plugins.
     */
    public function testDefaults() : void {
        $all_definitions = $this->manager
            ->getDefinitions();
        $configurable_definitions = array_filter($all_definitions, function (CKEditor5PluginDefinition $definition) : bool {
            return $definition->isConfigurable();
        });
        $default_plugin_settings = [];
        foreach (array_keys($configurable_definitions) as $plugin_name) {
            $default_plugin_settings[$plugin_name] = $this->manager
                ->getPlugin($plugin_name, NULL)
                ->defaultConfiguration();
        }
        $expected_default_plugin_settings = [
            'ckeditor5_heading' => [
                'enabled_headings' => [
                    'heading2',
                    'heading3',
                    'heading4',
                    'heading5',
                    'heading6',
                ],
            ],
            'ckeditor5_style' => [
                'styles' => [],
            ],
            'ckeditor5_sourceEditing' => [
                'allowed_tags' => [],
            ],
            'ckeditor5_codeBlock' => [
                'languages' => [
                    [
                        'language' => 'plaintext',
                        'label' => 'Plain text',
                    ],
                    [
                        'language' => 'c',
                        'label' => 'C',
                    ],
                    [
                        'language' => 'cs',
                        'label' => 'C#',
                    ],
                    [
                        'language' => 'cpp',
                        'label' => 'C++',
                    ],
                    [
                        'language' => 'css',
                        'label' => 'CSS',
                    ],
                    [
                        'language' => 'diff',
                        'label' => 'Diff',
                    ],
                    [
                        'language' => 'html',
                        'label' => 'HTML',
                    ],
                    [
                        'language' => 'java',
                        'label' => 'Java',
                    ],
                    [
                        'language' => 'javascript',
                        'label' => 'JavaScript',
                    ],
                    [
                        'language' => 'php',
                        'label' => 'PHP',
                    ],
                    [
                        'language' => 'python',
                        'label' => 'Python',
                    ],
                    [
                        'language' => 'ruby',
                        'label' => 'Ruby',
                    ],
                    [
                        'language' => 'typescript',
                        'label' => 'TypeScript',
                    ],
                    [
                        'language' => 'xml',
                        'label' => 'XML',
                    ],
                ],
            ],
            'ckeditor5_list' => [
                'properties' => [
                    'reversed' => TRUE,
                    'startIndex' => TRUE,
                ],
                'multiBlock' => TRUE,
            ],
            'ckeditor5_alignment' => [
                'enabled_alignments' => [
                    0 => 'left',
                    1 => 'center',
                    2 => 'right',
                    3 => 'justify',
                ],
            ],
            'ckeditor5_image' => [],
            'ckeditor5_imageResize' => [
                'allow_resize' => TRUE,
            ],
            'ckeditor5_language' => [
                'language_list' => 'un',
            ],
        ];
        $this->assertSame($expected_default_plugin_settings, $default_plugin_settings);
    }

}

Classes

Title Deprecated Summary
ConfigurablePluginTest Tests configurable plugins.

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