var tape = require("tape"); var switchesSelectors = require("../../lib/switches-selectors.js"); var noop = require("../../lib/util/noop"); var pjax = { onSwitch: function() { console.log("Switched"); }, state: {}, log: noop }; // @author darylteo tape("test switchesSelectors", function(t) { // switchesSelectors relies on a higher level function callback // should really be passed in instead so I'll leave it here as a TODO: var tmpEl = document.implementation.createHTMLDocument(); // a div container is used because swapping the containers // will generate a new element, so things get weird // using "body" generates a lot of testling cruft that I don't // want so let's avoid that var container = document.createElement("div"); container.innerHTML = "

Original Text

No Change"; document.body.appendChild(container); var container2 = tmpEl.createElement("div"); container2.innerHTML = "

New Text

New Span"; tmpEl.body.appendChild(container2); switchesSelectors.bind(pjax)( {}, // switches {}, // switchesOptions ["p"], // selectors, tmpEl, // fromEl document, // toEl, {} // options ); t.equals( container.innerHTML, "

New Text

No Change", "Elements correctly switched" ); t.end(); }); tape("test switchesSelectors when number of elements don't match", function(t) { var newTempDoc = document.implementation.createHTMLDocument(); var originalTempDoc = document.implementation.createHTMLDocument(); // a div container is used because swapping the containers // will generate a new element, so things get weird // using "body" generates a lot of testling cruft that I don't // want so let's avoid that var container = originalTempDoc.createElement("div"); container.innerHTML = "

Original text

No change"; originalTempDoc.body.appendChild(container); var container2 = newTempDoc.createElement("div"); container2.innerHTML = "

New text

More new text

New span"; newTempDoc.body.appendChild(container2); var switchSelectorsFn = switchesSelectors.bind( pjax, {}, // switches {}, // switchesOptions ["p"], // selectors, newTempDoc, // fromEl originalTempDoc, // toEl, {} // options ); t.throws( switchSelectorsFn, null, "error was thrown properly since number of elements don't match" ); t.end(); });