diff options
| -rw-r--r-- | jsTestDriver-jquery.conf | 3 | ||||
| -rw-r--r-- | jsTestDriver.conf | 4 | ||||
| -rw-r--r-- | scenario/widgets-scenario2.js | 5 | ||||
| -rw-r--r-- | scenario/widgets.html | 1 | ||||
| -rw-r--r-- | src/scenario/Runner.js | 44 | ||||
| -rw-r--r-- | src/scenario/bootstrap.js | 6 | ||||
| -rw-r--r-- | test/jquery_alias.js | 1 | ||||
| -rw-r--r-- | test/jquery_remove.js | 1 | ||||
| -rw-r--r-- | test/scenario/RunnerSpec.js | 34 | 
9 files changed, 75 insertions, 24 deletions
| diff --git a/jsTestDriver-jquery.conf b/jsTestDriver-jquery.conf index dde88e80..128fcb6c 100644 --- a/jsTestDriver-jquery.conf +++ b/jsTestDriver-jquery.conf @@ -4,6 +4,7 @@ load:    - lib/jasmine/jasmine-0.10.3.js    - lib/jasmine-jstd-adapter/JasmineAdapter.js    - lib/jquery/jquery-1.4.2.js +  - test/jquery_alias.js    - src/Angular.js    - src/*.js    - src/scenario/*.js @@ -17,3 +18,5 @@ exclude:    - src/angular.suffix    - src/angular-bootstrap.js    - src/AngularPublic.js +  - test/jquery_remove.js + diff --git a/jsTestDriver.conf b/jsTestDriver.conf index 6f959b8f..4a702a3e 100644 --- a/jsTestDriver.conf +++ b/jsTestDriver.conf @@ -3,7 +3,8 @@ server: http://localhost:9876  load:    - lib/jasmine/jasmine-0.10.3.js    - lib/jasmine-jstd-adapter/JasmineAdapter.js -#  - lib/jquery/jquery-1.4.2.js +  - lib/jquery/jquery-1.4.2.js +  - test/jquery_remove.js    - src/Angular.js    - src/*.js    - src/scenario/*.js @@ -13,6 +14,7 @@ load:    - test/*.js  exclude: +  - test/jquery_alias.js    - src/angular.prefix    - src/angular.suffix    - src/angular-bootstrap.js diff --git a/scenario/widgets-scenario2.js b/scenario/widgets-scenario2.js index e24cabad..b966b270 100644 --- a/scenario/widgets-scenario2.js +++ b/scenario/widgets-scenario2.js @@ -4,7 +4,7 @@ browser = {        var self = this;        self.testFrame.load(function(){          self.testFrame.unbind(); -        self.testDocument = self.testWindow.angular.element(self.testWindow.document); +        self.testDocument = jQuery(self.testWindow.document);          done();        });        if (this.testFrame.attr('src') == url) { @@ -23,6 +23,7 @@ function input(selector) {          var input = this.testDocument.find('input[name=' + selector + ']');          input.val(value);          input.trigger('change'); +        this.testWindow.angular.element(input[0]).trigger('change');          done();        });      } @@ -49,6 +50,6 @@ describe('widgets', function(){      browser.navigateTo('widgets.html');      expect('{{text.basic}}').toEqual('');      input('text.basic').enter('John'); -    expect('{{text.basic}}').toEqual('JohnXX'); +    expect('{{text.basic}}').toEqual('John');    });  }); diff --git a/scenario/widgets.html b/scenario/widgets.html index 5c3afa21..4d0f30b0 100644 --- a/scenario/widgets.html +++ b/scenario/widgets.html @@ -2,7 +2,6 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">    <head>      <link rel="stylesheet" type="text/css" href="style.css"/> -    <script type="text/javascript" src="../lib/jquery/jquery-1.4.2.js"></script>      <script type="text/javascript" src="../src/angular-bootstrap.js#autobind"></script>    </head>    <body ng:init="$window.$scope = this"> diff --git a/src/scenario/Runner.js b/src/scenario/Runner.js index 970d0c66..9e20d394 100644 --- a/src/scenario/Runner.js +++ b/src/scenario/Runner.js @@ -1,8 +1,9 @@  angular['scenario']  = (angular['scenario'] = {}); -angular.scenario.Runner = function(scope){ +angular.scenario.Runner = function(scope, jQuery){    var self = scope.$scenario = this;    this.scope = scope; +  this.jQuery = jQuery;    var specs = this.specs = {};    var path = []; @@ -27,6 +28,7 @@ angular.scenario.Runner = function(scope){  angular.scenario.Runner.prototype = {    run: function(body){ +    var jQuery = this.jQuery;      body.append(        '<div id="runner">' +          '<div class="console"></div>' + @@ -68,7 +70,19 @@ angular.scenario.Runner.prototype = {        };      }      this.logger = logger(console); -    this.execute("widgets: it should verify that basic widgets work"); +    var specNames = []; +    angular.foreach(this.specs, function(spec, name){ +      specNames.push(name); +    }, this); +    specNames.sort(); +    var self = this; +    function callback(){ +      var next = specNames.shift(); +      if(next) { +        self.execute(next, callback); +      } +    }; +    callback();    },    addStep: function(name, step) { @@ -102,21 +116,21 @@ angular.scenario.Runner.prototype = {     }     function next(){       var step = spec.steps[spec.nextStepIndex]; -       (result.log || {close:angular.noop}).close(); -       result.log = null; -       if (step) { -         spec.nextStepIndex ++; -         result.log = stepLogger('step', step.name); -         try { -           step.fn.call(specThis, next); -         } catch (e) { -           result.fail(e); -           done(); -         } -       } else { -         result.passed = !result.failed; +     (result.log || {close:angular.noop}).close(); +     result.log = null; +     if (step) { +       spec.nextStepIndex ++; +       result.log = stepLogger('step', step.name); +       try { +         step.fn.call(specThis, next); +       } catch (e) { +         result.fail(e);           done();         } +     } else { +       result.passed = !result.failed; +       done(); +     }     };     next();     return specThis; diff --git a/src/scenario/bootstrap.js b/src/scenario/bootstrap.js index 81272bdd..51d24c38 100644 --- a/src/scenario/bootstrap.js +++ b/src/scenario/bootstrap.js @@ -20,7 +20,7 @@    window.onload = function(){      _.defer(function(){ -      $scenarioRunner.run(jQuery(document.body)); +      $scenarioRunner.run(jQuery(window.document.body));      });      (onLoadDelegate||function(){})();    }; @@ -29,6 +29,8 @@    addScript("../../lib/jquery/jquery-1.4.2.js");    addScript("../angular-bootstrap.js");    addScript("Runner.js"); -  document.write('<script type="text/javascript">$scenarioRunner = new angular.scenario.Runner(window);</script>'); +  document.write('<script type="text/javascript">' + +    '$scenarioRunner = new angular.scenario.Runner(window, jQuery);' + +    '</script>');  })(window.onload); diff --git a/test/jquery_alias.js b/test/jquery_alias.js new file mode 100644 index 00000000..4b3fad00 --- /dev/null +++ b/test/jquery_alias.js @@ -0,0 +1 @@ +var _jQuery = jQuery;
\ No newline at end of file diff --git a/test/jquery_remove.js b/test/jquery_remove.js new file mode 100644 index 00000000..5283c340 --- /dev/null +++ b/test/jquery_remove.js @@ -0,0 +1 @@ +var _jQuery = jQuery.noConflict(true);
\ No newline at end of file diff --git a/test/scenario/RunnerSpec.js b/test/scenario/RunnerSpec.js index 2883ab7c..702e1ab5 100644 --- a/test/scenario/RunnerSpec.js +++ b/test/scenario/RunnerSpec.js @@ -1,14 +1,18 @@  describe('Runner', function(){ -  var scenario, runner, log, Describe, It, $scenario; +  var scenario, runner, log, Describe, It, $scenario, body;    function logger(text) { -    return function(){log += text;}; +    return function(done){ +      log += text; +      (done||noop)(); +    };    }    beforeEach(function(){      log = '';      scenario = {}; -    runner = new angular.scenario.Runner(scenario); +    body = _jQuery('<div></div>'); +    runner = new angular.scenario.Runner(scenario, _jQuery);      Describe = scenario.describe;      It = scenario.it;      $scenario = scenario.$scenario; @@ -105,4 +109,28 @@ describe('Runner', function(){      });    }); +  describe('run', function(){ +    var next; +    it('should execute all specs', function(){ +      Describe('d1', function(){ +        It('it1', function(){ $scenario.addStep('s1', logger('s1,')); }); +        It('it2', function(){ +          $scenario.addStep('s2', logger('s2,')); +          $scenario.addStep('s2.2', function(done){ next = done; }); +        }); +      }); +      Describe('d2', function(){ +        It('it3', function(){ $scenario.addStep('s3', logger('s3,')); }); +        It('it4', function(){ $scenario.addStep('s4', logger('s4,')); }); +      }); + +      $scenario.run(body); + +      expect(log).toEqual('s1,s2,'); +      next(); +      expect(log).toEqual('s1,s2,s3,s4,'); + +    }); +  }); +  });
\ No newline at end of file | 
