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