| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 | 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);});
 |