InternalTest.php

Same filename and directory in other branches
  1. 9 core/modules/ckeditor/tests/src/Kernel/Plugin/CKEditorPlugin/InternalTest.php

Namespace

Drupal\Tests\ckeditor\Kernel\Plugin\CKEditorPlugin

File

core/modules/ckeditor/tests/src/Kernel/Plugin/CKEditorPlugin/InternalTest.php

View source
<?php

namespace Drupal\Tests\ckeditor\Kernel\Plugin\CKEditorPlugin;

use Drupal\editor\Entity\Editor;
use Drupal\filter\Entity\FilterFormat;
use Drupal\KernelTests\KernelTestBase;

/**
 * @coversDefaultClass \Drupal\ckeditor\Plugin\CKEditorPlugin\Internal
 *
 * @group ckeditor
 */
class InternalTest extends KernelTestBase {
    
    /**
     * Modules to enable.
     *
     * @var array
     */
    public static $modules = [
        'ckeditor',
        'ckeditor_test',
        'filter',
        'editor',
    ];
    
    /**
     * A testing text format.
     *
     * @var \Drupal\filter\Entity\FilterFormat
     */
    protected $format;
    
    /**
     * A testing text editor.
     *
     * @var \Drupal\editor\Entity\Editor
     */
    protected $editor;
    
    /**
     * The CKEditor plugin manager.
     *
     * @var \Drupal\Component\Plugin\PluginManagerInterface
     */
    protected $ckeditorPluginManager;
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() {
        parent::setUp();
        $this->installEntitySchema('editor');
        $this->installEntitySchema('filter_format');
        $this->format = FilterFormat::create([
            'format' => 'test_format',
            'name' => $this->randomMachineName(),
        ]);
        $this->format
            ->save();
        $this->editor = Editor::create([
            'editor' => 'ckeditor',
            'format' => 'test_format',
            'settings' => [
                'toolbar' => [
                    'rows' => [
                        [
                            [
                                'name' => 'Enabled Buttons',
                                'items' => [
                                    'Format',
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ]);
        $this->editor
            ->save();
        $this->ckeditorPluginManager = $this->container
            ->get('plugin.manager.ckeditor.plugin');
    }
    
    /**
     * Test the format tags settings.
     *
     * @dataProvider formatTagsSettingsTestCases
     */
    public function testFormatTagsSettings($filter_plugins, $expected_format_tags) {
        foreach ($filter_plugins as $filter_plugin_id => $filter_plugin_settings) {
            $this->format
                ->setFilterConfig($filter_plugin_id, $filter_plugin_settings);
        }
        $this->format
            ->save();
        $internal_plugin = $this->ckeditorPluginManager
            ->createInstance('internal', []);
        $plugin_config = $internal_plugin->getConfig($this->editor);
        $this->assertEquals($expected_format_tags, explode(';', $plugin_config['format_tags']));
    }
    
    /**
     * A data provider for testFormatTagsSettings.
     */
    public function formatTagsSettingsTestCases() {
        $all_tags = [
            'p',
            'h1',
            'h2',
            'h3',
            'h4',
            'h5',
            'h6',
            'pre',
        ];
        return [
            'No filter plugins enabled (all tags allowed)' => [
                [],
                $all_tags,
            ],
            'HTML filter plugin enabled (some tags filtered out)' => [
                [
                    'filter_html' => [
                        'status' => 1,
                        'settings' => [
                            'allowed_html' => '<h1> <h2>',
                            'filter_html_help' => 1,
                            'filter_html_nofollow' => 0,
                        ],
                    ],
                ],
                [
                    'p',
                    'h1',
                    'h2',
                ],
            ],
            'Test attribute filter enabled (all tags allowed)' => [
                [
                    'test_attribute_filter' => [
                        'status' => 1,
                        'settings' => [
                            'tags' => [
                                'h1',
                                'h2',
                            ],
                        ],
                    ],
                ],
                $all_tags,
            ],
        ];
    }

}

Classes

Title Deprecated Summary
InternalTest @coversDefaultClass \Drupal\ckeditor\Plugin\CKEditorPlugin\Internal

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