aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShyam Seshadri2010-08-14 03:05:50 +0800
committerShyam Seshadri2010-08-14 03:24:09 +0800
commit60eeeb9f20be3220dbb891abef848fe3754437da (patch)
tree1d2a64bf429d4077550cd65456d62f68eb6e4526
parent9260f4867a6d1aaa51585a3efac9d315b74eae53 (diff)
downloadangular.js-60eeeb9f20be3220dbb891abef848fe3754437da.tar.bz2
Provide all jquery functions as futures
-rw-r--r--src/scenario/DSL.js40
-rw-r--r--test/scenario/DSLSpec.js25
2 files changed, 42 insertions, 23 deletions
diff --git a/src/scenario/DSL.js b/src/scenario/DSL.js
index a64f8548..a533a5c3 100644
--- a/src/scenario/DSL.js
+++ b/src/scenario/DSL.js
@@ -102,18 +102,30 @@ angular.scenario.dsl.repeater = function(selector) {
};
angular.scenario.dsl.element = function(selector) {
- var nameSuffix = "element '" + selector + "'";
- return $scenario.addFuture('Find ' + nameSuffix, function(done) {
- var self = this, repeaterArray = [], ngBindPattern;
- var startIndex = selector.search(angular.scenario.dsl.NG_BIND_PATTERN);
- if (startIndex >= 0) {
- ngBindPattern = selector.substring(startIndex + 2, selector.length - 2);
- var element = this.testDocument.find('*').filter(function() {
- return self.jQuery(this).attr('ng:bind') == ngBindPattern;
- });
- done(element);
- } else {
- done(this.testDocument.find(selector));
- }
- });
+ var namePrefix = "Element '" + selector + "'";
+ var futureJquery = {};
+ for (key in _jQuery.fn) {
+ (function(){
+ var jqFnName = key;
+ var jqFn = _jQuery.fn[key];
+ futureJquery[key] = function() {
+ var jqArgs = arguments;
+ return $scenario.addFuture(namePrefix + "." + jqFnName + "()",
+ function(done) {
+ var self = this, repeaterArray = [], ngBindPattern;
+ var startIndex = selector.search(angular.scenario.dsl.NG_BIND_PATTERN);
+ if (startIndex >= 0) {
+ ngBindPattern = selector.substring(startIndex + 2, selector.length - 2);
+ var element = this.testDocument.find('*').filter(function() {
+ return self.jQuery(this).attr('ng:bind') == ngBindPattern;
+ });
+ done(jqFn.apply(element, jqArgs));
+ } else {
+ done(jqFn.apply(this.testDocument.find(selector), jqArgs));
+ }
+ });
+ };
+ })();
+ }
+ return futureJquery;
};
diff --git a/test/scenario/DSLSpec.js b/test/scenario/DSLSpec.js
index 552e6211..f8606641 100644
--- a/test/scenario/DSLSpec.js
+++ b/test/scenario/DSLSpec.js
@@ -159,20 +159,27 @@ describe("DSL", function() {
expect(future.fulfilled).toBeTruthy();
}
it('should find elements on the page and provide jquery api', function() {
- var future = element('.reports-detail');
- expect(future.name).toEqual("Find element '.reports-detail'");
+ var future = element('.reports-detail').text();
+ expect(future.name).toEqual("Element '.reports-detail'.text()");
timeTravel(future);
- expect(future.value.text()).
+ expect(future.value).
toEqual('Description : Details...Date created: 01/01/01');
- expect(future.value.find('.desc').text()).
- toEqual('Description : Details...');
+// expect(future.value.find('.desc').text()).
+// toEqual('Description : Details...');
});
it('should find elements with angular syntax', function() {
- var future = element('{{report.description}}');
- expect(future.name).toEqual("Find element '{{report.description}}'");
+ var future = element('{{report.description}}').text();
+ expect(future.name).toEqual("Element '{{report.description}}'.text()");
timeTravel(future);
- expect(future.value.text()).toEqual('Details...');
- expect(future.value.attr('ng:bind')).toEqual('report.description');
+ expect(future.value).toEqual('Details...');
+// expect(future.value.attr('ng:bind')).toEqual('report.description');
+ });
+ it('should be able to click elements', function(){
+ var future = element('.link-class').click();
+ expect(future.name).toEqual("Element '.link-class'.click()");
+ executeFuture(future, html, function(value) { future.fulfill(value); });
+ expect(future.fulfilled).toBeTruthy();
+ // TODO(rajat): look for some side effect from click happening?
});
});
});