aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Marek2013-05-06 10:20:15 +0200
committerPete Bacon Darwin2013-05-14 20:50:36 +0100
commit629fb37351ce5778a40a8bc8cd7c1385b382ce75 (patch)
tree4580bd3ea41c0bb492ac58e5f669cd9ecf3d2ce8
parent908821e20af311be905e24639dce273f2ea58434 (diff)
downloadangular.js-629fb37351ce5778a40a8bc8cd7c1385b382ce75.tar.bz2
feat(scenario): adds mousedown and mouseup event triggers to scenario
Added mousedown and mouseup event triggers to scenadio dsl 'element' expression. Added mousedown and mouseup to the custom jquery trigger method to generate real events.
-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();