wekan/packages/kadira-flow-router/test/client/router.reactivity.spec.js
Martin Filser c925a27870 Fixing opening cards and slow performance of closing cards
Fixes: #5533
Fixes: #5548

Revert "Switch from kadira:flow-router to ostrio:flow-router-extra"

This reverts commit 718c1a393d.
2024-10-22 21:45:36 +02:00

208 lines
No EOL
4.6 KiB
JavaScript

Tinytest.addAsync(
'Client - Router - Reactivity - detectChange only once',
function (test, done) {
var route = "/" + Random.id();
var name = Random.id();
FlowRouter.route(route, {name: name});
var ranCount = 0;
var pickedId = null;
var c = Tracker.autorun(function() {
ranCount++;
pickedId = FlowRouter.getQueryParam("id");
if(pickedId) {
test.equal(pickedId, "hello");
test.equal(ranCount, 2);
c.stop();
Meteor.defer(done);
}
});
setTimeout(function() {
FlowRouter.go(name, {}, {id: "hello"});
}, 2);
});
Tinytest.addAsync(
'Client - Router - Reactivity - detectChange in the action',
function (test, done) {
var route = "/" + Random.id();
var name = Random.id();
FlowRouter.route(route, {
name: name,
action: function() {
var id = FlowRouter.getQueryParam("id");
test.equal(id, "hello");
Meteor.defer(done);
}
});
setTimeout(function() {
FlowRouter.go(name, {}, {id: "hello"});
}, 2);
});
Tinytest.addAsync(
'Client - Router - Reactivity - detect prev routeChange after new action',
function (test, done) {
var route1 = "/" + Random.id();
var name1 = Random.id();
var pickedName1 = null;
var route2 = "/" + Random.id();
var name2 = Random.id();
var pickedName2 = Random.id();
FlowRouter.route(route1, {
name: name1,
action: function() {
Tracker.autorun(function(c) {
pickedName1 = FlowRouter.getRouteName();
if(pickedName1 == name2) {
test.equal(pickedName1, pickedName2);
c.stop();
Meteor.defer(done);
}
});
}
});
FlowRouter.route(route2, {
name: name2,
action: function() {
pickedName2 = FlowRouter.getRouteName();
test.equal(pickedName1, name1);
test.equal(pickedName2, name2);
}
});
FlowRouter.go(name1);
Meteor.setTimeout(function() {
FlowRouter.go(name2);
}, 10);
});
Tinytest.addAsync(
'Client - Router - Reactivity - defer watchPathChange until new route rendered',
function(test, done) {
var route1 = "/" + Random.id();
var name1 = Random.id();
var pickedName1 = null;
var route2 = "/" + Random.id();
var name2 = Random.id();
var pickedName2 = Random.id();
FlowRouter.route(route1, {
name: name1,
action: function() {
Tracker.autorun(function(c) {
FlowRouter.watchPathChange();
pickedName1 = FlowRouter.current().route.name;
if(pickedName1 == name2) {
test.equal(pickedName1, pickedName2);
c.stop();
Meteor.defer(done);
}
});
}
});
FlowRouter.route(route2, {
name: name2,
action: function() {
pickedName2 = FlowRouter.current().route.name;
test.equal(pickedName1, name1);
test.equal(pickedName2, name2);
}
});
FlowRouter.go(name1);
Meteor.setTimeout(function() {
FlowRouter.go(name2);
}, 10);
});
Tinytest.addAsync(
'Client - Router - Reactivity - reactive changes and trigger redirects',
function(test, done) {
var name1 = Random.id();
var route1 = "/" + name1;
FlowRouter.route(route1, {
name: name1
});
var name2 = Random.id();
var route2 = "/" + name2;
FlowRouter.route(route2, {
name: name2,
triggersEnter: [function(context, redirect) {
redirect(name3);
}]
});
var name3 = Random.id();
var route3 = "/" + name3;
FlowRouter.route(route3, {
name: name3
});
var routeNamesFired = [];
FlowRouter.go(name1);
var c = null;
setTimeout(function() {
c = Tracker.autorun(function(c) {
routeNamesFired.push(FlowRouter.getRouteName());
});
FlowRouter.go(name2);
}, 50);
setTimeout(function() {
c.stop();
test.equal(routeNamesFired, [name1, name3]);
Meteor.defer(done);
}, 250);
});
Tinytest.addAsync(
'Client - Router - Reactivity - watchPathChange for every route change',
function(test, done) {
var route1 = "/" + Random.id();
var name1 = Random.id();
var pickedName1 = null;
var route2 = "/" + Random.id();
var name2 = Random.id();
var pickedName2 = Random.id();
FlowRouter.route(route1, {
name: name1
});
FlowRouter.route(route2, {
name: name2
});
var ids = [];
var c = Tracker.autorun(function() {
FlowRouter.watchPathChange();
ids.push(FlowRouter.current().queryParams['id']);
});
FlowRouter.go(name1, {}, {id: "one"});
Meteor.setTimeout(function() {
FlowRouter.go(name1, {}, {id: "two"});
}, 10);
Meteor.setTimeout(function() {
FlowRouter.go(name2, {}, {id: "three"});
}, 20);
Meteor.setTimeout(function() {
test.equal(ids, [undefined, "one", "two", "three"]);
c.stop();
done();
}, 40);
});