* Fix bug when checking if elements were parsed already
parse-element.js checks if the element was already parsed by
checking for the `data-pjax-click-state` attribute. However, this
attribute was not added until the link is clicked.
Originally, there was a separate attribute, `data-pjax-enabled`,
which tracked if the element was parsed already, but that was
changed in 9a86044.
This commit merges the attributes for mouse clicks and key presses
into one and adds that attribute when the element is initially
parsed.
* More bug fixes
* Fix documentation for currentUrlFullReload
* Ignore lines from coverage if they can't be tested
* Refactor attach-link and attach-form
* Fix and refactors tests
* Add tests
* Add TS definitions for options.requestOptions
* Code cleanup
75 lines
2.3 KiB
JavaScript
75 lines
2.3 KiB
JavaScript
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 = "<p>Original Text</p><span>No Change</span>"
|
|
document.body.appendChild(container)
|
|
|
|
var container2 = tmpEl.createElement("div")
|
|
container2.innerHTML = "<p>New Text</p><span>New Span</span>"
|
|
tmpEl.body.appendChild(container2)
|
|
|
|
switchesSelectors.bind(pjax)(
|
|
{}, // switches
|
|
{}, // switchesOptions
|
|
["p"], // selectors,
|
|
tmpEl, // fromEl
|
|
document, // toEl,
|
|
{} // options
|
|
)
|
|
|
|
t.equals(container.innerHTML, "<p>New Text</p><span>No Change</span>", "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 = "<p>Original text</p><span>No change</span>"
|
|
originalTempDoc.body.appendChild(container)
|
|
|
|
var container2 = newTempDoc.createElement("div")
|
|
container2.innerHTML = "<p>New text</p><p>More new text</p><span>New span</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()
|
|
})
|