From d7f39a8254fe269042f5bdf84d1286203c044d84 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Gerardy Date: Sun, 19 Feb 2017 00:01:05 +0100 Subject: [PATCH] Tests: group together tests with/without components --- api/tests/test-mount.js | 8 +- render/tests/test-onbeforeupdate.js | 127 ++++++++++++++-------------- render/tests/test-onremove.js | 65 +++++++------- render/tests/test-updateNodes.js | 67 +++++++-------- tests/test-api.js | 20 ++--- 5 files changed, 145 insertions(+), 142 deletions(-) diff --git a/api/tests/test-mount.js b/api/tests/test-mount.js index 038f470a..dcee259a 100644 --- a/api/tests/test-mount.js +++ b/api/tests/test-mount.js @@ -22,20 +22,20 @@ o.spec("mount", function() { render = coreRenderer($window).render }) - o("throws on invalid `root` DOM node", function() { + o("throws on invalid component", function() { var threw = false try { - mount(null, {view: function() {}}) + mount(root, {}) } catch (e) { threw = true } o(threw).equals(true) }) - o("throws on invalid component", function() { + o("throws on invalid `root` DOM node", function() { var threw = false try { - mount(root, {}) + mount(null, {view: function() {}}) } catch (e) { threw = true } diff --git a/render/tests/test-onbeforeupdate.js b/render/tests/test-onbeforeupdate.js index 8b326b8c..2844e8ee 100644 --- a/render/tests/test-onbeforeupdate.js +++ b/render/tests/test-onbeforeupdate.js @@ -1,6 +1,7 @@ "use strict" var o = require("../../ospec/ospec") +var components = require("../../test-utils/components") var domMock = require("../../test-utils/domMock") var vdom = require("../../render/render") @@ -56,6 +57,69 @@ o.spec("onbeforeupdate", function() { o(root.firstChild.nodeValue).equals("a") }) + o("does not prevent update if returning true", function() { + var onbeforeupdate = function() {return true} + var vnode = {tag: "div", attrs: {id: "a", onbeforeupdate: onbeforeupdate}} + var updated = {tag: "div", attrs: {id: "b", onbeforeupdate: onbeforeupdate}} + + render(root, [vnode]) + render(root, [updated]) + + o(root.firstChild.attributes["id"].nodeValue).equals("b") + }) + + o("accepts arguments for comparison", function() { + var count = 0 + var vnode = {tag: "div", attrs: {id: "a", onbeforeupdate: onbeforeupdate}} + var updated = {tag: "div", attrs: {id: "b", onbeforeupdate: onbeforeupdate}} + + render(root, [vnode]) + render(root, [updated]) + + function onbeforeupdate(vnode, old) { + count++ + + o(old.attrs.id).equals("a") + o(vnode.attrs.id).equals("b") + + return old.attrs.id !== vnode.attrs.id + } + + o(count).equals(1) + o(root.firstChild.attributes["id"].nodeValue).equals("b") + }) + + o("is not called on creation", function() { + var count = 0 + var vnode = {tag: "div", attrs: {id: "a", onbeforeupdate: onbeforeupdate}} + var updated = {tag: "div", attrs: {id: "b", onbeforeupdate: onbeforeupdate}} + + render(root, [vnode]) + + function onbeforeupdate(vnode, old) { + count++ + return true + } + + o(count).equals(0) + }) + + o("is called only once on update", function() { + var count = 0 + var vnode = {tag: "div", attrs: {id: "a", onbeforeupdate: onbeforeupdate}} + var updated = {tag: "div", attrs: {id: "b", onbeforeupdate: onbeforeupdate}} + + render(root, [vnode]) + render(root, [updated]) + + function onbeforeupdate(vnode, old) { + count++ + return true + } + + o(count).equals(1) + }) + o("prevents update in component", function() { var component = { onbeforeupdate: function() {return false}, @@ -136,17 +200,6 @@ o.spec("onbeforeupdate", function() { o(root.firstChild.attributes["id"].nodeValue).equals("b") }) - o("does not prevent update if returning true", function() { - var onbeforeupdate = function() {return true} - var vnode = {tag: "div", attrs: {id: "a", onbeforeupdate: onbeforeupdate}} - var updated = {tag: "div", attrs: {id: "b", onbeforeupdate: onbeforeupdate}} - - render(root, [vnode]) - render(root, [updated]) - - o(root.firstChild.attributes["id"].nodeValue).equals("b") - }) - o("does not prevent update if returning true from component", function() { var component = { onbeforeupdate: function() {return true}, @@ -163,27 +216,6 @@ o.spec("onbeforeupdate", function() { o(root.firstChild.attributes["id"].nodeValue).equals("b") }) - o("accepts arguments for comparison", function() { - var count = 0 - var vnode = {tag: "div", attrs: {id: "a", onbeforeupdate: onbeforeupdate}} - var updated = {tag: "div", attrs: {id: "b", onbeforeupdate: onbeforeupdate}} - - render(root, [vnode]) - render(root, [updated]) - - function onbeforeupdate(vnode, old) { - count++ - - o(old.attrs.id).equals("a") - o(vnode.attrs.id).equals("b") - - return old.attrs.id !== vnode.attrs.id - } - - o(count).equals(1) - o(root.firstChild.attributes["id"].nodeValue).equals("b") - }) - o("accepts arguments for comparison in component", function() { var component = { onbeforeupdate: onbeforeupdate, @@ -211,21 +243,6 @@ o.spec("onbeforeupdate", function() { o(root.firstChild.attributes["id"].nodeValue).equals("b") }) - o("is not called on creation", function() { - var count = 0 - var vnode = {tag: "div", attrs: {id: "a", onbeforeupdate: onbeforeupdate}} - var updated = {tag: "div", attrs: {id: "b", onbeforeupdate: onbeforeupdate}} - - render(root, [vnode]) - - function onbeforeupdate(vnode, old) { - count++ - return true - } - - o(count).equals(0) - }) - o("is not called on component creation", function() { var component = { onbeforeupdate: onbeforeupdate, @@ -248,22 +265,6 @@ o.spec("onbeforeupdate", function() { o(count).equals(0) }) - o("is called only once on update", function() { - var count = 0 - var vnode = {tag: "div", attrs: {id: "a", onbeforeupdate: onbeforeupdate}} - var updated = {tag: "div", attrs: {id: "b", onbeforeupdate: onbeforeupdate}} - - render(root, [vnode]) - render(root, [updated]) - - function onbeforeupdate(vnode, old) { - count++ - return true - } - - o(count).equals(1) - }) - o("is called only once on component update", function() { var component = { onbeforeupdate: onbeforeupdate, diff --git a/render/tests/test-onremove.js b/render/tests/test-onremove.js index d3f423fc..8aa2eabd 100644 --- a/render/tests/test-onremove.js +++ b/render/tests/test-onremove.js @@ -1,6 +1,7 @@ "use strict" var o = require("../../ospec/ospec") +var components = require("../../test-utils/components") var domMock = require("../../test-utils/domMock") var vdom = require("../../render/render") var m = require("../../render/hyperscript") @@ -80,6 +81,38 @@ o.spec("onremove", function() { o(remove.this).equals(vnode.state) o(remove.args[0]).equals(vnode) }) + o("does not set onremove as an event handler", function() { + var remove = o.spy() + var vnode = {tag: "div", attrs: {onremove: remove}, children: []} + + render(root, [vnode]) + + o(vnode.dom.onremove).equals(undefined) + o(vnode.dom.attributes["onremove"]).equals(undefined) + }) + o("calls onremove on recycle", function() { + var remove = o.spy() + var vnodes = [{tag: "div", key: 1}] + var temp = [{tag: "div", key: 2, attrs: {onremove: remove}}] + var updated = [{tag: "div", key: 1}] + + render(root, vnodes) + render(root, temp) + render(root, updated) + + o(remove.callCount).equals(1) + }) + o("does not recycle when there's an onremove", function() { + var remove = o.spy() + var vnode = {tag: "div", key: 1, attrs: {onremove: remove}} + var updated = {tag: "div", key: 1, attrs: {onremove: remove}} + + render(root, [vnode]) + render(root, []) + render(root, [updated]) + + o(vnode.dom).notEquals(updated.dom) + }) o("calls onremove on nested component", function() { var spy = o.spy() var comp = { @@ -113,36 +146,4 @@ o.spec("onremove", function() { o(spy.callCount).equals(1) }) - o("does not set onremove as an event handler", function() { - var remove = o.spy() - var vnode = {tag: "div", attrs: {onremove: remove}, children: []} - - render(root, [vnode]) - - o(vnode.dom.onremove).equals(undefined) - o(vnode.dom.attributes["onremove"]).equals(undefined) - }) - o("calls onremove on recycle", function() { - var remove = o.spy() - var vnodes = [{tag: "div", key: 1}] - var temp = [{tag: "div", key: 2, attrs: {onremove: remove}}] - var updated = [{tag: "div", key: 1}] - - render(root, vnodes) - render(root, temp) - render(root, updated) - - o(remove.callCount).equals(1) - }) - o("does not recycle when there's an onremove", function() { - var remove = o.spy() - var vnode = {tag: "div", key: 1, attrs: {onremove: remove}} - var updated = {tag: "div", key: 1, attrs: {onremove: remove}} - - render(root, [vnode]) - render(root, []) - render(root, [updated]) - - o(vnode.dom).notEquals(updated.dom) - }) }) diff --git a/render/tests/test-updateNodes.js b/render/tests/test-updateNodes.js index b0e8c337..c7b7095c 100644 --- a/render/tests/test-updateNodes.js +++ b/render/tests/test-updateNodes.js @@ -1,6 +1,7 @@ "use strict" var o = require("../../ospec/ospec") +var components = require("../../test-utils/components") var domMock = require("../../test-utils/domMock") var vdom = require("../../render/render") @@ -838,38 +839,6 @@ o.spec("updateNodes", function() { o(root.childNodes[0].nodeName).equals("A") o(root.childNodes[1].nodeName).equals("B") }) - o("fragment child toggles from null when followed by null component then tag", function() { - var component = {view: function() {return null}} - var vnodes = [{tag: "[", children: [{tag: "a"}, {tag: component}, {tag: "b"}]}] - var temp = [{tag: "[", children: [null, {tag: component}, {tag: "b"}]}] - var updated = [{tag: "[", children: [{tag: "a"}, {tag: component}, {tag: "b"}]}] - - render(root, vnodes) - render(root, temp) - render(root, updated) - - o(root.childNodes.length).equals(2) - o(root.childNodes[0].nodeName).equals("A") - o(root.childNodes[1].nodeName).equals("B") - }) - o("fragment child toggles from null in component when followed by null component then tag", function() { - var flag = true - var a = {view: function() {return flag ? {tag: "a"} : null}} - var b = {view: function() {return null}} - var vnodes = [{tag: "[", children: [{tag: a}, {tag: b}, {tag: "s"}]}] - var temp = [{tag: "[", children: [{tag: a}, {tag: b}, {tag: "s"}]}] - var updated = [{tag: "[", children: [{tag: a}, {tag: b}, {tag: "s"}]}] - - render(root, vnodes) - flag = false - render(root, temp) - flag = true - render(root, updated) - - o(root.childNodes.length).equals(2) - o(root.childNodes[0].nodeName).equals("A") - o(root.childNodes[1].nodeName).equals("S") - }) o("cached, non-keyed nodes skip diff", function () { var onupdate = o.spy(); var cached = {tag:"a", attrs:{onupdate: onupdate}} @@ -926,7 +895,7 @@ o.spec("updateNodes", function() { o(update.callCount).equals(2) o(remove.callCount).equals(0) }) - o("component is recreated if key changes to undefined", function () { + o("node is recreated if key changes to undefined", function () { var vnode = {tag: "b", key: 1} var updated = {tag: "b"} @@ -936,4 +905,36 @@ o.spec("updateNodes", function() { o(vnode.dom).notEquals(updated.dom) }) + o("fragment child toggles from null when followed by null component then tag", function() { + var component = {view: function() {return null}} + var vnodes = [{tag: "[", children: [{tag: "a"}, {tag: component}, {tag: "b"}]}] + var temp = [{tag: "[", children: [null, {tag: component}, {tag: "b"}]}] + var updated = [{tag: "[", children: [{tag: "a"}, {tag: component}, {tag: "b"}]}] + + render(root, vnodes) + render(root, temp) + render(root, updated) + + o(root.childNodes.length).equals(2) + o(root.childNodes[0].nodeName).equals("A") + o(root.childNodes[1].nodeName).equals("B") + }) + o("fragment child toggles from null in component when followed by null component then tag", function() { + var flag = true + var a = {view: function() {return flag ? {tag: "a"} : null}} + var b = {view: function() {return null}} + var vnodes = [{tag: "[", children: [{tag: a}, {tag: b}, {tag: "s"}]}] + var temp = [{tag: "[", children: [{tag: a}, {tag: b}, {tag: "s"}]}] + var updated = [{tag: "[", children: [{tag: a}, {tag: b}, {tag: "s"}]}] + + render(root, vnodes) + flag = false + render(root, temp) + flag = true + render(root, updated) + + o(root.childNodes.length).equals(2) + o(root.childNodes[0].nodeName).equals("A") + o(root.childNodes[1].nodeName).equals("S") + }) }) diff --git a/tests/test-api.js b/tests/test-api.js index 989b00a4..59e3eb23 100644 --- a/tests/test-api.js +++ b/tests/test-api.js @@ -68,6 +68,16 @@ o.spec("api", function() { o(query).equals("a=1&b=2") }) }) + o.spec("m.request", function() { + o("works", function() { + o(typeof m.request).equals("function") // TODO improve + }) + }) + o.spec("m.jsonp", function() { + o("works", function() { + o(typeof m.jsonp).equals("function") // TODO improve + }) + }) o.spec("m.render", function() { o("works", function() { var root = window.document.createElement("div") @@ -157,14 +167,4 @@ o.spec("api", function() { }, FRAME_BUDGET) }) }) - o.spec("m.request", function() { - o("works", function() { - o(typeof m.request).equals("function") // TODO improve - }) - }) - o.spec("m.jsonp", function() { - o("works", function() { - o(typeof m.jsonp).equals("function") // TODO improve - }) - }) })