84 lines
2.3 KiB
JavaScript
84 lines
2.3 KiB
JavaScript
module("wysihtml5.dom.observe", {
|
|
setup: function() {
|
|
this.container = document.createElement("div");
|
|
this.element = document.createElement("textarea");
|
|
this.container.appendChild(this.element);
|
|
document.body.appendChild(this.container);
|
|
},
|
|
|
|
teardown: function() {
|
|
this.container.parentNode.removeChild(this.container);
|
|
|
|
var iframe;
|
|
while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
|
|
iframe.parentNode.removeChild(iframe);
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
test("Basic test", function() {
|
|
expect(4);
|
|
|
|
var element = this.element;
|
|
|
|
wysihtml5.dom.observe(element, ["mouseover", "mouseout"], function(event) {
|
|
ok(true, "'" + event.type + "' correctly fired");
|
|
});
|
|
|
|
wysihtml5.dom.observe(element, "click", function(event) {
|
|
equal(event.target, element, "event.target or event.srcElement are set");
|
|
ok(true, "'click' correctly fired");
|
|
});
|
|
|
|
happen.once(element, {type: "mouseover"});
|
|
happen.once(element, {type: "mouseout"});
|
|
happen.once(element, {type: "click"});
|
|
});
|
|
|
|
|
|
test("Test stopPropagation and scope of event handler", function(event) {
|
|
expect(2);
|
|
var element = this.element;
|
|
|
|
wysihtml5.dom.observe(this.container, "click", function(event) {
|
|
ok(false, "The event shouldn't have been bubbled!");
|
|
});
|
|
|
|
wysihtml5.dom.observe(this.element, "click", function(event) {
|
|
event.stopPropagation();
|
|
equal(this, element, "Event handler bound to correct scope");
|
|
ok(true, "stopPropagation correctly fired");
|
|
});
|
|
|
|
happen.once(this.element, {type: "click"});
|
|
});
|
|
|
|
test("Test detaching events", function() {
|
|
expect(0);
|
|
var eventListener = wysihtml5.dom.observe(this.element, "click", function() {
|
|
ok(false, "This should not be triggered");
|
|
});
|
|
|
|
eventListener.stop();
|
|
happen.once(this.element, {type: "click"});
|
|
});
|
|
|
|
asyncTest("Advanced test observing within a sandboxed iframe", function() {
|
|
expect(2);
|
|
|
|
var sandbox = new wysihtml5.dom.Sandbox(function() {
|
|
var element = sandbox.getDocument().createElement("div");
|
|
sandbox.getDocument().body.appendChild(element);
|
|
wysihtml5.dom.observe(element, ["click", "mousedown"], function(event) {
|
|
ok(true, "'" + event.type + "' correctly fired");
|
|
});
|
|
happen.click(element);
|
|
happen.mousedown(element);
|
|
|
|
start();
|
|
});
|
|
|
|
sandbox.insertInto(document.body);
|
|
});
|