View source
<?php
namespace Drupal\Tests\codemirror_editor\FunctionalJavascript;
final class EditorTest extends TestBase {
protected $defaultTheme = 'classy';
public function testEditor() {
$user = $this
->drupalCreateUser([
'access content',
]);
$this
->drupalLogin($user);
$this
->drupalGet('codemirror-editor-test');
$this->activeEditor = 1;
$this
->assertEditorOption('lineWrapping', FALSE);
$this
->assertEditorOption('lineNumbers', FALSE);
$this
->assertEditorOption('mode', 'text/html');
$this
->assertEditorOption('readOnly', FALSE);
$this
->assertEditorOption('theme', 'default');
$this
->assertEditorOption('foldGutter', FALSE);
$this
->assertEditorOption('autoCloseTags', TRUE);
$this
->assertEditorOption('styleActiveLine', FALSE);
$this
->assertEditorOption('autoRefresh', [
'delay' => 3000,
]);
$this
->assertEditorHeight(NULL);
$this
->assertScrollerMinHeight(270);
$toolbar_xpath = '//div[contains(@class, "js-form-item-editor-1")]//div[@class = "cme-toolbar"]';
$this
->assertElementExist($toolbar_xpath);
self::assertCount(13, $this
->xpath($toolbar_xpath . '/*[@class = "cme-button"]'));
$this
->editorClickButton('bold');
$this
->editorClickButton('italic');
$this
->editorClickButton('underline');
$this
->editorClickButton('strike-through');
$this
->editorClickButton('list-numbered');
$this
->editorClickButton('list-bullet');
$this
->editorClickButton('link');
$this
->editorClickButton('horizontal-rule');
$expected = [
'<strong></strong><em></em><u></u><s></s><ol>',
' <li></li>',
'</ol>',
'<ul>',
' <li></li>',
'</ul>',
'<a href=""></a>',
'<hr/>',
'',
];
$this
->assertEditorValue(implode("\n", $expected));
$this->activeEditor = 2;
$this
->assertEditorValue('');
$this->activeEditor = 1;
$this
->editorSetValue('Test');
$this
->editorSetSelection([
0,
0,
], [
0,
4,
]);
$this
->editorClickButton('bold');
$this
->assertEditorValue('<strong>Test</strong>');
$this
->editorClickButton('undo');
$this
->assertEditorValue('Test');
$this
->editorClickButton('redo');
$this
->assertEditorValue('<strong>Test</strong>');
$this
->editorSetSelection([
0,
0,
], [
0,
21,
]);
$this
->editorClickButton('clear-formatting');
$this
->assertEditorValue('Test');
$this
->editorClickButton('enlarge');
$this
->assertEditorOption('fullScreen', TRUE);
$this
->assertNotVisible('//*[@data-cme-button = "enlarge"]');
$this
->assertVisible('//*[@data-cme-button = "shrink"]');
$this
->editorClickButton('shrink');
$this
->assertEditorOption('fullScreen', FALSE);
$this
->assertVisible('//*[@data-cme-button = "enlarge"]');
$this
->assertNotVisible('//*[@data-cme-button = "shrink"]');
$this->activeEditor = 2;
$this
->assertEditorOption('mode', 'text/html');
$this
->changeMode('javascript');
$this
->assertEditorOption('mode', 'javascript');
$this
->changeMode('css');
$this
->assertEditorOption('mode', 'css');
$this
->drupalGet('codemirror-editor-test');
$this
->assertSession()
->elementExists('xpath', '//select[@class = "cme-mode"]/option');
$selected_mode = $this
->getSession()
->getDriver()
->evaluateScript('return jQuery(".cme-mode").val()');
self::assertEquals('css', $selected_mode);
$this
->assertEditorOption('mode', 'css');
$toolbar_xpath = '//div[contains(@class, "js-form-item-editor-2")]//div[@class = "cme-toolbar"]';
$this
->assertElementExist($toolbar_xpath . '/*[@data-cme-button = "bold"]');
$this
->assertElementExist($toolbar_xpath . '/*[@data-cme-button = "italic"]');
$this
->assertElementExist($toolbar_xpath . '/*[@data-cme-button = "underline"]');
self::assertCount(3, $this
->xpath($toolbar_xpath . '/*[@class = "cme-button"]'));
$this
->assertEditorOption('autoCloseTags', FALSE);
$this
->assertEditorOption('styleActiveLine', TRUE);
$this->activeEditor = 3;
$this
->assertEditorOption('mode', 'text/html');
$this
->assertElementExist($toolbar_xpath . '/select[@class = "cme-mode"]');
$this
->assertVisible('//div[contains(@class, "js-form-item-editor-2")]//div[@class = "CodeMirror-gutters"]');
$this
->assertVisible('//div[contains(@class, "js-form-item-editor-3")]//div[@class = "CodeMirror-gutters"]');
$this->activeEditor = 3;
$this
->assertElementNotExist($toolbar_xpath . '//div[contains(@class, "js-form-item-editor-3")]//div[@class = "cme-toolbar"]');
$this
->assertEditorHeight('100px');
$this
->assertEditorOption('readOnly', TRUE);
$this
->assertEditorOption('foldGutter', TRUE);
}
}