From 084d99f125bbbcf54f7d3d2da8463335cebe840f Mon Sep 17 00:00:00 2001 From: Leo Horie Date: Fri, 15 Jul 2016 01:22:34 -0400 Subject: [PATCH] fix back button on default route trigger --- api/router.js | 6 +++--- api/tests/test-router.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/api/router.js b/api/router.js index 3bb05f07..de047896 100644 --- a/api/router.js +++ b/api/router.js @@ -22,8 +22,8 @@ module.exports = function($window, renderer, pubsub) { else { renderer.render(root, Node(payload, null, args, undefined, undefined, undefined)) } - }, function() { - router.setPath(defaultRoute) + }, function(path, params) { + router.setPath(defaultRoute, null, {replace: true}) }) autoredraw(root, renderer, pubsub, replay) } @@ -31,6 +31,6 @@ module.exports = function($window, renderer, pubsub) { route.prefix = router.setPrefix route.set = router.setPath route.get = router.getPath - + return route } diff --git a/api/tests/test-router.js b/api/tests/test-router.js index 98c1a8e9..627ffc34 100644 --- a/api/tests/test-router.js +++ b/api/tests/test-router.js @@ -49,6 +49,45 @@ o.spec("route", function() { }) }) + o("default route doesn't break back button", function(done) { + $window.location.href = "http://google.com" + route(root, "/a", { + "/a" : { + view: function() { + return m("div") + } + } + }) + + setTimeout(function() { + o(root.firstChild.nodeName).equals("DIV") + + $window.history.back() + + o($window.location.pathname).equals("/") + + done() + }, FRAME_BUDGET) + }) + + o("default route does not inherit params", function(done) { + $window.location.href = "/invalid?foo=bar" + route(root, "/a", { + "/a" : { + oninit: init, + view: function() { + return m("div") + } + } + }) + + function init(vnode) { + o(vnode.attrs).deepEquals({}) + + done() + } + }) + o("redraws when render function is executed", function(done) { var onupdate = o.spy() var oninit = o.spy()