You are here

public function CKEditor5PluginManagerTest::testProvidedElementsInvalidElementSubset in Drupal 10

Tests detection of invalid CKEditor5PluginElementsSubsetInterface classes.

@dataProvider providerProvidedElementsInvalidElementSubset

File

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

Class

CKEditor5PluginManagerTest
Tests different ways of enabling CKEditor 5 plugins.

Namespace

Drupal\Tests\ckeditor5\Kernel

Code

public function testProvidedElementsInvalidElementSubset(array $configured_subset, string $expected_exception_message) : void {
  $this
    ->enableModules([
    'ckeditor5_plugin_elements_subset',
  ]);

  // Configure the sneaky superset plugin.
  $sneaky_plugin_id = 'ckeditor5_plugin_elements_subset_sneakySuperset';
  $text_editor = Editor::create([
    'format' => 'dummy',
    'editor' => 'ckeditor5',
    'settings' => [
      'plugins' => [
        $sneaky_plugin_id => [
          'configured_subset' => $configured_subset,
        ],
      ],
    ],
    'image_upload' => [],
  ]);

  // Invalid subsets are allowed on unsaved Text Editor config entities,
  // because they may have invalid configuration.
  $text_editor
    ->enforceIsNew(FALSE);

  // No exception when getting all provided elements.
  $this
    ->assertGreaterThan(0, count($this->manager
    ->getProvidedElements()));

  // No exception when getting the sneaky plugin's provided elements.
  $this
    ->assertGreaterThan(0, count($this->manager
    ->getProvidedElements([
    $sneaky_plugin_id,
  ])));

  // Exception when getting the sneaky plugin's provided elements *and* a text
  // editor config entity is passed: only then can a subset be generated based
  // on configuration.
  $this
    ->expectException(\LogicException::class);
  $this
    ->expectExceptionMessage($expected_exception_message);
  $this->manager
    ->getProvidedElements([
    $sneaky_plugin_id,
  ], $text_editor);
}