module("wysihtml5.dom.getParentElement", { setup: function() { this.container = document.createElement("div"); } }); test("Basic test - nodeName only", function() { this.container.innerHTML = ""; var listItem = this.container.querySelector("li"), textNode = listItem.firstChild, list = this.container.querySelector("ul"); equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "LI" }), listItem); equal(wysihtml5.dom.getParentElement(listItem, { nodeName: ["LI", "UL"] }), listItem); equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "UL" }), list); equal(wysihtml5.dom.getParentElement(textNode, { nodeName: "UL" }), list); equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "ul" }), null); equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "SPAN" }), null); }); test("Check 'levels' param - nodeName only", function() { this.container.innerHTML = "
"; var listItem = this.container.querySelector("li"), nestedDiv = this.container.querySelector("div").querySelector("div"); equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "DIV" }, 2), null); equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "DIV" }, 3), nestedDiv); }); test("Basic test - nodeName + className", function() { this.container.innerHTML = 'foo'; var spanElement = this.container.firstChild, textNode = this.container.firstChild.firstChild, result; result = wysihtml5.dom.getParentElement(textNode, { nodeName: "SPAN", className: "wysiwyg-color-green", classRegExp: /wysiwyg-color-[a-z]+/g }); equal(result, spanElement); result = wysihtml5.dom.getParentElement(textNode, { nodeName: ["STRONG", "SPAN"], className: "wysiwyg-color-green", classRegExp: /wysiwyg-color-[a-z]+/g }); equal(result, spanElement); result = wysihtml5.dom.getParentElement(textNode, { nodeName: ["STRONG"], className: "wysiwyg-color-green", classRegExp: /wysiwyg-color-[a-z]+/g }); equal(result, null); result = wysihtml5.dom.getParentElement(textNode, { nodeName: "DIV", className: "wysiwyg-color-green", classRegExp: /wysiwyg-color-[a-z]+/g }); equal(result, null); result = wysihtml5.dom.getParentElement(textNode, { nodeName: "SPAN", className: "wysiwyg-color-blue", classRegExp: /wysiwyg-color-[a-z]+/g }); equal(result, null); result = wysihtml5.dom.getParentElement(textNode, { nodeName: "SPAN", className: "wysiwyg-color-red", classRegExp: /wysiwyg-color-[a-z]+/g }); equal(result, null); result = wysihtml5.dom.getParentElement(spanElement, { nodeName: "SPAN", className: "wysiwyg-color-green", classRegExp: /wysiwyg-color-[a-z]+/g }); equal(result, spanElement); result = wysihtml5.dom.getParentElement(spanElement, { nodeName: "span", className: "wysiwyg-color-green", classRegExp: /wysiwyg-color-[a-z]+/g }); equal(result, null); }); test("Check 'levels' param - nodeName + className", function() { this.container.innerHTML = '
'; var listItem = this.container.querySelector("li"), nestedDiv = this.container.querySelector("div").querySelector("div"), result; result = wysihtml5.dom.getParentElement(listItem, { nodeName: "DIV", className: "wysiwyg-color-green", classRegExp: /wysiwyg-color-[a-z]+/g }, 2); equal(result, null); result = wysihtml5.dom.getParentElement(listItem, { nodeName: "DIV", className: "wysiwyg-color-green", classRegExp: /wysiwyg-color-[a-z]+/g }, 3); equal(result, nestedDiv); }); test("Check - no nodeName", function() { this.container.innerHTML = '
foo
'; var spanElement = this.container.querySelector("span"), alignedDiv = this.container.querySelector("div").querySelector("div"), result; result = wysihtml5.dom.getParentElement(spanElement, { className: "wysiwyg-text-align-right", classRegExp: /wysiwyg-text-align-[a-z]+/g }); equal(result, alignedDiv); }); test("Test - with no nodeName", function() { this.container.innerHTML = '
foo
'; var spanElement = this.container.querySelector("span"), alignedDiv = this.container.querySelector("div").querySelector("div"), result; result = wysihtml5.dom.getParentElement(spanElement, { className: "wysiwyg-text-align-right", classRegExp: /wysiwyg-text-align-[a-z]+/g }); equal(result, alignedDiv); }); test("Test - with only a classRegExp", function() { this.container.innerHTML = '
foo
'; var spanElement = this.container.querySelector("span"), alignedDiv = this.container.querySelector("div").querySelector("div"), result; result = wysihtml5.dom.getParentElement(spanElement, { classRegExp: /wysiwyg-text-align-[a-z]+/g }); equal(result, alignedDiv); }); test("Test with parent container limit", function() { this.container.innerHTML = '

foo

'; var spanElement = this.container.querySelector("span"), limitEl = this.container.querySelector("p"), nestedDiv = this.container.querySelector("div").querySelector("div"), result; result = wysihtml5.dom.getParentElement(spanElement, { nodeName: "DIV" }, false, limitEl); equal(result, null); });