wysihtml5_with_ps 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,62 @@
1
+ module("wysihtml5.dom.delegate", {
2
+ setup: function() {
3
+ this.container = document.createElement("div");
4
+ this.link1 = document.createElement("a");
5
+ this.link2 = document.createElement("a");
6
+ this.nestedSpan = document.createElement("span");
7
+
8
+ this.link2.appendChild(this.nestedSpan);
9
+ this.container.appendChild(this.link1);
10
+ this.container.appendChild(this.link2);
11
+
12
+ document.body.appendChild(this.container);
13
+ },
14
+
15
+ teardown: function() {
16
+ this.container.parentNode.removeChild(this.container);
17
+ }
18
+ });
19
+
20
+ test("Basic test", function() {
21
+ expect(3);
22
+
23
+ var that = this;
24
+
25
+ wysihtml5.dom.delegate(this.container, "a", "click", function(event) {
26
+ ok(true, "Callback handler executed");
27
+ equal(this, that.link1, "Callback handler executed in correct scope");
28
+ ok(event.stopPropagation && event.preventDefault, "Parameter passed into callback handler is a proper event object");
29
+ });
30
+
31
+ QUnit.triggerEvent(this.link1, "click");
32
+ });
33
+
34
+ test("Click on nested element works as well", function() {
35
+ expect(3);
36
+
37
+ var that = this;
38
+
39
+ wysihtml5.dom.delegate(this.container, "a", "click", function(event) {
40
+ ok(true, "Callback handler executed");
41
+ equal(this, that.link2, "Callback handler executed in correct scope");
42
+ ok(event.stopPropagation && event.preventDefault, "Parameter passed into callback handler is a proper event object");
43
+ });
44
+
45
+ QUnit.triggerEvent(this.nestedSpan, "click");
46
+ });
47
+
48
+ test("Delegation on the body", function() {
49
+ expect(1);
50
+
51
+ var delegater = wysihtml5.dom.delegate(document.body, ".delegation-test", "mousedown", function() {
52
+ ok(true, "Callback handler executed");
53
+ });
54
+
55
+ this.link1.className = "delegation-test another-class";
56
+
57
+ QUnit.triggerEvent(this.link1, "mousedown");
58
+
59
+ delegater.stop();
60
+
61
+ QUnit.triggerEvent(this.link1, "mousedown");
62
+ });
@@ -0,0 +1,55 @@
1
+ module("wysihtml5.dom.getAsDom", {
2
+ teardown: function() {
3
+ var iframe;
4
+ while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
5
+ iframe.parentNode.removeChild(iframe);
6
+ }
7
+ }
8
+ });
9
+
10
+ test("Basic test", function() {
11
+ var result;
12
+
13
+ result = wysihtml5.dom.getAsDom('<span id="get-in-dom-element-test">foo</span>');
14
+ equal(result.nodeName, "DIV");
15
+ equal(result.ownerDocument, document);
16
+ equal(result.firstChild.nodeName, "SPAN");
17
+ equal(result.childNodes.length , 1);
18
+ equal(result.firstChild.innerHTML, "foo");
19
+ ok(!document.getElementById("get-in-dom-element-test"));
20
+
21
+ result = wysihtml5.dom.getAsDom("<i>1</i> <b>2</b>");
22
+ equal(result.childNodes.length, 3);
23
+
24
+ result = wysihtml5.dom.getAsDom(document.createElement("div"));
25
+ equal(result.innerHTML.toLowerCase(), "<div></div>");
26
+ });
27
+
28
+
29
+ test("HTML5 elements", function() {
30
+ var result;
31
+
32
+ result = wysihtml5.dom.getAsDom("<article><span>foo</span></article>");
33
+ equal(result.firstChild.nodeName.toLowerCase(), "article");
34
+ equal(result.firstChild.innerHTML.toLowerCase(), "<span>foo</span>");
35
+
36
+ result = wysihtml5.dom.getAsDom("<output>foo</output>");
37
+ equal(result.innerHTML.toLowerCase(), "<output>foo</output>");
38
+ });
39
+
40
+
41
+ asyncTest("Different document context", function() {
42
+ expect(2);
43
+
44
+ new wysihtml5.dom.Sandbox(function(sandbox) {
45
+ var result;
46
+
47
+ result = wysihtml5.dom.getAsDom("<div>hello</div>", sandbox.getDocument());
48
+ equal(result.firstChild.ownerDocument, sandbox.getDocument());
49
+
50
+ result = wysihtml5.dom.getAsDom("<header>hello</header>", sandbox.getDocument());
51
+ equal(result.innerHTML.toLowerCase(), "<header>hello</header>");
52
+
53
+ start();
54
+ }).insertInto(document.body);
55
+ });
@@ -0,0 +1,161 @@
1
+ module("wysihtml5.dom.getParentElement", {
2
+ setup: function() {
3
+ this.container = document.createElement("div");
4
+ }
5
+ });
6
+
7
+
8
+ test("Basic test - nodeName only", function() {
9
+ this.container.innerHTML = "<ul><li>foo</li></ul>";
10
+
11
+ var listItem = this.container.querySelector("li"),
12
+ textNode = listItem.firstChild,
13
+ list = this.container.querySelector("ul");
14
+ equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "LI" }), listItem);
15
+ equal(wysihtml5.dom.getParentElement(listItem, { nodeName: ["LI", "UL"] }), listItem);
16
+ equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "UL" }), list);
17
+ equal(wysihtml5.dom.getParentElement(textNode, { nodeName: "UL" }), list);
18
+ equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "ul" }), null);
19
+ equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "SPAN" }), null);
20
+ });
21
+
22
+
23
+ test("Check 'levels' param - nodeName only", function() {
24
+ this.container.innerHTML = "<div><div><ul><li></li></ul></div></div>";
25
+
26
+ var listItem = this.container.querySelector("li"),
27
+ nestedDiv = this.container.querySelector("div").querySelector("div");
28
+ equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "DIV" }, 2), null);
29
+ equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "DIV" }, 3), nestedDiv);
30
+
31
+ });
32
+
33
+
34
+ test("Basic test - nodeName + className", function() {
35
+ this.container.innerHTML = '<span class="wysiwyg-color-red wysiwyg-color-green">foo</span>';
36
+
37
+ var spanElement = this.container.firstChild,
38
+ textNode = this.container.firstChild.firstChild,
39
+ result;
40
+
41
+ result = wysihtml5.dom.getParentElement(textNode, {
42
+ nodeName: "SPAN",
43
+ className: "wysiwyg-color-green",
44
+ classRegExp: /wysiwyg-color-[a-z]+/g
45
+ });
46
+ equal(result, spanElement);
47
+
48
+ result = wysihtml5.dom.getParentElement(textNode, {
49
+ nodeName: ["STRONG", "SPAN"],
50
+ className: "wysiwyg-color-green",
51
+ classRegExp: /wysiwyg-color-[a-z]+/g
52
+ });
53
+ equal(result, spanElement);
54
+
55
+ result = wysihtml5.dom.getParentElement(textNode, {
56
+ nodeName: ["STRONG"],
57
+ className: "wysiwyg-color-green",
58
+ classRegExp: /wysiwyg-color-[a-z]+/g
59
+ });
60
+ equal(result, null);
61
+
62
+ result = wysihtml5.dom.getParentElement(textNode, {
63
+ nodeName: "DIV",
64
+ className: "wysiwyg-color-green",
65
+ classRegExp: /wysiwyg-color-[a-z]+/g
66
+ });
67
+ equal(result, null);
68
+
69
+ result = wysihtml5.dom.getParentElement(textNode, {
70
+ nodeName: "SPAN",
71
+ className: "wysiwyg-color-blue",
72
+ classRegExp: /wysiwyg-color-[a-z]+/g
73
+ });
74
+ equal(result, null);
75
+
76
+ result = wysihtml5.dom.getParentElement(textNode, {
77
+ nodeName: "SPAN",
78
+ className: "wysiwyg-color-red",
79
+ classRegExp: /wysiwyg-color-[a-z]+/g
80
+ });
81
+ equal(result, null);
82
+
83
+ result = wysihtml5.dom.getParentElement(spanElement, {
84
+ nodeName: "SPAN",
85
+ className: "wysiwyg-color-green",
86
+ classRegExp: /wysiwyg-color-[a-z]+/g
87
+ });
88
+ equal(result, spanElement);
89
+
90
+ result = wysihtml5.dom.getParentElement(spanElement, {
91
+ nodeName: "span",
92
+ className: "wysiwyg-color-green",
93
+ classRegExp: /wysiwyg-color-[a-z]+/g
94
+ });
95
+ equal(result, null);
96
+ });
97
+
98
+
99
+ test("Check 'levels' param - nodeName + className", function() {
100
+ this.container.innerHTML = '<div class="wysiwyg-color-green"><div class="wysiwyg-color-green"><ul><li></li></ul></blockquote></div></div>';
101
+
102
+ var listItem = this.container.querySelector("li"),
103
+ nestedDiv = this.container.querySelector("div").querySelector("div"),
104
+ result;
105
+
106
+ result = wysihtml5.dom.getParentElement(listItem, {
107
+ nodeName: "DIV",
108
+ className: "wysiwyg-color-green",
109
+ classRegExp: /wysiwyg-color-[a-z]+/g
110
+ }, 2);
111
+ equal(result, null);
112
+
113
+ result = wysihtml5.dom.getParentElement(listItem, {
114
+ nodeName: "DIV",
115
+ className: "wysiwyg-color-green",
116
+ classRegExp: /wysiwyg-color-[a-z]+/g
117
+ }, 3);
118
+ equal(result, nestedDiv);
119
+ });
120
+
121
+
122
+ test("Check - no nodeName", function() {
123
+ this.container.innerHTML = '<div><div class="wysiwyg-text-align-right"><span>foo</span></div></div>';
124
+
125
+ var spanElement = this.container.querySelector("span"),
126
+ alignedDiv = this.container.querySelector("div").querySelector("div"),
127
+ result;
128
+
129
+ result = wysihtml5.dom.getParentElement(spanElement, {
130
+ className: "wysiwyg-text-align-right",
131
+ classRegExp: /wysiwyg-text-align-[a-z]+/g
132
+ });
133
+ equal(result, alignedDiv);
134
+ });
135
+
136
+ test("Test - with no nodeName", function() {
137
+ this.container.innerHTML = '<div><div class="wysiwyg-text-align-right"><span>foo</span></div></div>';
138
+
139
+ var spanElement = this.container.querySelector("span"),
140
+ alignedDiv = this.container.querySelector("div").querySelector("div"),
141
+ result;
142
+
143
+ result = wysihtml5.dom.getParentElement(spanElement, {
144
+ className: "wysiwyg-text-align-right",
145
+ classRegExp: /wysiwyg-text-align-[a-z]+/g
146
+ });
147
+ equal(result, alignedDiv);
148
+ });
149
+
150
+ test("Test - with only a classRegExp", function() {
151
+ this.container.innerHTML = '<div><div class="wysiwyg-text-align-right"><span>foo</span></div></div>';
152
+
153
+ var spanElement = this.container.querySelector("span"),
154
+ alignedDiv = this.container.querySelector("div").querySelector("div"),
155
+ result;
156
+
157
+ result = wysihtml5.dom.getParentElement(spanElement, {
158
+ classRegExp: /wysiwyg-text-align-[a-z]+/g
159
+ });
160
+ equal(result, alignedDiv);
161
+ });
@@ -0,0 +1,54 @@
1
+ module("wysihtml5.dom.getStyle", {
2
+ setup: function() {
3
+ this.container = document.createElement("div");
4
+ document.body.appendChild(this.container);
5
+ },
6
+
7
+ teardown: function() {
8
+ this.container.parentNode.removeChild(this.container);
9
+ }
10
+ });
11
+
12
+
13
+ test("Basic test", function() {
14
+ wysihtml5.dom.insertCSS([
15
+ ".test-element-2 { position: absolute }"
16
+ ]).into(document);
17
+
18
+ this.container.innerHTML = '<span class="test-element-1" style="float:left;">hello</span>';
19
+ this.container.innerHTML += '<span class="test-element-2">hello</span>';
20
+ this.container.innerHTML += '<i></i>';
21
+ this.container.innerHTML += '<div></div>';
22
+
23
+ equal(
24
+ wysihtml5.dom.getStyle("float").from(this.container.getElementsByTagName("span")[0]),
25
+ "left"
26
+ );
27
+
28
+ equal(
29
+ wysihtml5.dom.getStyle("position").from(this.container.getElementsByTagName("span")[1]),
30
+ "absolute"
31
+ );
32
+
33
+ equal(
34
+ wysihtml5.dom.getStyle("display").from(this.container.getElementsByTagName("div")[0]),
35
+ "block"
36
+ );
37
+
38
+ equal(
39
+ wysihtml5.dom.getStyle("display").from(this.container.getElementsByTagName("i")[0]),
40
+ "inline"
41
+ );
42
+ });
43
+
44
+
45
+ test("Textarea width/height when value causes overflow", function() {
46
+ var textarea = document.createElement("textarea");
47
+ textarea.style.width = "500px";
48
+ textarea.style.height = "200px";
49
+ textarea.value = Array(500).join("Lorem ipsum dolor foo bar");
50
+ this.container.appendChild(textarea);
51
+
52
+ equal(wysihtml5.dom.getStyle("width") .from(textarea), "500px");
53
+ equal(wysihtml5.dom.getStyle("height") .from(textarea), "200px");
54
+ });
@@ -0,0 +1,29 @@
1
+ if ("querySelector" in document || wysihtml5.browser.supportsNativeGetElementsByClassName()) {
2
+ module("wysihtml5.dom.hasElementWithClassName", {
3
+ teardown: function() {
4
+ var iframe;
5
+ while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
6
+ iframe.parentNode.removeChild(iframe);
7
+ }
8
+ }
9
+ });
10
+
11
+
12
+ asyncTest("Basic test", function() {
13
+ expect(3);
14
+
15
+ new wysihtml5.dom.Sandbox(function(sandbox) {
16
+ var doc = sandbox.getDocument(),
17
+ tempElement = doc.createElement("i");
18
+ tempElement.className = "wysiwyg-color-aqua";
19
+
20
+ ok(!wysihtml5.dom.hasElementWithClassName(doc, "wysiwyg-color-aqua"));
21
+ doc.body.appendChild(tempElement);
22
+ ok(wysihtml5.dom.hasElementWithClassName(doc, "wysiwyg-color-aqua"));
23
+ tempElement.parentNode.removeChild(tempElement);
24
+ ok(!wysihtml5.dom.hasElementWithClassName(doc, "wysiwyg-color-aqua"));
25
+
26
+ start();
27
+ }).insertInto(document.body);
28
+ });
29
+ }
@@ -0,0 +1,25 @@
1
+ module("wysihtml5.dom.hasElementWithTagName", {
2
+ teardown: function() {
3
+ var iframe;
4
+ while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
5
+ iframe.parentNode.removeChild(iframe);
6
+ }
7
+ }
8
+ });
9
+
10
+
11
+ asyncTest("Basic test", function() {
12
+ expect(3);
13
+
14
+ new wysihtml5.dom.Sandbox(function(sandbox) {
15
+ var doc = sandbox.getDocument(),
16
+ tempElement = doc.createElement("i");
17
+ ok(!wysihtml5.dom.hasElementWithTagName(doc, "I"));
18
+ doc.body.appendChild(tempElement);
19
+ ok(wysihtml5.dom.hasElementWithTagName(doc, "I"));
20
+ tempElement.parentNode.removeChild(tempElement);
21
+ ok(!wysihtml5.dom.hasElementWithTagName(doc, "I"));
22
+
23
+ start();
24
+ }).insertInto(document.body);
25
+ });
@@ -0,0 +1,31 @@
1
+ module("wysihtml5.dom.insertCSS", {
2
+ teardown: function() {
3
+ var iframe;
4
+ while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
5
+ iframe.parentNode.removeChild(iframe);
6
+ }
7
+ }
8
+ });
9
+
10
+ asyncTest("Basic Tests", function() {
11
+ expect(3);
12
+
13
+ new wysihtml5.dom.Sandbox(function(sandbox) {
14
+ var doc = sandbox.getDocument(),
15
+ body = doc.body,
16
+ element = doc.createElement("sub");
17
+
18
+ body.appendChild(element);
19
+
20
+ wysihtml5.dom.insertCSS([
21
+ "sub { display: block; text-align: right; }",
22
+ "body { text-indent: 50px; }"
23
+ ]).into(doc);
24
+
25
+ equal(wysihtml5.dom.getStyle("display") .from(element), "block");
26
+ equal(wysihtml5.dom.getStyle("text-align") .from(element), "right");
27
+ equal(wysihtml5.dom.getStyle("text-indent").from(element), "50px");
28
+
29
+ start();
30
+ }).insertInto(document.body);
31
+ });
@@ -0,0 +1,83 @@
1
+ module("wysihtml5.dom.observe", {
2
+ setup: function() {
3
+ this.container = document.createElement("div");
4
+ this.element = document.createElement("textarea");
5
+ this.container.appendChild(this.element);
6
+ document.body.appendChild(this.container);
7
+ },
8
+
9
+ teardown: function() {
10
+ this.container.parentNode.removeChild(this.container);
11
+
12
+ var iframe;
13
+ while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
14
+ iframe.parentNode.removeChild(iframe);
15
+ }
16
+ }
17
+ });
18
+
19
+
20
+ test("Basic test", function() {
21
+ expect(4);
22
+
23
+ var element = this.element;
24
+
25
+ wysihtml5.dom.observe(element, ["mouseover", "mouseout"], function(event) {
26
+ ok(true, "'" + event.type + "' correctly fired");
27
+ });
28
+
29
+ wysihtml5.dom.observe(element, "click", function(event) {
30
+ equal(event.target, element, "event.target or event.srcElement are set");
31
+ ok(true, "'click' correctly fired");
32
+ });
33
+
34
+ QUnit.triggerEvent(element, "mouseover");
35
+ QUnit.triggerEvent(element, "mouseout");
36
+ QUnit.triggerEvent(element, "click");
37
+ });
38
+
39
+
40
+ test("Test stopPropagation and scope of event handler", function(event) {
41
+ expect(2);
42
+ var element = this.element;
43
+
44
+ wysihtml5.dom.observe(this.container, "click", function(event) {
45
+ ok(false, "The event shouldn't have been bubbled!");
46
+ });
47
+
48
+ wysihtml5.dom.observe(this.element, "click", function(event) {
49
+ event.stopPropagation();
50
+ equal(this, element, "Event handler bound to correct scope");
51
+ ok(true, "stopPropagation correctly fired");
52
+ });
53
+
54
+ QUnit.triggerEvent(this.element, "click");
55
+ });
56
+
57
+ test("Test detaching events", function() {
58
+ expect(0);
59
+ var eventListener = wysihtml5.dom.observe(this.element, "click", function() {
60
+ ok(false, "This should not be triggered");
61
+ });
62
+
63
+ eventListener.stop();
64
+ QUnit.triggerEvent(this.element, "click");
65
+ });
66
+
67
+ asyncTest("Advanced test observing within a sandboxed iframe", function() {
68
+ expect(2);
69
+
70
+ var sandbox = new wysihtml5.dom.Sandbox(function() {
71
+ var element = sandbox.getDocument().createElement("div");
72
+ sandbox.getDocument().body.appendChild(element);
73
+ wysihtml5.dom.observe(element, ["click", "mousedown"], function(event) {
74
+ ok(true, "'" + event.type + "' correctly fired");
75
+ });
76
+ QUnit.triggerEvent(element, "click");
77
+ QUnit.triggerEvent(element, "mousedown");
78
+
79
+ start();
80
+ });
81
+
82
+ sandbox.insertInto(document.body);
83
+ });