diff --git a/render/hyperscript.js b/render/hyperscript.js
index ece288fc..3d4b21e4 100644
--- a/render/hyperscript.js
+++ b/render/hyperscript.js
@@ -34,8 +34,8 @@ function execSelector(state, attrs, children) {
}
}
- if (className != null) {
- if (attrs.class != null) {
+ if (className !== undefined) {
+ if (attrs.class !== undefined) {
attrs.class = undefined
attrs.className = className
}
diff --git a/render/tests/index.html b/render/tests/index.html
index b978ae6f..eda51921 100644
--- a/render/tests/index.html
+++ b/render/tests/index.html
@@ -8,7 +8,7 @@
-
+
diff --git a/render/tests/test-hyperscript.js b/render/tests/test-hyperscript.js
index cf0b3155..3ef03358 100644
--- a/render/tests/test-hyperscript.js
+++ b/render/tests/test-hyperscript.js
@@ -16,6 +16,108 @@ o.spec("hyperscript", function() {
o(vnode.tag).equals("a")
})
+ o("v1.0.1 bug-for-bug regression suite", function(){
+ o
+ console.log(m('a', {
+ class: null
+ }).attrs, {
+ class: undefined,
+ className: null
+ })
+ o(m('a', {
+ class: null
+ }).attrs).deepEquals({
+ class: undefined,
+ className: null
+ })
+ o(m('a', {
+ class: undefined
+ }).attrs).deepEquals({
+ class: undefined,
+ })
+ o(m('a', {
+ class: false
+ }).attrs).deepEquals({
+ class: undefined,
+ className: false
+ })
+ o(m('a', {
+ class: true
+ }).attrs).deepEquals({
+ class: undefined,
+ className: true
+ })
+ console.log(m('a.x', {
+ class: null
+ }).attrs, {
+ class: undefined,
+ className: "x null"
+ })
+ o(m('a.x', {
+ class: null
+ }).attrs).deepEquals({
+ class: undefined,
+ className: "x null"
+ })
+ o(m('a.x', {
+ class: undefined
+ }).attrs).deepEquals({
+ class: undefined,
+ className: "x"
+ })
+ o(m('a.x', {
+ class: false
+ }).attrs).deepEquals({
+ class: undefined,
+ className: "x false"
+ })
+ o(m('a.x', {
+ class: true
+ }).attrs).deepEquals({
+ class: undefined,
+ className: "x true"
+ })
+ o(m('a', {
+ className: null
+ }).attrs).deepEquals({
+ className: null
+ })
+ o(m('a', {
+ className: undefined
+ }).attrs).deepEquals({
+ className: undefined
+ })
+ o(m('a', {
+ className: false
+ }).attrs).deepEquals({
+ className: false
+ })
+ o(m('a', {
+ className: true
+ }).attrs).deepEquals({
+ className: true
+ })
+ o(m('a.x', {
+ className: null
+ }).attrs).deepEquals({
+ className: "x"
+ })
+ o(m('a.x', {
+ className: undefined
+ }).attrs).deepEquals({
+ className: "x"
+ })
+ o(m('a.x', {
+ className: false
+ }).attrs).deepEquals({
+ className: "x"
+ })
+ o(m('a.x', {
+ className: true
+ }).attrs).deepEquals({
+ className: "x true"
+ })
+ })
o("handles class in selector", function() {
var vnode = m(".a")
diff --git a/render/tests/test-onbeforeremove.js b/render/tests/test-onbeforeremove.js
index 2e23215b..0e83d4a0 100644
--- a/render/tests/test-onbeforeremove.js
+++ b/render/tests/test-onbeforeremove.js
@@ -199,9 +199,8 @@ o.spec("onbeforeremove", function() {
render(root, [{tag: component}])
render(root, [])
+ o(onremove.callCount).equals(0)
callAsync(function(){
- o(onremove.callCount).equals(0)
-
callAsync(function() {
o(onremove.callCount).equals(1)
done()