public function CKEditor5AllowedTagsTest::testMediaElementAllowedTags in Drupal 10
Test that <drupal-media> is added to allowed tags when media embed enabled.
File
- core/
modules/ ckeditor5/ tests/ src/ FunctionalJavascript/ CKEditor5AllowedTagsTest.php, line 366
Class
- CKEditor5AllowedTagsTest
- Tests for CKEditor5.
Namespace
Drupal\Tests\ckeditor5\FunctionalJavascriptCode
public function testMediaElementAllowedTags() {
$page = $this
->getSession()
->getPage();
$assert_session = $this
->assertSession();
$this
->createNewTextFormat($page, $assert_session);
EntityViewMode::create([
'id' => 'media.view_mode_1',
'targetEntityType' => 'media',
'status' => TRUE,
'enabled' => TRUE,
'label' => 'View Mode 1',
])
->save();
EntityViewMode::create([
'id' => 'media.view_mode_2',
'targetEntityType' => 'media',
'status' => TRUE,
'enabled' => TRUE,
'label' => 'View Mode 2',
])
->save();
// Allowed HTML field is readonly and its wrapper has a form-disabled class.
$this
->assertNotEmpty($assert_session
->waitForElement('css', '.js-form-item-filters-filter-html-settings-allowed-html.form-disabled'));
$allowed_html_field = $assert_session
->fieldExists('filters[filter_html][settings][allowed_html]');
$this
->assertTrue($allowed_html_field
->hasAttribute('readonly'));
// Allowed tags are currently the default, with no <drupal-media>.
$this
->assertEquals($this->allowedElements, $allowed_html_field
->getValue());
// Enable media embed.
$this
->assertTrue($page
->hasUncheckedField('filters[media_embed][status]'));
$page
->checkField('filters[media_embed][status]');
$assert_session
->assertWaitOnAjaxRequest();
$assert_session
->responseContains('Media types selectable in the Media Library');
$page
->clickLink('Embed media');
$page
->checkField('filters[media_embed][settings][allowed_view_modes][view_mode_1]');
$page
->checkField('filters[media_embed][settings][allowed_view_modes][view_mode_2]');
$assert_session
->assertWaitOnAjaxRequest();
$allowed_with_media = $this->allowedElements . ' <drupal-media data-entity-type data-entity-uuid alt data-view-mode>';
$allowed_with_media_without_view_mode = $this->allowedElements . ' <drupal-media data-entity-type data-entity-uuid alt>';
$assert_session
->responseContains('Media types selectable in the Media Library');
$page
->clickLink('Media');
$assert_session
->waitForText('Allow the user to override the default view mode');
$this
->assertTrue($page
->hasUncheckedField('editor[settings][plugins][media_media][allow_view_mode_override]'));
$this
->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $allowed_with_media_without_view_mode);
$page
->checkField('editor[settings][plugins][media_media][allow_view_mode_override]');
$assert_session
->assertWaitOnAjaxRequest();
$this
->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $allowed_with_media);
$this
->saveNewTextFormat($page, $assert_session);
$assert_session
->pageTextContains('Added text format ckeditor5.');
// Confirm <drupal-media> was added to allowed tags on save, as a result of
// enabling the media embed filter.
$this
->assertSame($allowed_with_media, FilterFormat::load('ckeditor5')
->filters('filter_html')
->getConfiguration()['settings']['allowed_html']);
$page
->find('css', '[data-drupal-selector="edit-formats-ckeditor5"]')
->clickLink('Configure');
// Confirm that <drupal-media> is now included in the "Allowed tags" form
// field.
$this
->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $allowed_with_media);
// Ensure that data-align attribute is added to <drupal-media> when
// filter_align is enabled.
$page
->checkField('filters[filter_align][status]');
$assert_session
->assertWaitOnAjaxRequest();
$this
->assertEquals($this->allowedElements . ' <drupal-media data-entity-type data-entity-uuid alt data-view-mode data-align>', $allowed_html_field
->getValue());
// Disable media embed.
$this
->assertTrue($page
->hasCheckedField('filters[media_embed][status]'));
$page
->uncheckField('filters[media_embed][status]');
$assert_session
->assertWaitOnAjaxRequest();
// Confirm allowed tags no longer has <drupal-media>.
$this
->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $this->allowedElements);
}