diff options
| author | Vojta Jina | 2011-10-24 15:22:34 -0700 |
|---|---|---|
| committer | Vojta Jina | 2011-10-26 15:58:59 -0700 |
| commit | dc8ffa51b7ebe5fb9bc1c89087c8b3c9e65d1006 (patch) | |
| tree | 0a42ed953901cd36504942d0c3c74e213e138b60 | |
| parent | d7ba5bc83ba9a8937384ea677331c5156ed6772d (diff) | |
| download | angular.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.js | 4 | ||||
| -rw-r--r-- | src/scenario/dsl.js | 61 | ||||
| -rw-r--r-- | test/scenario/dslSpec.js | 63 |
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'); }); }); }); |
