[render/render] Test for removing styles and assorted domMock changes

This commit is contained in:
Pierre-Yves Gérardy 2018-05-31 23:49:05 +02:00 committed by Pierre-Yves Gérardy
parent 1fdc9278c7
commit 6283aa4a7d
3 changed files with 70 additions and 1 deletions

View file

@ -205,6 +205,72 @@ o.spec("updateElement", function() {
o(updated.dom.style.color).equals("red") o(updated.dom.style.color).equals("red")
}) })
o("setting style to `null` removes all styles", function() {
var vnode = {"tag": "p", attrs: {style: "background-color: red"}}
var updated = {"tag": "p", attrs: {style: null}}
render(root, [vnode])
o("style" in vnode.dom.attributes).equals(true)
o(vnode.dom.attributes.style.value).equals("background-color: red;")
render(root, [updated])
//browsers disagree here
try {
o(updated.dom.attributes.style.value).equals("")
} catch (e) {
o("style" in updated.dom.attributes).equals(false)
}
})
o("setting style to `undefined` removes all styles", function() {
var vnode = {"tag": "p", attrs: {style: "background-color: red"}}
var updated = {"tag": "p", attrs: {style: undefined}}
render(root, [vnode])
o("style" in vnode.dom.attributes).equals(true)
o(vnode.dom.attributes.style.value).equals("background-color: red;")
render(root, [updated])
//browsers disagree here
try {
o(updated.dom.attributes.style.value).equals("")
} catch (e) {
o("style" in updated.dom.attributes).equals(false)
}
})
o("not setting style removes all styles", function() {
var vnode = {"tag": "p", attrs: {style: "background-color: red"}}
var updated = {"tag": "p", attrs: {}}
render(root, [vnode])
o("style" in vnode.dom.attributes).equals(true)
o(vnode.dom.attributes.style.value).equals("background-color: red;")
render(root, [updated])
//browsers disagree here
try {
o(updated.dom.attributes.style.value).equals("")
} catch (e) {
o("style" in updated.dom.attributes).equals(false)
}
})
o("replaces el", function() { o("replaces el", function() {
var vnode = {tag: "a"} var vnode = {tag: "a"}
var updated = {tag: "b"} var updated = {tag: "b"}

View file

@ -247,7 +247,7 @@ module.exports = function(options) {
} }
} }
} }
cssText = buf.join(" ") element.setAttribute("style", cssText = buf.join(" "))
} }
} }
}) })

View file

@ -618,6 +618,7 @@ o.spec("domMock", function() {
o(div.style.backgroundColor).equals("red") o(div.style.backgroundColor).equals("red")
o(div.style.borderBottom).equals("1px solid red") o(div.style.borderBottom).equals("1px solid red")
o(div.attributes.style.value).equals("background-color: red; border-bottom: 1px solid red;")
}) })
o("removing via setting style.cssText string works", function() { o("removing via setting style.cssText string works", function() {
var div = $document.createElement("div") var div = $document.createElement("div")
@ -625,6 +626,7 @@ o.spec("domMock", function() {
div.style.cssText = "" div.style.cssText = ""
o(div.style.background).equals("") o(div.style.background).equals("")
o(div.attributes.style.value).equals("")
}) })
o("the final semicolon is optional when setting style.cssText", function() { o("the final semicolon is optional when setting style.cssText", function() {
var div = $document.createElement("div") var div = $document.createElement("div")
@ -632,6 +634,7 @@ o.spec("domMock", function() {
o(div.style.background).equals("red") o(div.style.background).equals("red")
o(div.style.cssText).equals("background: red;") o(div.style.cssText).equals("background: red;")
o(div.attributes.style.value).equals("background: red;")
}) })
o("'cssText' as a property name is ignored when setting style.cssText", function(){ o("'cssText' as a property name is ignored when setting style.cssText", function(){
var div = $document.createElement("div") var div = $document.createElement("div")