aboutsummaryrefslogtreecommitdiffstats
path: root/test/scenario/SpecRunnerSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/scenario/SpecRunnerSpec.js')
-rw-r--r--test/scenario/SpecRunnerSpec.js73
1 files changed, 58 insertions, 15 deletions
diff --git a/test/scenario/SpecRunnerSpec.js b/test/scenario/SpecRunnerSpec.js
index e62bb392..dd7a1b72 100644
--- a/test/scenario/SpecRunnerSpec.js
+++ b/test/scenario/SpecRunnerSpec.js
@@ -49,11 +49,24 @@ ApplicationMock.prototype = {
describe('angular.scenario.SpecRunner', function() {
var $window;
var runner;
+
+ function createSpec(name, body) {
+ return {
+ name: name,
+ before: angular.noop,
+ body: body || angular.noop,
+ after: angular.noop
+ };
+ }
beforeEach(function() {
$window = {};
+ $window.setTimeout = function(fn, timeout) {
+ fn();
+ };
runner = angular.scope();
runner.application = new ApplicationMock($window);
+ runner.$window = $window;
runner.$become(angular.scenario.SpecRunner);
});
@@ -78,11 +91,11 @@ describe('angular.scenario.SpecRunner', function() {
});
it('should execute spec function and notify UI', function() {
- var finished = false;
+ var finished;
var ui = new UIMock();
- var spec = {name: 'test spec', fn: function() {
- this.test = 'some value';
- }};
+ var spec = createSpec('test spec', function() {
+ this.test = 'some value';
+ });
runner.addFuture('test future', function(done) {
done();
});
@@ -100,11 +113,11 @@ describe('angular.scenario.SpecRunner', function() {
});
it('should execute notify UI on spec setup error', function() {
- var finished = false;
+ var finished;
var ui = new UIMock();
- var spec = {name: 'test spec', fn: function() {
+ var spec = createSpec('test spec', function() {
throw 'message';
- }};
+ });
runner.run(ui, spec, function() {
finished = true;
});
@@ -116,9 +129,9 @@ describe('angular.scenario.SpecRunner', function() {
});
it('should execute notify UI on step failure', function() {
- var finished = false;
+ var finished;
var ui = new UIMock();
- var spec = {name: 'test spec', fn: angular.noop};
+ var spec = createSpec('test spec');
runner.addFuture('test future', function(done) {
done('failure message');
});
@@ -130,16 +143,17 @@ describe('angular.scenario.SpecRunner', function() {
'addSpec:test spec',
'addStep:test future',
'step finish:failure message',
- 'spec finish:failure message'
+ 'spec finish:'
]);
});
it('should execute notify UI on step error', function() {
- var finished = false;
+ var finished;
var ui = new UIMock();
- var spec = {name: 'test spec', fn: angular.noop};
- runner.addFuture('test future', function(done) {
- throw 'error message';
+ var spec = createSpec('test spec', function() {
+ this.addFuture('test future', function(done) {
+ throw 'error message';
+ });
});
runner.run(ui, spec, function() {
finished = true;
@@ -149,7 +163,36 @@ describe('angular.scenario.SpecRunner', function() {
'addSpec:test spec',
'addStep:test future',
'step error:error message',
- 'spec finish:error message'
+ 'spec finish:'
+ ]);
+ });
+
+ it('should run after handlers even if error in body of spec', function() {
+ var finished, after;
+ var ui = new UIMock();
+ var spec = createSpec('test spec', function() {
+ this.addFuture('body', function(done) {
+ throw 'error message';
+ });
+ });
+ spec.after = function() {
+ this.addFuture('after', function(done) {
+ after = true;
+ done();
+ });
+ };
+ runner.run(ui, spec, function() {
+ finished = true;
+ });
+ expect(finished).toBeTruthy();
+ expect(after).toBeTruthy();
+ expect(ui.log).toEqual([
+ 'addSpec:test spec',
+ 'addStep:body',
+ 'step error:error message',
+ 'addStep:after',
+ 'step finish:',
+ 'spec finish:'
]);
});