aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVojta Jina2011-10-24 15:22:34 -0700
committerVojta Jina2011-10-26 15:58:59 -0700
commitdc8ffa51b7ebe5fb9bc1c89087c8b3c9e65d1006 (patch)
tree0a42ed953901cd36504942d0c3c74e213e138b60
parentd7ba5bc83ba9a8937384ea677331c5156ed6772d (diff)
downloadangular.js-dc8ffa51b7ebe5fb9bc1c89087c8b3c9e65d1006.tar.bz2
fix(scenario.dsl): Fix dsl for $location
New $location does not have hashSearch, hashPath. The old dsl was mixing $location / window.location so this solves the problem as well...
-rw-r--r--src/markups.js4
-rw-r--r--src/scenario/dsl.js61
-rw-r--r--test/scenario/dslSpec.js63
3 files changed, 82 insertions, 46 deletions
diff --git a/src/markups.js b/src/markups.js
index 75329169..b7761857 100644
--- a/src/markups.js
+++ b/src/markups.js
@@ -187,7 +187,7 @@ angularTextMarkup('option', function(text, textNode, parentElement){
expect(element('#link-3').attr('href')).toBe("/123");
element('#link-3').click();
- expect(browser().location().path()).toEqual('/123');
+ expect(browser().window().path()).toEqual('/123');
});
it('should execute ng:click but not reload when href empty string and name specified', function() {
@@ -207,7 +207,7 @@ angularTextMarkup('option', function(text, textNode, parentElement){
expect(element('#link-6').attr('href')).toBe("/6");
element('#link-6').click();
- expect(browser().location().path()).toEqual('/6');
+ expect(browser().window().path()).toEqual('/6');
});
</doc:scenario>
</doc:example>
diff --git a/src/scenario/dsl.js b/src/scenario/dsl.js
index e0af0c8c..db81dd35 100644
--- a/src/scenario/dsl.js
+++ b/src/scenario/dsl.js
@@ -34,11 +34,14 @@ angular.scenario.dsl('sleep', function() {
* browser().navigateTo(url) Loads the url into the frame
* browser().navigateTo(url, fn) where fn(url) is called and returns the URL to navigate to
* browser().reload() refresh the page (reload the same URL)
- * browser().location().href() the full URL of the page
- * browser().location().hash() the full hash in the url
- * browser().location().path() the full path in the url
- * browser().location().hashSearch() the hashSearch Object from angular
- * browser().location().hashPath() the hashPath string from angular
+ * browser().window.href() window.location.href
+ * browser().window.path() window.location.pathname
+ * browser().window.search() window.location.search
+ * browser().window.hash() window.location.hash without # prefix
+ * browser().location().url() see angular.service.$location#url
+ * browser().location().path() see angular.service.$location#path
+ * browser().location().search() see angular.service.$location#search
+ * browser().location().hash() see angular.service.$location#hash
*/
angular.scenario.dsl('browser', function() {
var chain = {};
@@ -65,42 +68,60 @@ angular.scenario.dsl('browser', function() {
});
};
- chain.location = function() {
+ chain.window = function() {
var api = {};
api.href = function() {
- return this.addFutureAction('browser url', function($window, $document, done) {
+ return this.addFutureAction('window.location.href', function($window, $document, done) {
done(null, $window.location.href);
});
};
+ api.path = function() {
+ return this.addFutureAction('window.location.path', function($window, $document, done) {
+ done(null, $window.location.pathname);
+ });
+ };
+
+ api.search = function() {
+ return this.addFutureAction('window.location.search', function($window, $document, done) {
+ done(null, $window.location.search);
+ });
+ };
+
api.hash = function() {
- return this.addFutureAction('browser url hash', function($window, $document, done) {
+ return this.addFutureAction('window.location.hash', function($window, $document, done) {
done(null, $window.location.hash.replace('#', ''));
});
};
- api.path = function() {
- return this.addFutureAction('browser url path', function($window, $document, done) {
- done(null, $window.location.pathname);
+ return api;
+ };
+
+ chain.location = function() {
+ var api = {};
+
+ api.url = function() {
+ return this.addFutureAction('$location.url()', function($window, $document, done) {
+ done(null, $window.angular.scope().$service('$location').url());
});
};
- api.search = function() {
- return this.addFutureAction('browser url search', function($window, $document, done) {
- done(null, $window.angular.scope().$service('$location').search);
+ api.path = function() {
+ return this.addFutureAction('$location.path()', function($window, $document, done) {
+ done(null, $window.angular.scope().$service('$location').path());
});
};
- api.hashSearch = function() {
- return this.addFutureAction('browser url hash search', function($window, $document, done) {
- done(null, $window.angular.scope().$service('$location').hashSearch);
+ api.search = function() {
+ return this.addFutureAction('$location.search()', function($window, $document, done) {
+ done(null, $window.angular.scope().$service('$location').search());
});
};
- api.hashPath = function() {
- return this.addFutureAction('browser url hash path', function($window, $document, done) {
- done(null, $window.angular.scope().$service('$location').hashPath);
+ api.hash = function() {
+ return this.addFutureAction('$location.hash()', function($window, $document, done) {
+ done(null, $window.angular.scope().$service('$location').hash());
});
};
diff --git a/test/scenario/dslSpec.js b/test/scenario/dslSpec.js
index a6e80901..32d7ebb6 100644
--- a/test/scenario/dslSpec.js
+++ b/test/scenario/dslSpec.js
@@ -123,7 +123,7 @@ describe("angular.scenario.dsl", function() {
});
});
- describe('Location', function() {
+ describe('window', function() {
beforeEach(function() {
$window.location = {
href: 'http://myurl/some/path?foo=10#/bar?x=2',
@@ -131,51 +131,66 @@ describe("angular.scenario.dsl", function() {
search: '?foo=10',
hash: '#bar?x=2'
};
+ });
+
+ it('should return full URL for href', function() {
+ $root.dsl.browser().window().href();
+ expect($root.futureResult).toEqual($window.location.href);
+ });
+
+ it('should return the pathname', function() {
+ $root.dsl.browser().window().path();
+ expect($root.futureResult).toEqual($window.location.pathname);
+ });
+
+ it('should return the search part', function() {
+ $root.dsl.browser().window().search();
+ expect($root.futureResult).toEqual($window.location.search);
+ });
+
+ it('should return the hash without the #', function() {
+ $root.dsl.browser().window().hash();
+ expect($root.futureResult).toEqual('bar?x=2');
+ });
+ });
+
+ describe('location', function() {
+ beforeEach(function() {
$window.angular.scope = function() {
return {
$service: function(serviceId) {
if (serviceId == '$location') {
return {
- hashSearch: {x: 2},
- hashPath: '/bar',
- search: {foo: 10}
+ url: function() {return '/path?search=a#hhh';},
+ path: function() {return '/path';},
+ search: function() {return {search: 'a'};},
+ hash: function() {return 'hhh';}
};
- } else {
- throw new Error('unknown service id ' + serviceId);
}
+ throw new Error('unknown service id ' + serviceId);
}
};
};
});
- it('should return full URL for href', function() {
- $root.dsl.browser().location().href();
- expect($root.futureResult).toEqual($window.location.href);
+ it('should return full url', function() {
+ $root.dsl.browser().location().url();
+ expect($root.futureResult).toEqual('/path?search=a#hhh');
});
it('should return the pathname', function() {
$root.dsl.browser().location().path();
- expect($root.futureResult).toEqual($window.location.pathname);
- });
-
- it('should return the hash without the #', function() {
- $root.dsl.browser().location().hash();
- expect($root.futureResult).toEqual('bar?x=2');
+ expect($root.futureResult).toEqual('/path');
});
it('should return the query string as an object', function() {
$root.dsl.browser().location().search();
- expect($root.futureResult).toEqual({foo: 10});
+ expect($root.futureResult).toEqual({search: 'a'});
});
- it('should return the hashSearch as an object', function() {
- $root.dsl.browser().location().hashSearch();
- expect($root.futureResult).toEqual({x: 2});
- });
-
- it('should return the hashPath', function() {
- $root.dsl.browser().location().hashPath();
- expect($root.futureResult).toEqual('/bar');
+ it('should return the hash without the #', function() {
+ $root.dsl.browser().location().hash();
+ expect($root.futureResult).toEqual('hhh');
});
});
});