Non-mutating m.fragment/m.trust references

This commit is contained in:
Barney Carroll 2021-04-15 08:46:26 +01:00 committed by Stephan Hoyer
parent a3983c9655
commit d021271be8
13 changed files with 130 additions and 130 deletions

View file

@ -5,8 +5,8 @@ var components = require("../../test-utils/components")
var domMock = require("../../test-utils/domMock")
var vdom = require("../../render/render")
var m = require("../../render/hyperscript")
m.fragment = require("../../render/fragment")
m.trust = require("../../render/trust")
var fragment = require("../../render/fragment")
var trust = require("../../render/trust")
function vnodify(str) {
return str.split(",").map(function(k) {return m(k, {key: k})})
@ -77,8 +77,8 @@ o.spec("updateNodes", function() {
o(root.childNodes[0].nodeValue).equals("0")
})
o("handles html noop", function() {
var vnodes = m.trust("a")
var updated = m.trust("a")
var vnodes = trust("a")
var updated = trust("a")
render(root, vnodes)
render(root, updated)
@ -88,8 +88,8 @@ o.spec("updateNodes", function() {
o(updated.dom).equals(root.childNodes[0])
})
o("handles fragment noop", function() {
var vnodes = m.fragment(m("a"))
var updated = m.fragment(m("a"))
var vnodes = fragment(m("a"))
var updated = fragment(m("a"))
render(root, vnodes)
render(root, updated)
@ -99,8 +99,8 @@ o.spec("updateNodes", function() {
o(updated.dom).equals(root.childNodes[0])
})
o("handles fragment noop w/ text child", function() {
var vnodes = m.fragment("a")
var updated = m.fragment("a")
var vnodes = fragment("a")
var updated = fragment("a")
render(root, vnodes)
render(root, updated)
@ -284,8 +284,8 @@ o.spec("updateNodes", function() {
o(updated[2].dom).equals(root.childNodes[2])
})
o("adds to empty fragment followed by el", function() {
var vnodes = [m.fragment({key: 1}), m("b", {key: 2})]
var updated = [m.fragment({key: 1}, m("a")), m("b", {key: 2})]
var vnodes = [fragment({key: 1}), m("b", {key: 2})]
var updated = [fragment({key: 1}, m("a")), m("b", {key: 2})]
render(root, vnodes)
render(root, updated)
@ -297,8 +297,8 @@ o.spec("updateNodes", function() {
o(updated[1].dom).equals(root.childNodes[1])
})
o("reverses followed by el", function() {
var vnodes = [m.fragment({key: 1}, m("a", {key: 2}), m("b", {key: 3})), m("i", {key: 4})]
var updated = [m.fragment({key: 1}, m("b", {key: 3}), m("a", {key: 2})), m("i", {key: 4})]
var vnodes = [fragment({key: 1}, m("a", {key: 2}), m("b", {key: 3})), m("i", {key: 4})]
var updated = [fragment({key: 1}, m("b", {key: 3}), m("a", {key: 2})), m("i", {key: 4})]
render(root, vnodes)
render(root, updated)
@ -312,8 +312,8 @@ o.spec("updateNodes", function() {
o(updated[1].dom).equals(root.childNodes[2])
})
o("updates empty fragment to html without key", function() {
var vnodes = m.fragment()
var updated = m.trust("<a></a><b></b>")
var vnodes = fragment()
var updated = trust("<a></a><b></b>")
render(root, vnodes)
render(root, updated)
@ -326,8 +326,8 @@ o.spec("updateNodes", function() {
o(updated.dom.nextSibling).equals(root.childNodes[1])
})
o("updates empty html to fragment without key", function() {
var vnodes = m.trust()
var updated = m.fragment(m("a"), m("b"))
var vnodes = trust()
var updated = fragment(m("a"), m("b"))
render(root, vnodes)
render(root, updated)
@ -340,8 +340,8 @@ o.spec("updateNodes", function() {
o(updated.dom.nextSibling).equals(root.childNodes[1])
})
o("updates fragment to html without key", function() {
var vnodes = m.fragment(m("a"), m("b"))
var updated = m.trust("<i></i><s></s>")
var vnodes = fragment(m("a"), m("b"))
var updated = trust("<i></i><s></s>")
render(root, vnodes)
render(root, updated)
@ -354,8 +354,8 @@ o.spec("updateNodes", function() {
o(updated.dom.nextSibling).equals(root.childNodes[1])
})
o("updates html to fragment without key", function() {
var vnodes = m.trust("<a></a><b></b>")
var updated = m.fragment(m("i"), m("s"))
var vnodes = trust("<a></a><b></b>")
var updated = fragment(m("i"), m("s"))
render(root, vnodes)
render(root, updated)
@ -368,8 +368,8 @@ o.spec("updateNodes", function() {
o(updated.dom.nextSibling).equals(root.childNodes[1])
})
o("populates fragment followed by el keyed", function() {
var vnodes = [m.fragment({key: 1}), m("i", {key: 2})]
var updated = [m.fragment({key: 1}, m("a"), m("b")), m("i", {key: 2})]
var vnodes = [fragment({key: 1}), m("i", {key: 2})]
var updated = [fragment({key: 1}, m("a"), m("b")), m("i", {key: 2})]
render(root, vnodes)
render(root, updated)
@ -384,20 +384,20 @@ o.spec("updateNodes", function() {
o(updated[1].dom).equals(root.childNodes[2])
})
o("throws if fragment followed by null then el on first render keyed", function() {
var vnodes = [m.fragment({key: 1}), null, m("i", {key: 2})]
var vnodes = [fragment({key: 1}), null, m("i", {key: 2})]
o(function () { render(root, vnodes) }).throws(TypeError)
})
o("throws if fragment followed by null then el on next render keyed", function() {
var vnodes = [m.fragment({key: 1}), m("i", {key: 2})]
var updated = [m.fragment({key: 1}, m("a"), m("b")), null, m("i", {key: 2})]
var vnodes = [fragment({key: 1}), m("i", {key: 2})]
var updated = [fragment({key: 1}, m("a"), m("b")), null, m("i", {key: 2})]
render(root, vnodes)
o(function () { render(root, updated) }).throws(TypeError)
})
o("populates childless fragment replaced followed by el keyed", function() {
var vnodes = [m.fragment({key: 1}), m("i", {key: 2})]
var updated = [m.fragment({key: 1}, m("a"), m("b")), m("i", {key: 2})]
var vnodes = [fragment({key: 1}), m("i", {key: 2})]
var updated = [fragment({key: 1}, m("a"), m("b")), m("i", {key: 2})]
render(root, vnodes)
render(root, updated)
@ -412,8 +412,8 @@ o.spec("updateNodes", function() {
o(updated[1].dom).equals(root.childNodes[2])
})
o("throws if childless fragment replaced followed by null then el keyed", function() {
var vnodes = [m.fragment({key: 1}), m("i", {key: 2})]
var updated = [m.fragment({key: 1}, m("a"), m("b")), null, m("i", {key: 2})]
var vnodes = [fragment({key: 1}), m("i", {key: 2})]
var updated = [fragment({key: 1}, m("a"), m("b")), null, m("i", {key: 2})]
render(root, vnodes)
o(function () { render(root, updated) }).throws(TypeError)
@ -697,7 +697,7 @@ o.spec("updateNodes", function() {
m("#", "a")
)
var updated = m("div",
m.fragment(m("#", "b")),
fragment(m("#", "b")),
undefined,
undefined
)
@ -796,9 +796,9 @@ o.spec("updateNodes", function() {
o(root.childNodes[1].nodeName).equals("B")
})
o("mixed unkeyed vnode types are not broken by recycle", function() {
var vnodes = [m.fragment(m("a")), m("b")]
var vnodes = [fragment(m("a")), m("b")]
var temp = [m("b")]
var updated = [m.fragment(m("a")), m("b")]
var updated = [fragment(m("a")), m("b")]
render(root, vnodes)
render(root, temp)
@ -946,38 +946,38 @@ o.spec("updateNodes", function() {
})
o("don't add back elements from fragments that are restored from the pool #1991", function() {
render(root, [
m.fragment(),
m.fragment()
fragment(),
fragment()
])
render(root, [
m.fragment(),
m.fragment(
fragment(),
fragment(
m("div")
)
])
render(root, [
m.fragment(null)
fragment(null)
])
render(root, [
m.fragment(),
m.fragment()
fragment(),
fragment()
])
o(root.childNodes.length).equals(0)
})
o("don't add back elements from fragments that are being removed #1991", function() {
render(root, [
m.fragment(),
fragment(),
m("p"),
])
render(root, [
m.fragment(
fragment(
m("div", 5)
)
])
render(root, [
m.fragment(),
m.fragment()
fragment(),
fragment()
])
o(root.childNodes.length).equals(0)
@ -1021,9 +1021,9 @@ o.spec("updateNodes", function() {
}
})
o("don't fetch the nextSibling from the pool", function() {
render(root, [m.fragment(m("div", {key: 1}), m("div", {key: 2})), m("p")])
render(root, [m.fragment(), m("p")])
render(root, [m.fragment(m("div", {key: 2}), m("div", {key: 1})), m("p")])
render(root, [fragment(m("div", {key: 1}), m("div", {key: 2})), m("p")])
render(root, [fragment(), m("p")])
render(root, [fragment(m("div", {key: 2}), m("div", {key: 1})), m("p")])
o([].map.call(root.childNodes, function(el) {return el.nodeName})).deepEquals(["DIV", "DIV", "P"])
})
@ -1172,9 +1172,9 @@ o.spec("updateNodes", function() {
o("fragment child toggles from null when followed by null component then tag", function() {
var component = createComponent({view: function() {return null}})
var vnodes = [m.fragment(m("a"), m(component), m("b"))]
var temp = [m.fragment(null, m(component), m("b"))]
var updated = [m.fragment(m("a"), m(component), m("b"))]
var vnodes = [fragment(m("a"), m(component), m("b"))]
var temp = [fragment(null, m(component), m("b"))]
var updated = [fragment(m("a"), m(component), m("b"))]
render(root, vnodes)
render(root, temp)
@ -1188,9 +1188,9 @@ o.spec("updateNodes", function() {
var flag = true
var a = createComponent({view: function() {return flag ? m("a") : null}})
var b = createComponent({view: function() {return null}})
var vnodes = [m.fragment(m(a), m(b), m("s"))]
var temp = [m.fragment(m(a), m(b), m("s"))]
var updated = [m.fragment(m(a), m(b), m("s"))]
var vnodes = [fragment(m(a), m(b), m("s"))]
var temp = [fragment(m(a), m(b), m("s"))]
var updated = [fragment(m(a), m(b), m("s"))]
render(root, vnodes)
flag = false
@ -1204,7 +1204,7 @@ o.spec("updateNodes", function() {
})
o("removing a component that returns a fragment doesn't throw (regression test for incidental bug introduced while debugging some Flems)", function() {
var component = createComponent({
view: function() {return m.fragment(m("a"), m("b"))}
view: function() {return fragment(m("a"), m("b"))}
})
try {
render(root, [m(component)])