aboutsummaryrefslogtreecommitdiffstats
path: root/src/scenario/Future.js
diff options
context:
space:
mode:
authorElliott Sprehn2010-10-19 13:17:49 -0700
committerElliott Sprehn2010-10-20 14:38:00 -0700
commit2115db69035c5993533fe7a3825e64cf6e9068ad (patch)
tree796a502b28cd2bda8108a672eac0bf28c8bc21d4 /src/scenario/Future.js
parent9c8b1800b90e14b643bab6ada8e96f8f850e84a6 (diff)
downloadangular.js-2115db69035c5993533fe7a3825e64cf6e9068ad.tar.bz2
Lots of stability and performance updates and UI polish too.
Polish the Scenario Runner UI to include: - a scroll pane that steps appear in since the list can be very long - Collapse successful tests - Show the line where the DSL statements were when there's an error (Chrome, Firefox) Also: - Remove lots angular.bind calls to reduce the amount of stack space used. - Use setTimeout(...,0) to schedule the next future to let the browser breathe and have it repaint the steps. Also prevents overflowing the stack when an it() creates many futures. - Run afterEach() handlers even if the it() block fails. - Make navigateTo() take a function as the second argument so you can compute a URL in the future. - Add wait() DSL statement to allow interactive debugging of tests. - Allow custom jQuery selectors with element(...).query(fn) DSL statement. Known Issues: - All afterEach() handlers run even if a beforeEach() handler fails. Only after handlers for the same level as the failure and above should run.
Diffstat (limited to 'src/scenario/Future.js')
-rw-r--r--src/scenario/Future.js18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/scenario/Future.js b/src/scenario/Future.js
index 30c2d902..8853aa3f 100644
--- a/src/scenario/Future.js
+++ b/src/scenario/Future.js
@@ -1,12 +1,17 @@
/**
* A future action in a spec.
+ *
+ * @param {String} name of the future action
+ * @param {Function} future callback(error, result)
+ * @param {String} Optional. function that returns the file/line number.
*/
-angular.scenario.Future = function(name, behavior) {
+angular.scenario.Future = function(name, behavior, line) {
this.name = name;
this.behavior = behavior;
this.fulfilled = false;
this.value = undefined;
this.parser = angular.identity;
+ this.line = line || function() { return ''; };
};
/**
@@ -15,18 +20,19 @@ angular.scenario.Future = function(name, behavior) {
* @param {Function} Callback function(error, result)
*/
angular.scenario.Future.prototype.execute = function(doneFn) {
- this.behavior(angular.bind(this, function(error, result) {
- this.fulfilled = true;
+ var self = this;
+ this.behavior(function(error, result) {
+ self.fulfilled = true;
if (result) {
try {
- result = this.parser(result);
+ result = self.parser(result);
} catch(e) {
error = e;
}
}
- this.value = error || result;
+ self.value = error || result;
doneFn(error, result);
- }));
+ });
};
/**