| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 | 
							- Tinytest.addAsync(
 
- 'Triggers - runTriggers - run all and after',
 
- function(test, done) {
 
-   var store = [];
 
-   var triggers = MakeTriggers(2, store);
 
-   Triggers.runTriggers(triggers, null, null, function() {
 
-     test.equal(store, [0, 1]);
 
-     done();
 
-   });
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - runTriggers - redirect with url',
 
- function(test, done) {
 
-   var store = [];
 
-   var url = "http://google.com";
 
-   var triggers = MakeTriggers(2, store);
 
-   triggers.splice(1, 0, function(context, redirect) {
 
-     redirect(url); 
 
-   });
 
-   Triggers.runTriggers(triggers, null, function(u) {
 
-     test.equal(store, [0]);
 
-     test.equal(u, url);
 
-     done();
 
-   }, null);
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - runTriggers - redirect without url',
 
- function(test, done) {
 
-   var store = [];
 
-   var url = "http://google.com";
 
-   var triggers = MakeTriggers(2, store);
 
-   triggers.splice(1, 0, function(context, redirect) {
 
-     try {
 
-       redirect(); 
 
-     } catch(ex) {
 
-       test.isTrue(/requires an URL/.test(ex.message));
 
-       test.equal(store, [0]);
 
-       done();
 
-     }
 
-   });
 
-   Triggers.runTriggers(triggers, null, null, null);
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - runTriggers - redirect in a different event loop',
 
- function(test, done) {
 
-   var store = [];
 
-   var url = "http://google.com";
 
-   var triggers = MakeTriggers(2, store);
 
-   var doneCalled = false;
 
-   triggers.splice(1, 0, function(context, redirect) {
 
-     setTimeout(function() {
 
-       try {
 
-         redirect(url); 
 
-       } catch(ex) {
 
-         test.isTrue(/sync/.test(ex.message));
 
-         test.equal(store, [0, 1]);
 
-         test.isTrue(doneCalled);
 
-         done();
 
-       }
 
-     }, 0);
 
-   });
 
-   Triggers.runTriggers(triggers, null, null, function() {
 
-     doneCalled = true;
 
-   });
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - runTriggers - redirect called multiple times',
 
- function(test, done) {
 
-   var store = [];
 
-   var url = "http://google.com";
 
-   var triggers = MakeTriggers(2, store);
 
-   var redirectCalled = false;
 
-   triggers.splice(1, 0, function(context, redirect) {
 
-     redirect(url); 
 
-     try {
 
-       redirect(url);
 
-     } catch(ex) {
 
-       test.isTrue(/already redirected/.test(ex.message));
 
-       test.equal(store, [0]);
 
-       test.isTrue(redirectCalled);
 
-       done();
 
-     }
 
-   });
 
-   Triggers.runTriggers(triggers, null, function() {
 
-     redirectCalled = true;
 
-   }, null);
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - runTriggers - stop callback',
 
- function(test, done) {
 
-   var store = [];
 
-   var triggers = MakeTriggers(2, store);
 
-   triggers.splice(1, 0, function(context, redirect, stop) {
 
-     stop();
 
-   });
 
-   Triggers.runTriggers(triggers, null, null, function() {
 
-     store.push(2);
 
-   });
 
-   test.equal(store, [0]);
 
-   done();
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - runTriggers - get context',
 
- function(test, done) {
 
-   var context = {};
 
-   var trigger = function(c) {
 
-     test.equal(c, context);
 
-     done();
 
-   };
 
-   Triggers.runTriggers([trigger], context, function() {}, function() {});
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - createRouteBoundTriggers - matching trigger',
 
- function(test, done) {
 
-   var context = {route: {name: "abc"}};
 
-   var redirect = function() {};
 
-   var trigger = function(c, r) {
 
-     test.equal(c, context);
 
-     test.equal(r, redirect);
 
-     done();
 
-   };
 
-   var triggers = Triggers.createRouteBoundTriggers([trigger], ["abc"]);
 
-   triggers[0](context, redirect);
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - createRouteBoundTriggers - multiple matching triggers',
 
- function(test, done) {
 
-   var context = {route: {name: "abc"}};
 
-   var redirect = function() {};
 
-   var doneCount = 0;
 
-   var trigger = function(c, r) {
 
-     test.equal(c, context);
 
-     test.equal(r, redirect);
 
-     doneCount++;
 
-   };
 
-   var triggers = Triggers.createRouteBoundTriggers([trigger, trigger], ["abc"]);
 
-   triggers[0](context, redirect);
 
-   triggers[1](context, redirect);
 
-   test.equal(doneCount, 2);
 
-   done();
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - createRouteBoundTriggers - no matching trigger',
 
- function(test, done) {
 
-   var context = {route: {name: "some-other-route"}};
 
-   var redirect = function() {};
 
-   var doneCount = 0;
 
-   var trigger = function(c, r) {
 
-     test.equal(c, context);
 
-     test.equal(r, redirect);
 
-     doneCount++;
 
-   };
 
-   var triggers = Triggers.createRouteBoundTriggers([trigger], ["abc"]);
 
-   triggers[0](context, redirect);
 
-   test.equal(doneCount, 0);
 
-   done();
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - createRouteBoundTriggers - negate logic',
 
- function(test, done) {
 
-   var context = {route: {name: "some-other-route"}};
 
-   var redirect = function() {};
 
-   var doneCount = 0;
 
-   var trigger = function(c, r) {
 
-     test.equal(c, context);
 
-     test.equal(r, redirect);
 
-     doneCount++;
 
-   };
 
-   var triggers = Triggers.createRouteBoundTriggers([trigger], ["abc"], true);
 
-   triggers[0](context, redirect);
 
-   test.equal(doneCount, 1);
 
-   done();
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - applyFilters - no filters',
 
- function(test, done) {
 
-   var original = [];
 
-   test.equal(Triggers.applyFilters(original), original);
 
-   done();
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - applyFilters - single trigger to array',
 
- function(test, done) {
 
-   var original = function() {};
 
-   test.equal(Triggers.applyFilters(original)[0], original);
 
-   done();
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - applyFilters - only and except both',
 
- function(test, done) {
 
-   var original = [];
 
-   try {
 
-     Triggers.applyFilters(original, {only: [], except: []});
 
-   } catch(ex) {
 
-     test.isTrue(/only and except/.test(ex.message));
 
-     done();
 
-   }
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - applyFilters - only is not an array',
 
- function(test, done) {
 
-   var original = [];
 
-   try {
 
-     Triggers.applyFilters(original, {only: "name"});
 
-   } catch(ex) {
 
-     test.isTrue(/to be an array/.test(ex.message));
 
-     done();
 
-   }
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - applyFilters - except is not an array',
 
- function(test, done) {
 
-   var original = [];
 
-   try {
 
-     Triggers.applyFilters(original, {except: "name"});
 
-   } catch(ex) {
 
-     test.isTrue(/to be an array/.test(ex.message));
 
-     done();
 
-   }
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - applyFilters - unsupported filter',
 
- function(test, done) {
 
-   var original = [];
 
-   try {
 
-     Triggers.applyFilters(original, {wowFilter: []});
 
-   } catch(ex) {
 
-     test.isTrue(/not supported/.test(ex.message));
 
-     done();
 
-   }
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - applyFilters - just only filter',
 
- function(test, done) {
 
-   var bounded = Triggers.applyFilters(done, {only: ["abc"]});
 
-   bounded[0]({route: {name: "abc"}});
 
- });
 
- Tinytest.addAsync(
 
- 'Triggers - applyFilters - just except filter',
 
- function(test, done) {
 
-   var bounded = Triggers.applyFilters(done, {except: ["abc"]});
 
-   bounded[0]({route: {name: "some-other"}});
 
- });
 
- function MakeTriggers(count, store) {
 
-   var triggers = [];
 
-   function addTrigger(no) {
 
-     triggers.push(function() {
 
-       store.push(no);
 
-     });
 
-   }
 
-   for(var lc=0; lc<count; lc++) {
 
-     addTrigger(lc);
 
-   }
 
-   return triggers;
 
- }
 
 
  |