Issue #3073261 by oknate, phenaproxima, Wim Leers: Improve CKEditorTestTrait
parent
0c3891e0b2
commit
b28a392ece
|
@ -13,7 +13,7 @@ trait CKEditorTestTrait {
|
|||
* Waits for CKEditor to initialize.
|
||||
*
|
||||
* @param string $instance_id
|
||||
* The CKEditor instance ID.
|
||||
* (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'.
|
||||
* @param int $timeout
|
||||
* (optional) Timeout in milliseconds, defaults to 10000.
|
||||
*/
|
||||
|
@ -22,24 +22,28 @@ trait CKEditorTestTrait {
|
|||
(function() {
|
||||
return (
|
||||
typeof CKEDITOR !== 'undefined'
|
||||
&& typeof CKEDITOR.instances["$instance_id"] !== 'undefined'
|
||||
&& CKEDITOR.instances["$instance_id"].instanceReady
|
||||
&& typeof CKEDITOR.instances["{$instance_id}"] !== 'undefined'
|
||||
&& CKEDITOR.instances["{$instance_id}"].instanceReady
|
||||
);
|
||||
}());
|
||||
JS;
|
||||
|
||||
$this->getSession()->wait($timeout, $condition);
|
||||
$this->assertJsCondition($condition, $timeout);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigns a name to the CKEditor iframe.
|
||||
*
|
||||
* @param string $id
|
||||
* (optional) The id to assign the iframe element. Defaults to 'ckeditor'.
|
||||
* @param string $instance_id
|
||||
* (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'.
|
||||
*
|
||||
* @see \Behat\Mink\Session::switchToIFrame()
|
||||
*/
|
||||
protected function assignNameToCkeditorIframe() {
|
||||
protected function assignNameToCkeditorIframe($id = 'ckeditor', $instance_id = 'edit-body-0-value') {
|
||||
$javascript = <<<JS
|
||||
(function(){
|
||||
document.getElementsByClassName('cke_wysiwyg_frame')[0].id = 'ckeditor';
|
||||
CKEDITOR.instances['{$instance_id}'].element.getParent().find('.cke_wysiwyg_frame').$[0].id = '{$id}';
|
||||
})()
|
||||
JS;
|
||||
$this->getSession()->evaluateScript($javascript);
|
||||
|
@ -50,9 +54,11 @@ JS;
|
|||
*
|
||||
* @param string $name
|
||||
* The name of the button, such as `drupallink`, `source`, etc.
|
||||
* @param string $instance_id
|
||||
* (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'.
|
||||
*/
|
||||
protected function pressEditorButton($name) {
|
||||
$this->getEditorButton($name)->click();
|
||||
protected function pressEditorButton($name, $instance_id = 'edit-body-0-value') {
|
||||
$this->getEditorButton($name, $instance_id)->click();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -60,13 +66,15 @@ JS;
|
|||
*
|
||||
* @param string $name
|
||||
* The name of the button, such as `drupallink`, `source`, etc.
|
||||
* @param string $instance_id
|
||||
* (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'.
|
||||
*
|
||||
* @return \Behat\Mink\Element\NodeElement|null
|
||||
* The page element node if found, NULL if not.
|
||||
*/
|
||||
protected function getEditorButton($name) {
|
||||
protected function getEditorButton($name, $instance_id = 'edit-body-0-value') {
|
||||
$this->getSession()->switchToIFrame();
|
||||
$button = $this->assertSession()->waitForElementVisible('css', 'a.cke_button__' . $name);
|
||||
$button = $this->assertSession()->waitForElementVisible('css', "#cke_$instance_id a.cke_button__" . $name);
|
||||
$this->assertNotEmpty($button);
|
||||
|
||||
return $button;
|
||||
|
@ -77,9 +85,11 @@ JS;
|
|||
*
|
||||
* @param string $name
|
||||
* The name of the button, such as `drupallink`, `source`, etc.
|
||||
* @param string $instance_id
|
||||
* (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'.
|
||||
*/
|
||||
protected function assertEditorButtonDisabled($name) {
|
||||
$button = $this->getEditorButton($name);
|
||||
protected function assertEditorButtonDisabled($name, $instance_id = 'edit-body-0-value') {
|
||||
$button = $this->getEditorButton($name, $instance_id);
|
||||
$this->assertTrue($button->hasClass('cke_button_disabled'));
|
||||
$this->assertSame('true', $button->getAttribute('aria-disabled'));
|
||||
}
|
||||
|
@ -89,9 +99,11 @@ JS;
|
|||
*
|
||||
* @param string $name
|
||||
* The name of the button, such as `drupallink`, `source`, etc.
|
||||
* @param string $instance_id
|
||||
* (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'.
|
||||
*/
|
||||
protected function assertEditorButtonEnabled($name) {
|
||||
$button = $this->getEditorButton($name);
|
||||
protected function assertEditorButtonEnabled($name, $instance_id = 'edit-body-0-value') {
|
||||
$button = $this->getEditorButton($name, $instance_id);
|
||||
$this->assertFalse($button->hasClass('cke_button_disabled'));
|
||||
$this->assertSame('false', $button->getAttribute('aria-disabled'));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue