mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-16 23:30:23 +00:00
Pull in Rajat's changes to add click and url checking dsl
This commit is contained in:
parent
5c14a35e62
commit
669d8241b2
2 changed files with 81 additions and 14 deletions
|
|
@ -1,5 +1,6 @@
|
|||
angular.scenario.dsl.browser = {
|
||||
navigateTo: function(url){
|
||||
var location = this.location;
|
||||
return $scenario.addFuture('Navigate to: ' + url, function(done){
|
||||
var self = this;
|
||||
this.testFrame.load(function(){
|
||||
|
|
@ -15,8 +16,22 @@ angular.scenario.dsl.browser = {
|
|||
this.testFrame[0].contentWindow.location.reload();
|
||||
} else {
|
||||
this.testFrame.attr('src', url);
|
||||
location.setLocation(url);
|
||||
}
|
||||
});
|
||||
},
|
||||
location: {
|
||||
href: "",
|
||||
hash: "",
|
||||
toEqual: function(url) {
|
||||
return (this.hash == "" ? (url == this.href) :
|
||||
(url == (this.href + "/#/" + this.hash)));
|
||||
},
|
||||
setLocation: function(url) {
|
||||
var urlParts = url.split("/#/");
|
||||
this.href = urlParts[0] || "";
|
||||
this.hash = urlParts[1] || "";
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -88,17 +103,28 @@ 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));
|
||||
return {
|
||||
find: function() {
|
||||
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));
|
||||
}
|
||||
});
|
||||
},
|
||||
click: function() {
|
||||
var self = this;
|
||||
return $scenario.addFuture('Click ' + nameSuffix, function(done) {
|
||||
_jQuery(self).click();
|
||||
done();
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,10 +6,12 @@ describe("DSL", function() {
|
|||
setUpContext();
|
||||
executeFuture = function(future, html, callback) {
|
||||
lastDocument = _jQuery('<div>' + html + '</div>');
|
||||
lastFrame = _jQuery('<iframe>' + lastDocument + '</iframe>');
|
||||
_jQuery(document.body).append(lastDocument);
|
||||
var specThis = {
|
||||
testWindow: window,
|
||||
testDocument: lastDocument,
|
||||
testFrame: lastFrame,
|
||||
jQuery: _jQuery
|
||||
};
|
||||
future.behavior.call(specThis, callback || noop);
|
||||
|
|
@ -39,6 +41,38 @@ describe("DSL", function() {
|
|||
});
|
||||
});
|
||||
|
||||
describe('browser', function() {
|
||||
var browser = angular.scenario.dsl.browser;
|
||||
it('shoud return true if location with empty hash provided is same '
|
||||
+ 'as location of the page', function() {
|
||||
browser.location.href = "http://server";
|
||||
expect(browser.location.toEqual("http://server")).toEqual(true);
|
||||
});
|
||||
it('shoud return true if location with hash provided is same '
|
||||
+ 'as location of the page', function() {
|
||||
browser.location.href = "http://server";
|
||||
browser.location.hash = "hashPath";
|
||||
expect(browser.location.toEqual("http://server/#/hashPath"))
|
||||
.toEqual(true);
|
||||
});
|
||||
it('should return true if the location provided is the same as which '
|
||||
+ 'browser navigated to', function() {
|
||||
var future = browser.navigateTo("http://server/#/hashPath");
|
||||
expect(future.name).toEqual("Navigate to: http://server/#/hashPath");
|
||||
executeFuture(future, '<input type="text" name="name" />');
|
||||
expect(browser.location.toEqual("http://server/#/hashPath"))
|
||||
.toEqual(true);
|
||||
expect(browser.location.toEqual("http://server/"))
|
||||
.toEqual(false);
|
||||
|
||||
future = browser.navigateTo("http://server/");
|
||||
expect(future.name).toEqual("Navigate to: http://server/");
|
||||
executeFuture(future, '<input type="text" name="name" />');
|
||||
expect(browser.location.toEqual("http://server/"))
|
||||
.toEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('repeater', function() {
|
||||
|
||||
var repeater = angular.scenario.dsl.repeater;
|
||||
|
|
@ -125,7 +159,7 @@ describe("DSL", function() {
|
|||
expect(future.fulfilled).toBeTruthy();
|
||||
}
|
||||
it('should find elements on the page and provide jquery api', function() {
|
||||
var future = element('.reports-detail');
|
||||
var future = element('.reports-detail').find();
|
||||
expect(future.name).toEqual("Find element '.reports-detail'");
|
||||
timeTravel(future);
|
||||
expect(future.value.text()).
|
||||
|
|
@ -134,11 +168,18 @@ describe("DSL", function() {
|
|||
toEqual('Description : Details...');
|
||||
});
|
||||
it('should find elements with angular syntax', function() {
|
||||
var future = element('{{report.description}}');
|
||||
var future = element('{{report.description}}').find();
|
||||
expect(future.name).toEqual("Find element '{{report.description}}'");
|
||||
timeTravel(future);
|
||||
expect(future.value.text()).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("Click element '.link-class'");
|
||||
executeFuture(future, html, function(value) { future.fulfill(value); });
|
||||
expect(future.fulfilled).toBeTruthy();
|
||||
// TODO(rajat): look for some side effect from click happening?
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue