1 if (wysihtml5.browser.supportsCommand(document, "insertHTML")) {
3 module("wysihtml5.UndoManager", {
5 this.textareaElement = document.createElement("textarea");
6 this.textareaElement.value = "1";
8 document.body.appendChild(this.textareaElement);
11 teardown: function() {
13 while (leftover = document.querySelector("iframe.wysihtml5-sandbox, input[name='_wysihtml5_mode']")) {
14 leftover.parentNode.removeChild(leftover);
16 document.body.removeChild(this.textareaElement);
19 triggerUndo: function(editor) {
20 this.triggerKey(editor, 90);
23 triggerRedo: function(editor) {
24 this.triggerKey(editor, 89);
27 triggerKey: function(editor, keyCode) {
30 event = editor.composer.sandbox.getDocument().createEvent("KeyEvents");
31 event.initKeyEvent("keydown", true, true, editor.composer.sandbox.getWindow(), true, false, false, false, keyCode, keyCode);
33 event = editor.composer.sandbox.getDocument().createEvent("Events");
34 event.initEvent("keydown", true, true);
36 event.keyCode = keyCode;
38 editor.composer.element.dispatchEvent(event);
43 asyncTest("Basic test", function() {
47 editor = new wysihtml5.Editor(this.textareaElement);
48 editor.on("load", function() {
49 editor.setValue("1 2").fire("newword:composer");
50 editor.setValue("1 2 3").fire("newword:composer");
51 editor.setValue("1 2 3 4").fire("newword:composer");
52 editor.setValue("1 2 3 4 5");
54 that.triggerUndo(editor);
55 equal(editor.getValue(false, false), "1 2 3 4");
56 that.triggerRedo(editor);
57 that.triggerRedo(editor);
58 equal(editor.getValue(false, false), "1 2 3 4 5");
59 that.triggerUndo(editor);
60 that.triggerUndo(editor);
61 equal(editor.getValue(false, false), "1 2 3");
62 that.triggerUndo(editor);
63 that.triggerUndo(editor);
64 equal(editor.getValue(false, false), "1");
65 that.triggerUndo(editor);
66 that.triggerUndo(editor);
67 equal(editor.getValue(false, false), "1");
74 asyncTest("Test commands", function() {
78 editor = new wysihtml5.Editor(this.textareaElement);
79 editor.on("load", function() {
80 editor.setValue("<b>1</b>").fire("beforecommand:composer");
81 editor.setValue("<i><b>1</b></i>").fire("beforecommand:composer");
83 that.triggerUndo(editor);
84 equal(editor.getValue(false, false), "<b>1</b>");
85 that.triggerRedo(editor);
86 equal(editor.getValue(false, false), "<i><b>1</b></i>");
87 that.triggerUndo(editor);
88 that.triggerUndo(editor);
89 equal(editor.getValue(false, false), "1");