From 3fa771ac2888fef46b2c7829c1ab4b432744e505 Mon Sep 17 00:00:00 2001 From: Barney Carroll Date: Fri, 30 Dec 2016 19:31:51 +0000 Subject: [PATCH] Test for onbeforeremove delayed resolution --- render/tests/test-onbeforeremove.js | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/render/tests/test-onbeforeremove.js b/render/tests/test-onbeforeremove.js index 82a859d0..c9af4894 100644 --- a/render/tests/test-onbeforeremove.js +++ b/render/tests/test-onbeforeremove.js @@ -158,14 +158,14 @@ o.spec("onbeforeremove", function() { render(root, vnodes) render(root, updated) - + o(root.childNodes.length).equals(2) o(root.firstChild.firstChild.nodeValue).equals("1") - + callAsync(function() { o(root.childNodes.length).equals(1) o(root.firstChild.firstChild.nodeValue).equals("2") - + done() }) }) @@ -184,4 +184,25 @@ o.spec("onbeforeremove", function() { done() }) }) + o("awaits promise resolution before removing the node", function(done) { + var view = o.spy() + var onremove = o.spy() + var onbeforeremove = function(){return new Promise(function(resolve){callAsync(resolve)})} + var component = { + onbeforeremove: onbeforeremove, + onremove: onremove, + view: view, + } + render(root, [{tag: component}]) + render(root, []) + + callAsync(function(){ + o(onremove.callCount).equals(0) + + callAsync(function() { + o(onremove.callCount).equals(1) + done() + }) + }) + }) })