CKEditor5CodeSyntaxTest.php

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

File

core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5CodeSyntaxTest.php

View source
<?php

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

use Behat\Mink\Element\NodeElement;
use Drupal\editor\Entity\Editor;
use Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait;

/**
 * Tests code block configured languages are respected.
 *
 * @group ckeditor5
 * @internal
 */
class CKEditor5CodeSyntaxTest extends CKEditor5TestBase {
    use CKEditor5TestTrait;
    
    /**
     * Tests code block configured languages are respected.
     */
    public function testCKEditor5CodeSyntax() : void {
        $this->addNewTextFormat();
        
        /** @var \Drupal\editor\Entity\Editor $editor */
        $editor = Editor::load('ckeditor5');
        $editor->setSettings([
            'toolbar' => [
                'items' => [
                    'codeBlock',
                ],
            ],
            'plugins' => [
                'ckeditor5_codeBlock' => [
                    'languages' => [
                        [
                            'label' => 'Twig',
                            'language' => 'twig',
                        ],
                        [
                            'label' => 'YML',
                            'language' => 'yml',
                        ],
                    ],
                ],
            ],
        ])
            ->save();
        $this->drupalGet('/node/add/page');
        $this->waitForEditor();
        // Open code block dropdown, and verify that correct languages are present.
        $assertSession = $this->assertSession();
        $page = $this->getSession()
            ->getPage();
        $page->find('css', '.ck-code-block-dropdown .ck-dropdown__button .ck-splitbutton__arrow')
            ->click();
        $codeBlockOptionsSelector = '.ck-code-block-dropdown .ck-dropdown__panel .ck-list__item .ck-button__label';
        $assertSession->waitForElementVisible('css', $codeBlockOptionsSelector);
        $codeBlockOptions = $page->findAll('css', $codeBlockOptionsSelector);
        $this->assertCount(2, $codeBlockOptions);
        $this->assertEquals([
            'Twig',
            'YML',
        ], \array_map(static fn(NodeElement $el) => $el->getText(), $codeBlockOptions));
    }

}

Classes

Title Deprecated Summary
CKEditor5CodeSyntaxTest Tests code block configured languages are respected.

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