aboutsummaryrefslogtreecommitdiffstats
path: root/test/scenario
diff options
context:
space:
mode:
Diffstat (limited to 'test/scenario')
-rw-r--r--test/scenario/DSLSpec.js113
-rw-r--r--test/scenario/HtmlUISpec.js44
-rw-r--r--test/scenario/SpecRunnerSpec.js12
3 files changed, 85 insertions, 84 deletions
diff --git a/test/scenario/DSLSpec.js b/test/scenario/DSLSpec.js
index 9b011847..b144a3ce 100644
--- a/test/scenario/DSLSpec.js
+++ b/test/scenario/DSLSpec.js
@@ -38,7 +38,7 @@ describe("angular.scenario.dsl", function() {
var $window;
var $root;
var application;
-
+
beforeEach(function() {
$window = {
document: _jQuery("<div></div>"),
@@ -55,9 +55,9 @@ describe("angular.scenario.dsl", function() {
};
$root.application = new angular.scenario.Application($window.document);
$root.application.getWindow = function() {
- return $window;
+ return $window;
};
- $root.application.navigateTo = function(url, callback) {
+ $root.application.navigateTo = function(url, callback) {
$window.location = url;
callback();
};
@@ -65,7 +65,7 @@ describe("angular.scenario.dsl", function() {
$root.addFutureAction = angular.scenario.
SpecRunner.prototype.addFutureAction;
});
-
+
describe('Pause', function() {
beforeEach(function() {
$root.setTimeout = function(fn, value) {
@@ -73,14 +73,14 @@ describe("angular.scenario.dsl", function() {
fn();
};
});
-
+
it('should pause for specified seconds', function() {
angular.scenario.dsl.pause.call($root).call($root, 10);
expect($root.timerValue).toEqual(10000);
expect($root.futureResult).toEqual(10000);
- });
+ });
});
-
+
describe('Expect', function() {
it('should chain and execute matcher', function() {
var future = {value: 10};
@@ -88,41 +88,41 @@ describe("angular.scenario.dsl", function() {
result.toEqual(10);
expect($root.futureError).toBeUndefined();
expect($root.futureResult).toBeUndefined();
- var result = angular.scenario.dsl.expect.call($root).call($root, future);
+ result = angular.scenario.dsl.expect.call($root).call($root, future);
result.toEqual(20);
expect($root.futureError).toBeDefined();
});
});
-
- describe('NavigateTo', function() {
+
+ describe('NavigateTo', function() {
it('should allow a string url', function() {
angular.scenario.dsl.navigateTo.call($root).call($root, 'http://myurl');
expect($window.location).toEqual('http://myurl');
expect($root.futureResult).toEqual('http://myurl');
});
-
+
it('should allow a future url', function() {
var future = {name: 'future name', value: 'http://myurl'};
angular.scenario.dsl.navigateTo.call($root).call($root, future);
expect($window.location).toEqual('http://myurl');
expect($root.futureResult).toEqual('http://myurl');
});
-
+
it('should complete if angular is missing from app frame', function() {
delete $window.angular;
angular.scenario.dsl.navigateTo.call($root).call($root, 'http://myurl');
expect($window.location).toEqual('http://myurl');
expect($root.futureResult).toEqual('http://myurl');
});
-
+
it('should wait for angular notify when no requests pending', function() {
angular.scenario.dsl.navigateTo.call($root).call($root, 'url');
expect($window.angular.log).toContain('$brower.poll()');
- expect($window.angular.log)
- .toContain('$brower.notifyWhenNoOutstandingRequests()');
+ expect($window.angular.log).
+ toContain('$brower.notifyWhenNoOutstandingRequests()');
});
});
-
+
describe('Element Finding', function() {
var doc;
//TODO(esprehn): Work around a bug in jQuery where attribute selectors
@@ -133,14 +133,14 @@ describe("angular.scenario.dsl", function() {
//
beforeEach(function() {
doc = _jQuery('<div id="angular-scenario-binding"></div>');
- _jQuery(document.body).append(doc);
+ _jQuery(document.body).html('').append(doc);
$window.document = window.document;
});
-
+
afterEach(function() {
- _jQuery(document.body)
- .find('#angular-scenario-binding')
- .remove();
+ _jQuery(document.body).
+ find('#angular-scenario-binding').
+ remove();
});
describe('Binding', function() {
@@ -149,53 +149,53 @@ describe("angular.scenario.dsl", function() {
angular.scenario.dsl.binding.call($root).call($root, 'foo.bar');
expect($root.futureResult).toEqual('some value');
});
-
+
it('should return error if no binding exists', function() {
angular.scenario.dsl.binding.call($root).call($root, 'foo.bar');
expect($root.futureError).toMatch(/does not exist/);
});
});
-
+
describe('Input', function() {
it('should change value in text input', function() {
doc.append('<input name="test.input" value="something">');
- var chain = angular.scenario.dsl.input
- .call($root).call($root, 'test.input');
+ var chain = angular.scenario.dsl.input.
+ call($root).call($root, 'test.input');
chain.enter('foo');
expect($window.angular.log).toContain('element(input)');
expect($window.angular.log).toContain('element().trigger(change)');
expect(_jQuery('input[name="test.input"]').val()).toEqual('foo');
});
-
+
it('should return error if no input exists', function() {
- var chain = angular.scenario.dsl.input
- .call($root).call($root, 'test.input');
+ var chain = angular.scenario.dsl.input.
+ call($root).call($root, 'test.input');
chain.enter('foo');
expect($root.futureError).toMatch(/does not exist/);
});
-
+
it('should toggle checkbox state', function() {
doc.append('<input type="checkbox" name="test.input" checked>');
- expect(_jQuery('input[name="test.input"]')
- .attr('checked')).toBeTruthy();
- var chain = angular.scenario.dsl.input
- .call($root).call($root, 'test.input');
+ expect(_jQuery('input[name="test.input"]').
+ attr('checked')).toBeTruthy();
+ var chain = angular.scenario.dsl.input.
+ call($root).call($root, 'test.input');
chain.check();
expect($window.angular.log).toContain('element(input)');
expect($window.angular.log).toContain('element().trigger(click)');
- expect(_jQuery('input[name="test.input"]')
- .attr('checked')).toBeFalsy();
+ expect(_jQuery('input[name="test.input"]').
+ attr('checked')).toBeFalsy();
$window.angular.reset();
chain.check();
expect($window.angular.log).toContain('element(input)');
expect($window.angular.log).toContain('element().trigger(click)');
- expect(_jQuery('input[name="test.input"]')
- .attr('checked')).toBeTruthy();
+ expect(_jQuery('input[name="test.input"]').
+ attr('checked')).toBeTruthy();
});
-
+
it('should return error if checkbox does not exist', function() {
- var chain = angular.scenario.dsl.input
- .call($root).call($root, 'test.input');
+ var chain = angular.scenario.dsl.input.
+ call($root).call($root, 'test.input');
chain.check();
expect($root.futureError).toMatch(/does not exist/);
});
@@ -203,30 +203,31 @@ describe("angular.scenario.dsl", function() {
it('should select option from radio group', function() {
doc.append(
'<input type="radio" name="0@test.input" value="foo">' +
- '<input type="radio" name="0@test.input" value="bar" checked>'
- );
- expect(_jQuery('input[name="0@test.input"][value="bar"]')
- .attr('checked')).toBeTruthy();
- expect(_jQuery('input[name="0@test.input"][value="foo"]')
- .attr('checked')).toBeFalsy();
- var chain = angular.scenario.dsl.input
- .call($root).call($root, 'test.input');
+ '<input type="radio" name="0@test.input" value="bar" checked="checked">');
+ // HACK! We don't know why this is sometimes false on chrome
+ _jQuery('input[name="0@test.input"][value="bar"]').attr('checked', true);
+ expect(_jQuery('input[name="0@test.input"][value="bar"]').
+ attr('checked')).toBeTruthy();
+ expect(_jQuery('input[name="0@test.input"][value="foo"]').
+ attr('checked')).toBeFalsy();
+ var chain = angular.scenario.dsl.input.
+ call($root).call($root, 'test.input');
chain.select('foo');
expect($window.angular.log).toContain('element(input)');
expect($window.angular.log).toContain('element().trigger(click)');
- expect(_jQuery('input[name="0@test.input"][value="bar"]')
- .attr('checked')).toBeFalsy();
- expect(_jQuery('input[name="0@test.input"][value="foo"]')
- .attr('checked')).toBeTruthy();
+ expect(_jQuery('input[name="0@test.input"][value="bar"]').
+ attr('checked')).toBeFalsy();
+ expect(_jQuery('input[name="0@test.input"][value="foo"]').
+ attr('checked')).toBeTruthy();
});
-
+
it('should return error if radio button does not exist', function() {
- var chain = angular.scenario.dsl.input
- .call($root).call($root, 'test.input');
+ var chain = angular.scenario.dsl.input.
+ call($root).call($root, 'test.input');
chain.select('foo');
expect($root.futureError).toMatch(/does not exist/);
});
});
});
-
+
});
diff --git a/test/scenario/HtmlUISpec.js b/test/scenario/HtmlUISpec.js
index b2e2652f..5b800fca 100644
--- a/test/scenario/HtmlUISpec.js
+++ b/test/scenario/HtmlUISpec.js
@@ -2,7 +2,7 @@ describe('angular.scenario.HtmlUI', function() {
var ui;
var context;
var spec;
-
+
beforeEach(function() {
spec = {
name: 'test spec',
@@ -20,18 +20,18 @@ describe('angular.scenario.HtmlUI', function() {
context = _jQuery("<div></div>");
ui = new angular.scenario.ui.Html(context);
});
-
+
it('should create nested describe context', function() {
ui.addSpec(spec);
- expect(context.find('#describe-20 #describe-10 > h2').text())
- .toEqual('describe: child');
+ expect(context.find('#describe-20 #describe-10 > h2').text()).
+ toEqual('describe: child');
expect(context.find('#describe-20 > h2').text()).toEqual('describe: parent');
- expect(context.find('#describe-10 .tests > li .test-info .test-name').text())
- .toEqual('it test spec');
- expect(context.find('#describe-10 .tests > li').hasClass('status-pending'))
- .toBeTruthy();
+ expect(context.find('#describe-10 .tests > li .test-info .test-name').text()).
+ toEqual('it test spec');
+ expect(context.find('#describe-10 .tests > li').hasClass('status-pending')).
+ toBeTruthy();
});
-
+
it('should update totals when steps complete', function() {
// Error
ui.addSpec(spec).error('error');
@@ -55,31 +55,31 @@ describe('angular.scenario.HtmlUI', function() {
specUI = ui.addSpec(spec);
specUI.addStep('some step').finish();
specUI.finish();
-
- expect(parseInt(context.find('#status-legend .status-failure').text()))
- .toEqual(3);
- expect(parseInt(context.find('#status-legend .status-error').text()))
- .toEqual(2);
- expect(parseInt(context.find('#status-legend .status-success').text()))
- .toEqual(1);
+
+ expect(parseInt(context.find('#status-legend .status-failure').text(), 10)).
+ toEqual(3);
+ expect(parseInt(context.find('#status-legend .status-error').text(), 10)).
+ toEqual(2);
+ expect(parseInt(context.find('#status-legend .status-success').text(), 10)).
+ toEqual(1);
});
-
+
it('should update timer when test completes', function() {
// Success
specUI = ui.addSpec(spec);
specUI.addStep('some step').finish();
specUI.finish();
-
+
// Failure
specUI = ui.addSpec(spec);
specUI.addStep('some step').finish('failure');
specUI.finish('failure');
-
+
// Error
specUI = ui.addSpec(spec).error('error');
-
- context.find('#describe-10 .tests > li .test-info .timer-result')
- .each(function(index, timer) {
+
+ context.find('#describe-10 .tests > li .test-info .timer-result').
+ each(function(index, timer) {
expect(timer.innerHTML).toMatch(/ms$/);
});
});
diff --git a/test/scenario/SpecRunnerSpec.js b/test/scenario/SpecRunnerSpec.js
index 81b66956..0926c3f8 100644
--- a/test/scenario/SpecRunnerSpec.js
+++ b/test/scenario/SpecRunnerSpec.js
@@ -30,8 +30,8 @@ UIMock.prototype = {
log.push('spec error:' + (e ? e : ''));
return this;
}
- };
- },
+ };
+ }
};
/**
@@ -56,7 +56,7 @@ describe('angular.scenario.SpecRunner', function() {
runner.application = new ApplicationMock($window);
runner.$become(angular.scenario.SpecRunner);
});
-
+
it('should bind futures to the spec', function() {
runner.addFuture('test future', function(done) {
this.application.value = 10;
@@ -65,7 +65,7 @@ describe('angular.scenario.SpecRunner', function() {
runner.futures[0].execute(angular.noop);
expect(runner.application.value).toEqual(10);
});
-
+
it('should pass done to future action behavior', function() {
runner.addFutureAction('test future', function(done) {
expect(angular.isFunction(done)).toBeTruthy();
@@ -76,7 +76,7 @@ describe('angular.scenario.SpecRunner', function() {
expect(result).toEqual(20);
});
});
-
+
it('should pass execute future action on the $window', function() {
runner.addFutureAction('test future', function(done) {
this.test = 'test value';
@@ -123,7 +123,7 @@ describe('angular.scenario.SpecRunner', function() {
'spec error:message'
]);
});
-
+
it('should execute notify UI on step failure', function() {
var finished = false;
var ui = new UIMock();