From 27784b6dec5ab81213288947c9741561d53ac2e2 Mon Sep 17 00:00:00 2001 From: Shyam Seshadri Date: Wed, 11 Aug 2010 10:10:43 +0800 Subject: Change repeater dsl to collect and return an array of string contents based on match --- src/scenario/DSL.js | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/scenario/DSL.js b/src/scenario/DSL.js index 96447aaf..2dd37250 100644 --- a/src/scenario/DSL.js +++ b/src/scenario/DSL.js @@ -43,6 +43,8 @@ angular.scenario.dsl.input = function(selector) { }; }, +angular.scenario.dsl.NG_BIND_PATTERN =/\{\{[^\}]+\}\}/; + angular.scenario.dsl.repeater = function(selector) { var namePrefix = "repeater '" + selector + "'"; return { @@ -51,23 +53,30 @@ angular.scenario.dsl.repeater = function(selector) { done(this.testDocument.find(selector).size()); }); }, - collect: function() { - return $scenario.addFuture(namePrefix + ' collect', function(done) { + collect: function(collectSelector) { + return $scenario.addFuture( + namePrefix + " collect '" + collectSelector + "'", + function(done) { var self = this; var doCollect = bind(this, function() { - var repeaterArray = []; + var repeaterArray = [], ngBindPattern; + var startIndex = collectSelector.search( + angular.scenario.dsl.NG_BIND_PATTERN); + if (startIndex >= 0) { + ngBindPattern = collectSelector.substring( + startIndex + 2, collectSelector.length - 2); + collectSelector = '*'; + + } this.testDocument.find(selector).each(function() { - var element = angular.extend(self.jQuery(this), - {bindings: [], - boundTo: function(name) { return this.bindings[name]; }} - ); - element.find('*').each(function() { - var bindName = self.jQuery(this).attr('ng:bind'); - if (bindName) { - element.bindings[bindName] = self.jQuery(this).text(); - } + var element = self.jQuery(this); + element.find(collectSelector). + each(function() { + var foundElem = self.jQuery(this); + if (foundElem.attr('ng:bind') == ngBindPattern) { + repeaterArray.push(foundElem.text()); + } }); - repeaterArray[index] = element; }); return repeaterArray; }); @@ -86,9 +95,9 @@ angular.scenario.dsl.element = function(selector) { boundTo: function(name) { return this.bindings[name]; } }); element.find('*').each(function() { - var bindName = self.jQuery(elem).attr('ng:bind'); + var bindName = self.jQuery(this).attr('ng:bind'); if (bindName) { - element.bindings[bindName] = self.jQuery(elem).text(); + element.bindings[bindName] = self.jQuery(this).text(); } }); done(element); -- cgit v1.2.3 From 04e92a875344fb675f27355a8bae7a22d0a6ae63 Mon Sep 17 00:00:00 2001 From: Shyam Seshadri Date: Thu, 12 Aug 2010 01:54:11 +0800 Subject: modify element dsl to understand angular bindings and return jquery object for further checking --- src/scenario/DSL.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/scenario/DSL.js b/src/scenario/DSL.js index 2dd37250..3b049dc6 100644 --- a/src/scenario/DSL.js +++ b/src/scenario/DSL.js @@ -89,17 +89,16 @@ 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; - var element = angular.extend(this.testDocument.find(selector), { - bindings: [], - boundTo: function(name) { return this.bindings[name]; } - }); - element.find('*').each(function() { - var bindName = self.jQuery(this).attr('ng:bind'); - if (bindName) { - element.bindings[bindName] = self.jQuery(this).text(); - } - }); - done(element); + 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)); + } }); }; -- cgit v1.2.3