Skip to content
Snippets Groups Projects
Unverified Commit fe3d2efd authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3270765 by Wim Leers, lauriii: Add test coverage for createDropdown in drupalElementStyles

parent 285c13a3
No related branches found
No related tags found
37 merge requests!12227Issue #3181946 by jonmcl, mglaman,!7471uncessary 5 files are moved from media-library folder to misc folder,!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!54479.5.x SF update,!5014Issue #3071143: Table Render Array Example Is Incorrect,!4868Issue #1428520: Improve menu parent link selection,!4289Issue #1344552 by marcingy, Niklas Fiekas, Ravi.J, aleevas, Eduardo Morales...,!4114Issue #2707291: Disable body-level scrolling when a dialog is open as a modal,!3630Issue #2815301 by Chi, DanielVeza, kostyashupenko, smustgrave: Allow to create...,!3291Issue #3336463: Rewrite rules for gzipped CSS and JavaScript aggregates never match,!3143Issue #3313342: [PHP 8.1] Deprecated function: strpos(): Passing null to parameter #1 LayoutBuilderUiCacheContext.php on line 28,!3102Issue #3164428 by DonAtt, longwave, sahil.goyal, Anchal_gupta, alexpott: Use...,!2853#3274419 Makes BaseFieldOverride inherit the internal property from the base field.,!2719Issue #3110137: Remove Classy from core.,!2437Issue #3238257 by hooroomoo, Wim Leers: Fragment link pointing to <textarea>...,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2074Issue #2707689: NodeForm::actions() checks for delete access on new entities,!2062Issue #3246454: Add weekly granularity to views date sort,!1591Issue #3199697: Add JSON:API Translation experimental module,!1484Exposed filters get values from URL when Ajax is on,!1255Issue #3238922: Refactor (if feasible) uses of the jQuery serialize function to use vanillaJS,!1254Issue #3238915: Refactor (if feasible) uses of the jQuery ready function to use VanillaJS,!1162Issue #3100350: Unable to save '/' root path alias,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!957Added throwing of InvalidPluginDefinitionException from getDefinition().,!925Issue #2339235: Remove taxonomy hard dependency on node module,!877Issue #2708101: Default value for link text is not saved,!873Issue #2875228: Site install not using batch API service,!872Draft: Issue #3221319: Race condition when creating menu links and editing content deletes menu links,!844Resolve #3036010 "Updaters",!712Issue #2909128: Autocomplete intermittent on Chrome Android,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493,!485Sets the autocomplete attribute for username/password input field on login form.,!30Issue #3182188: Updates composer usage to point at ./vendor/bin/composer
name: CKEditor 5 Drupal Element Style Test
type: module
description: "Provides ability to run DrupalElementStyle CKEditor 5 plugin in multiple ways."
package: Testing
dependencies:
- drupal:ckeditor5
- drupal:media
<?php
/**
* @file
* Implements hooks for the CKEditor 5 Drupal Element Style Test module.
*/
declare(strict_types = 1);
use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition;
/**
* Implements hook_ckeditor4to5upgrade_plugin_info_alter().
*/
function ckeditor5_drupalelementstyle_test_ckeditor5_plugin_info_alter(array &$plugin_definitions): void {
// Update `media_mediaAlign`.
assert($plugin_definitions['media_mediaAlign'] instanceof CKEditor5PluginDefinition);
$media_align_plugin_definition = $plugin_definitions['media_mediaAlign']->toArray();
$media_align_plugin_definition['ckeditor5']['config']['drupalMedia']['toolbar'] = [
0 => [
'name' => 'drupalMedia:align',
'title' => 'Test title',
'items' => array_values(array_filter($media_align_plugin_definition['ckeditor5']['config']['drupalMedia']['toolbar'], function (string $toolbar_item): bool {
return $toolbar_item !== '|';
})),
'defaultItem' => 'drupalElementStyle:breakText',
],
];
$plugin_definitions['media_mediaAlign'] = new CKEditor5PluginDefinition($media_align_plugin_definition);
}
......@@ -1058,6 +1058,43 @@ public function testAlignment() {
$this->assertFalse($drupal_media_element->hasAttribute('data-align'));
}
/**
* Ensures that Drupal Media Styles can be displayed in a dropdown.
*/
public function testDrupalMediaStyleInDropdown() {
\Drupal::service('module_installer')->install(['ckeditor5_drupalelementstyle_test']);
$this->resetAll();
$assert_session = $this->assertSession();
$this->drupalGet($this->host->toUrl('edit-form'));
$this->waitForEditor();
// Wait for the media preview to load.
$this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.drupal-media img'));
// Ensure that by default the "Break text" alignment option is selected and
// that the split button title is displayed.
$this->click('.ck-widget.drupal-media');
$this->assertVisibleBalloon('[aria-label="Drupal Media toolbar"]');
$this->assertNotEmpty(($split_button = $this->getBalloonButton('Test title: Break text'))->hasClass('ck-on'));
// Ensure that the split button can be opened.
$split_button->click();
$this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-dropdown__panel-visible'));
// Ensure that a button inside the split button can be clicked.
$this->assertNotEmpty($align_button = $this->getBalloonButton('Align center and break text'));
$align_button->click();
// Ensure that the "Align center and break text" option is selected and the
// split button title is displayed.
$this->assertNotEmpty($assert_session->waitForElement('css', '.ck-widget.drupal-media.drupal-media-style-align-center'));
$editor_dom = $this->getEditorDataAsDom();
$drupal_media_element = $editor_dom->getElementsByTagName('drupal-media')
->item(0);
$this->assertEquals('center', $drupal_media_element->getAttribute('data-align'));
$this->assertNotEmpty(($this->getBalloonButton('Test title: Align center and break text'))->hasClass('ck-on'));
}
/**
* Tests Drupal Media Style with a CSS class.
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment