From b3f7fcefeec0bc7ef2dc70a38f0afee67091314e Mon Sep 17 00:00:00 2001 From: Behind The Math Date: Tue, 20 Mar 2018 21:32:01 -0400 Subject: [PATCH] Bug fixes and tests for switches --- lib/switches.js | 9 +++++++- tests/lib/switches.js | 54 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/lib/switches.js b/lib/switches.js index cdacc0e..0502fc2 100644 --- a/lib/switches.js +++ b/lib/switches.js @@ -8,7 +8,14 @@ module.exports = { innerHTML: function(oldEl, newEl) { oldEl.innerHTML = newEl.innerHTML - oldEl.className = newEl.className + + if (newEl.className === "") { + oldEl.removeAttribute("class") + } + else { + oldEl.className = newEl.className + } + this.onSwitch() }, diff --git a/tests/lib/switches.js b/tests/lib/switches.js index 1752cb8..ecf5ed8 100644 --- a/tests/lib/switches.js +++ b/tests/lib/switches.js @@ -2,6 +2,60 @@ var tape = require("tape") var switches = require("../../lib/switches") var noop = require("../../lib/util/noop") +tape("test outerHTML switch", function(t) { + var outerHTML = switches.outerHTML + + var doc = document.implementation.createHTMLDocument() + + var container = doc.createElement("div") + container.innerHTML = "

Original Text

" + doc.body.appendChild(container) + + var p = doc.createElement("p") + p.innerHTML = "New Text" + + outerHTML.bind({ + onSwitch: noop + })(doc.querySelector("p"), p) + + t.equals(doc.querySelector("p").innerHTML, "New Text", "Elements correctly switched") + t.notEquals(doc.querySelector("p").id, "p", "other attributes overwritten correctly") + + t.end() +}) + +tape("test innerHTML switch", function(t) { + var innerHTML = switches.innerHTML + + var doc = document.implementation.createHTMLDocument() + + var container = doc.createElement("div") + container.innerHTML = "

Original Text

" + doc.body.appendChild(container) + + var p = doc.createElement("p") + p.innerHTML = "New Text" + p.className = "p" + + innerHTML.bind({ + onSwitch: noop + })(doc.querySelector("p"), p) + + t.equals(doc.querySelector("p").innerHTML, "New Text", "Elements correctly switched") + t.equals(doc.querySelector("p").className, "p", "classname set correctly") + t.equals(doc.querySelector("p").id, "p", "other attributes set correctly") + + p.removeAttribute("class") + + innerHTML.bind({ + onSwitch: noop + })(doc.querySelector("p"), p) + + t.equals(doc.querySelector("p").className, "", "classname set correctly") + + t.end() +}) + tape("test replaceNode switch", function(t) { var replaceNode = switches.replaceNode