diff options
| -rw-r--r-- | src/ngScenario/Scenario.js | 2 | ||||
| -rw-r--r-- | src/ngScenario/dsl.js | 18 | ||||
| -rw-r--r-- | test/ngScenario/dslSpec.js | 40 | 
3 files changed, 59 insertions, 1 deletions
diff --git a/src/ngScenario/Scenario.js b/src/ngScenario/Scenario.js index f78e3931..4d848f2c 100644 --- a/src/ngScenario/Scenario.js +++ b/src/ngScenario/Scenario.js @@ -236,7 +236,7 @@ function callerFile(offset) {  (function(fn){    var parentTrigger = fn.trigger;    fn.trigger = function(type) { -    if (/(click|change|keydown|blur|input)/.test(type)) { +    if (/(click|change|keydown|blur|input|mousedown|mouseup)/.test(type)) {        var processDefaults = [];        this.each(function(index, node) {          processDefaults.push(browserTrigger(node, type)); diff --git a/src/ngScenario/dsl.js b/src/ngScenario/dsl.js index 9d46e0cf..67a56af9 100644 --- a/src/ngScenario/dsl.js +++ b/src/ngScenario/dsl.js @@ -328,6 +328,8 @@ angular.scenario.dsl('select', function() {   *    element(selector, label).count() get the number of elements that match selector   *    element(selector, label).click() clicks an element   *    element(selector, label).mouseover() mouseover an element + *    element(selector, label).mousedown() mousedown an element + *    element(selector, label).mouseup() mouseup an element   *    element(selector, label).query(fn) executes fn(selectedElements, done)   *    element(selector, label).{method}() gets the value (as defined by jQuery, ex. val)   *    element(selector, label).{method}(value) sets the value (as defined by jQuery, ex. val) @@ -392,6 +394,22 @@ angular.scenario.dsl('element', function() {      });    }; +  chain.mousedown = function() { +      return this.addFutureAction("element '" + this.label + "' mousedown", function($window, $document, done) { +        var elements = $document.elements(); +        elements.trigger('mousedown'); +        done(); +      }); +    }; + +  chain.mouseup = function() { +      return this.addFutureAction("element '" + this.label + "' mouseup", function($window, $document, done) { +        var elements = $document.elements(); +        elements.trigger('mouseup'); +        done(); +      }); +    }; +    chain.query = function(fn) {      return this.addFutureAction('element ' + this.label + ' custom query', function($window, $document, done) {        fn.call(this, $document.elements(), done); diff --git a/test/ngScenario/dslSpec.js b/test/ngScenario/dslSpec.js index 28c9ffdc..d89d6ebf 100644 --- a/test/ngScenario/dslSpec.js +++ b/test/ngScenario/dslSpec.js @@ -367,6 +367,46 @@ describe("angular.scenario.dsl", function() {          expect(mousedOver).toBe(true);        }); +      it('should execute mousedown', function() { +        var mousedDown; +        doc.append('<div></div>'); +        doc.find('div').mousedown(function() { +          mousedDown = true; +        }); +        $root.dsl.element('div').mousedown(); +        expect(mousedDown).toBe(true); +      }); + +      it('should bubble up the mousedown event', function() { +        var mousedDown; +        doc.append('<div id="outer"><div id="inner"></div></div>'); +        doc.find('#outer').mousedown(function() { +          mousedDown = true; +        }); +        $root.dsl.element('#inner').mousedown(); +        expect(mousedDown).toBe(true); +      }); + +      it('should execute mouseup', function() { +        var mousedUp; +        doc.append('<div></div>'); +        doc.find('div').mouseup(function() { +          mousedUp = true; +        }); +        $root.dsl.element('div').mouseup(); +        expect(mousedUp).toBe(true); +      }); + +      it('should bubble up the mouseup event', function() { +        var mousedUp; +        doc.append('<div id="outer"><div id="inner"></div></div>'); +        doc.find('#outer').mouseup(function() { +          mousedUp = true; +        }); +        $root.dsl.element('#inner').mouseup(); +        expect(mousedUp).toBe(true); +      }); +        it('should count matching elements', function() {          doc.append('<span></span><span></span>');          $root.dsl.element('span').count();  | 
