diff options
| author | Misko Hevery | 2012-03-23 14:03:24 -0700 | 
|---|---|---|
| committer | Misko Hevery | 2012-03-28 11:16:35 -0700 | 
| commit | 2430f52bb97fa9d682e5f028c977c5bf94c5ec38 (patch) | |
| tree | e7529b741d70199f36d52090b430510bad07f233 /src/scenario/SpecRunner.js | |
| parent | 944098a4e0f753f06b40c73ca3e79991cec6c2e2 (diff) | |
| download | angular.js-2430f52bb97fa9d682e5f028c977c5bf94c5ec38.tar.bz2 | |
chore(module): move files around in preparation for more modules
Diffstat (limited to 'src/scenario/SpecRunner.js')
| -rw-r--r-- | src/scenario/SpecRunner.js | 145 | 
1 files changed, 0 insertions, 145 deletions
diff --git a/src/scenario/SpecRunner.js b/src/scenario/SpecRunner.js deleted file mode 100644 index f4b9b0a7..00000000 --- a/src/scenario/SpecRunner.js +++ /dev/null @@ -1,145 +0,0 @@ -'use strict'; - -/** - * This class is the "this" of the it/beforeEach/afterEach method. - * Responsibilities: - *   - "this" for it/beforeEach/afterEach - *   - keep state for single it/beforeEach/afterEach execution - *   - keep track of all of the futures to execute - *   - run single spec (execute each future) - */ -angular.scenario.SpecRunner = function() { -  this.futures = []; -  this.afterIndex = 0; -}; - -/** - * Executes a spec which is an it block with associated before/after functions - * based on the describe nesting. - * - * @param {Object} spec A spec object - * @param {function()} specDone function that is called when the spec finshes. Function(error, index) - */ -angular.scenario.SpecRunner.prototype.run = function(spec, specDone) { -  var self = this; -  this.spec = spec; - -  this.emit('SpecBegin', spec); - -  try { -    spec.before.call(this); -    spec.body.call(this); -    this.afterIndex = this.futures.length; -    spec.after.call(this); -  } catch (e) { -    this.emit('SpecError', spec, e); -    this.emit('SpecEnd', spec); -    specDone(); -    return; -  } - -  var handleError = function(error, done) { -    if (self.error) { -      return done(); -    } -    self.error = true; -    done(null, self.afterIndex); -  }; - -  asyncForEach( -    this.futures, -    function(future, futureDone) { -      self.step = future; -      self.emit('StepBegin', spec, future); -      try { -        future.execute(function(error) { -          if (error) { -            self.emit('StepFailure', spec, future, error); -            self.emit('StepEnd', spec, future); -            return handleError(error, futureDone); -          } -          self.emit('StepEnd', spec, future); -          self.$window.setTimeout(function() { futureDone(); }, 0); -        }); -      } catch (e) { -        self.emit('StepError', spec, future, e); -        self.emit('StepEnd', spec, future); -        handleError(e, futureDone); -      } -    }, -    function(e) { -      if (e) { -        self.emit('SpecError', spec, e); -      } -      self.emit('SpecEnd', spec); -      // Call done in a timeout so exceptions don't recursively -      // call this function -      self.$window.setTimeout(function() { specDone(); }, 0); -    } -  ); -}; - -/** - * Adds a new future action. - * - * Note: Do not pass line manually. It happens automatically. - * - * @param {string} name Name of the future - * @param {function()} behavior Behavior of the future - * @param {function()} line fn() that returns file/line number - */ -angular.scenario.SpecRunner.prototype.addFuture = function(name, behavior, line) { -  var future = new angular.scenario.Future(name, angular.bind(this, behavior), line); -  this.futures.push(future); -  return future; -}; - -/** - * Adds a new future action to be executed on the application window. - * - * Note: Do not pass line manually. It happens automatically. - * - * @param {string} name Name of the future - * @param {function()} behavior Behavior of the future - * @param {function()} line fn() that returns file/line number - */ -angular.scenario.SpecRunner.prototype.addFutureAction = function(name, behavior, line) { -  var self = this; -  var NG = /\[ng\\\:/; -  return this.addFuture(name, function(done) { -    this.application.executeAction(function($window, $document) { - -      //TODO(esprehn): Refactor this so it doesn't need to be in here. -      $document.elements = function(selector) { -        var args = Array.prototype.slice.call(arguments, 1); -        selector = (self.selector || '') + ' ' + (selector || ''); -        selector = _jQuery.trim(selector) || '*'; -        angular.forEach(args, function(value, index) { -          selector = selector.replace('$' + (index + 1), value); -        }); -        var result = $document.find(selector); -        if (selector.match(NG)) { -          result = result.add(selector.replace(NG, '[ng-'), $document); -        } -        if (!result.length) { -          throw { -            type: 'selector', -            message: 'Selector ' + selector + ' did not match any elements.' -          }; -        } - -        return result; -      }; - -      try { -        behavior.call(self, $window, $document, done); -      } catch(e) { -        if (e.type && e.type === 'selector') { -          done(e.message); -        } else { -          throw e; -        } -      } -    }); -  }, line); -};  | 
