aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ngScenario/Scenario.js2
-rw-r--r--src/ngScenario/dsl.js18
-rw-r--r--test/ngScenario/dslSpec.js40
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();