fix($location): links without path segment should not change the path

Closes #648
This commit is contained in:
Vojta Jina
2011-11-10 11:11:43 -08:00
committed by Misko Hevery
parent 8fe77b69e8
commit 5279de0e70
2 changed files with 30 additions and 2 deletions

View File

@@ -238,8 +238,9 @@ LocationUrl.prototype = LocationHashbangUrl.prototype = {
return this.$$url;
var match = PATH_MATCH.exec(url);
this.path(decodeURIComponent(match[1] || '')).search(match[3] || '')
.hash(match[5] || '', replace);
if (match[1]) this.path(decodeURIComponent(match[1]));
if (match[2] || match[1]) this.search(match[3] || '');
this.hash(match[5] || '', replace);
return this;
},

View File

@@ -95,6 +95,33 @@ describe('$location', function() {
});
it('url() should change only hash when no search and path specified', function() {
url.url('#some-hash');
expect(url.hash()).toBe('some-hash');
expect(url.url()).toBe('/path/b?search=a&b=c&d#some-hash');
expect(url.absUrl()).toBe('http://www.domain.com:9877/path/b?search=a&b=c&d#some-hash');
});
it('url() should change only search and hash when no path specified', function() {
url.url('?a=b');
expect(url.search()).toEqual({a: 'b'});
expect(url.hash()).toBe('');
expect(url.path()).toBe('/path/b');
});
it('url() should reset search and hash when only path specified', function() {
url.url('/new/path');
expect(url.path()).toBe('/new/path');
expect(url.search()).toEqual({});
expect(url.hash()).toBe('');
});
it('replace should set $$replace flag and return itself', function() {
expect(url.$$replace).toBe(false);