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 = '';
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 = '';
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 = '';
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 = '';
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);
});