This repository was archived by the owner on Mar 2, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCodeceptionCkEditorUtilities.php
More file actions
115 lines (105 loc) · 3.22 KB
/
Copy pathCodeceptionCkEditorUtilities.php
File metadata and controls
115 lines (105 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
namespace Codeception\Module;
use Codeception\Exception\ElementNotFound;
use Codeception\Module;
use Ixis\Codeception\Util\BrowserTrait;
class CodeceptionCkEditorUtilities extends Module
{
use BrowserTrait;
/**
* Fill a CKEditor field.
*
* @see http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData
*
* @param string $instance_id
* The CKEditor instance id.
* @param $value
* The value (raw HTML) to enter into CK Editor.
*
* @throws ElementNotFound
* If CKEditor text area could not be found.
*/
public function fillCkEditor($instance_id, $value)
{
$this->checkCkEditorInstanceId($instance_id);
$this->getBrowserModule()->executeJs("CKEDITOR.instances['$instance_id'].setData(".json_encode($value).")");
}
/**
* Retrieve the contents of a CKEditor field.
*
* @see http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData
*
* @param string $instance_id
* The CKEditor instance id.
*
* @return string
* The CKEditor data (raw HTML).
*
* @throws ElementNotFound
* If CKEditor text area could not be found.
*
*/
public function grabCkEditorValue($instance_id)
{
$this->checkCkEditorInstanceId($instance_id);
return $this->getBrowserModule()->executeJs("return CKEDITOR.instances['$instance_id'].getData()");
}
/**
* @param string $instance_id
* The CKEditor instance id.
*
* @throws ElementNotFound
* If CKEditor instance could not be located.
*/
protected function checkCkEditorInstanceId($instance_id)
{
if ($this->getBrowserModule()->executeJs("return typeof CKEDITOR == 'undefined'")) {
throw new ElementNotFound("CKEditor");
}
if ($this->getBrowserModule()->executeJs("return typeof CKEDITOR.instances['$instance_id'] == 'undefined'")) {
throw new ElementNotFound($instance_id, "CKEditor instance");
}
}
/**
* See text within a CK Editor iframe.
*
* @param string $value
* The value to check.
* @param string $instance_id
* The CKEditor instance id.
*/
public function seeInCkEditor($value, $instance_id)
{
$this->assert($this->proceedSeeInCkEditor($value, $instance_id));
}
/**
* Don't see text within a CK Editor iframe.
*
* @param string $value
* The value that should not be there.
* @param string $instance_id
* The CKEditor instance id.
*/
public function dontSeeInCkEditor($value, $instance_id)
{
$this->assertNot($this->proceedSeeInCkEditor($value, $instance_id));
}
/**
* Helper method for checking text in a ckeditor iframe.
*
* @param string $value
* The string to check.
* @param string $instance_id
* The CKEditor instance id.
*
* @return array
*
* @throws \LogicException
* If attempting to call function when WebDriver not in use.
*/
protected function proceedSeeInCkEditor($value, $instance_id)
{
$content = $this->grabCkEditorValue($instance_id);
return array("True", strpos($content, $value) !== false);
}
}