Skip to content

Instantly share code, notes, and snippets.

@stash
Last active December 18, 2015 19:39
Show Gist options
  • Select an option

  • Save stash/5834729 to your computer and use it in GitHub Desktop.

Select an option

Save stash/5834729 to your computer and use it in GitHub Desktop.
/*jshint node:true */
"use strict";
var order = [];
function deferred(statement, delay) {
return function(done) {
order.push(statement+' start');
setTimeout(function() {
order.push(statement+' end');
done();
}, delay);
};
}
function immediate(statement) {
return function() {
order.push(statement);
};
}
describe('outer', function() {
before(deferred('before 1', 25));
beforeEach(deferred('beforeEach 1', 25));
after(deferred('after 1', 25));
afterEach(deferred('afterEach 1', 25));
before(immediate('before 2'));
before(deferred('before 3', 10));
before(immediate('before 4'));
after(immediate('after 2'));
afterEach(deferred('afterEach 2', 10));
// before 1 2 3 4
// beforeEach 1
it('is great', immediate('* test: great'));
// afterEach 1 2
// beforeEach 1
it('is fantastic', deferred('* test: fantastic',10));
// afterEach 1 2
describe('inner', function() {
before(deferred('before A', 25));
beforeEach(deferred('beforeEach A', 25));
after(deferred('after A', 25));
afterEach(deferred('afterEach A', 25));
before(immediate('before B'));
after(immediate('after B'));
afterEach(deferred('afterEach B', 25));
// before A B
// beforeEach A 1
it('is super', immediate('* test: super'));
// afterEach A B 1 2
// beforeEach A 1
it('is awesome', deferred('* test: awesome',10));
// afterEach A B 1 2
// after A B
});
// after 1 2
});
process.on('exit', function() {
process.stdout.write('order:\n'+order.join('\n')+'\n');
});
order:
before 1 start
before 1 end
before 2
before 3 start
before 3 end
before 4
beforeEach 1 start
beforeEach 1 end
* test: great
afterEach 1 start
afterEach 1 end
afterEach 2 start
afterEach 2 end
beforeEach 1 start
beforeEach 1 end
* test: fantastic start
* test: fantastic end
afterEach 1 start
afterEach 1 end
afterEach 2 start
afterEach 2 end
before A start
before A end
before B
beforeEach 1 start
beforeEach 1 end
beforeEach A start
beforeEach A end
* test: super
afterEach A start
afterEach A end
afterEach B start
afterEach B end
afterEach 1 start
afterEach 1 end
afterEach 2 start
afterEach 2 end
beforeEach 1 start
beforeEach 1 end
beforeEach A start
beforeEach A end
* test: awesome start
* test: awesome end
afterEach A start
afterEach A end
afterEach B start
afterEach B end
afterEach 1 start
afterEach 1 end
afterEach 2 start
afterEach 2 end
after A start
after A end
after B
after 1 start
after 1 end
after 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment