aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndres Ornelas2010-06-30 09:51:54 -0700
committerAndres Ornelas2010-06-30 09:51:54 -0700
commit9d8646b0d1bee2ca60bbb7b494b63ab83e243072 (patch)
treefb78e3b93cce33aec11450235e9fd5f83e1a14ab /src
parente664186f93838ca1fb1b2e4277f7c18264f81d92 (diff)
downloadangular.js-9d8646b0d1bee2ca60bbb7b494b63ab83e243072.tar.bz2
all tests passing with new futures concept
Diffstat (limited to 'src')
-rw-r--r--src/scenario/DSL.js8
-rw-r--r--src/scenario/Future.js45
-rw-r--r--src/scenario/Runner.js39
3 files changed, 50 insertions, 42 deletions
diff --git a/src/scenario/DSL.js b/src/scenario/DSL.js
index 194a28d6..bcf2b6c5 100644
--- a/src/scenario/DSL.js
+++ b/src/scenario/DSL.js
@@ -1,6 +1,6 @@
angular.scenario.dsl.browser = {
navigateTo: function(url){
- $scenario.addStep('Navigate to: ' + url, function(done){
+ $scenario.addFuture('Navigate to: ' + url, function(done){
var self = this;
this.testFrame.load(function(){
self.testFrame.unbind();
@@ -22,7 +22,7 @@ angular.scenario.dsl.browser = {
angular.scenario.dsl.input = function(selector) {
return {
enter: function(value){
- $scenario.addStep("Set input text of '" + selector + "' to '" +
+ $scenario.addFuture("Set input text of '" + selector + "' to '" +
value + "'", function(done){
var input = this.testDocument.find('input[name=' + selector + ']');
input.val(value);
@@ -31,7 +31,7 @@ angular.scenario.dsl.input = function(selector) {
});
},
select: function(value){
- $scenario.addStep("Select radio '" + selector + "' to '" +
+ $scenario.addFuture("Select radio '" + selector + "' to '" +
value + "'", function(done){
var input = this.testDocument.
find(':radio[name$=@' + selector + '][value=' + value + ']');
@@ -49,7 +49,7 @@ angular.scenario.dsl.expect = {
return {
count: {
toEqual: function(number) {
- $scenario.addStep("Expect that there are " + number + " items in Repeater with selector '" + selector + "'", function(done) {
+ $scenario.addFuture("Expect that there are " + number + " items in Repeater with selector '" + selector + "'", function(done) {
var items = this.testDocument.find(selector);
if (items.length != number) {
this.result.fail("Expected " + number + " but was " + items.length);
diff --git a/src/scenario/Future.js b/src/scenario/Future.js
index 057b89db..c718bba2 100644
--- a/src/scenario/Future.js
+++ b/src/scenario/Future.js
@@ -1,8 +1,8 @@
function Future(name, behavior) {
- this.value = undefined;
this.name = name;
this.behavior = behavior;
this.fulfilled = false;
+ this.value = undefined;
}
Future.prototype = {
@@ -11,25 +11,6 @@ Future.prototype = {
this.value = value;
}
};
-
-function future(name, behavior) {
- return new Future(name, behavior);
-};
-
-function repeater(selector) {
- var repeaterFuture = future('repeater ' + selector, function(done) {
- done($(selector));
- });
-
- repeaterFuture.count = function(){
- return future(repeaterFuture.name + ' count', function(done) {
- done(repeaterFuture.value.size());
- });
- };
-
- return repeaterFuture;
-}
-
function Matcher(future, logger) {
var self = this;
this.logger = logger;
@@ -52,6 +33,28 @@ Matcher.addMatcher = function(name, matcher){
Matcher.addMatcher('toEqual', function(a,b){ return a == b; });
-function expect(future) {
+/*
+
+function future(name, behavior) {
+ return new Future(name, behavior);
+};
+
+function repeater(selector) {
+ var repeaterFuture = future('repeater ' + selector, function(done) {
+ done($(selector));
+ });
+
+ repeaterFuture.count = function(){
+ return future(repeaterFuture.name + ' count', function(done) {
+ done(repeaterFuture.value.size());
+ });
+ };
+
+ return repeaterFuture;
+}
+
+function expectX(future) {
return new Matcher(future, window.alert);
}
+
+ */ \ No newline at end of file
diff --git a/src/scenario/Runner.js b/src/scenario/Runner.js
index 13ba5af0..c77239cc 100644
--- a/src/scenario/Runner.js
+++ b/src/scenario/Runner.js
@@ -26,13 +26,13 @@ angular.scenario.Runner = function(scope, jQuery){
var specName = path.join(' ') + ': it ' + name;
self.currentSpec = specs[specName] = {
name: specName,
- steps:[]
+ futures: []
};
try {
beforeEach();
body();
} catch(err) {
- self.addStep(err.message || 'ERROR', function(){
+ self.addFuture(err.message || 'ERROR', function(){
throw err;
});
} finally {
@@ -107,14 +107,16 @@ angular.scenario.Runner.prototype = {
callback();
},
- addStep: function(name, step) {
- this.currentSpec.steps.push({name:name, fn:step});
+ addFuture: function(name, behavior) {
+ var future = new Future(name, behavior);
+ this.currentSpec.futures.push(future);
+ return future;
},
execute: function(name, callback) {
var spec = this.specs[name],
self = this,
- stepsDone = [],
+ futuresFulfilled = [],
result = {
passed: false,
failed: false,
@@ -132,29 +134,32 @@ angular.scenario.Runner.prototype = {
testWindow: this.testWindow
}, angularService, {});
this.self = specThis;
- var stepLogger = this.logger('spec', name);
- spec.nextStepIndex = 0;
+ var futureLogger = this.logger('spec', name);
+ spec.nextFutureIndex = 0;
function done() {
result.finished = true;
- stepLogger.close();
+ futureLogger.close();
self.self = null;
(callback||noop).call(specThis);
}
- function next(){
- var step = spec.steps[spec.nextStepIndex];
+ function next(value){
+ if (spec.nextFutureIndex > 0) {
+ spec.futures[spec.nextFutureIndex - 1].fulfill(value);
+ }
+ var future = spec.futures[spec.nextFutureIndex];
(result.log || {close:noop}).close();
result.log = null;
- if (step) {
- spec.nextStepIndex ++;
- result.log = stepLogger('step', step.name);
- stepsDone.push(step.name);
+ if (future) {
+ spec.nextFutureIndex ++;
+ result.log = futureLogger('future', future.name);
+ futuresFulfilled.push(future.name);
try {
- step.fn.call(specThis, next);
+ future.behavior.call(specThis, next);
} catch (e) {
console.error(e);
result.fail(e);
self.scope.$testrun.results.push(
- {name: name, passed: false, error: e, steps: stepsDone});
+ {name: name, passed: false, error: e, steps: futuresFulfilled});
done();
}
} else {
@@ -163,7 +168,7 @@ angular.scenario.Runner.prototype = {
name: name,
passed: !result.failed,
error: result.error,
- steps: stepsDone});
+ steps: futuresFulfilled});
done();
}
};