wysihtml5_with_ps 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
+ });