feat(router): add `back()` support to `MockLocationStrategy`

This commit is contained in:
Matias Niemelä 2015-07-28 23:19:56 -04:00
parent 209aefee57
commit 60f38eab78
2 changed files with 30 additions and 0 deletions

View File

@ -31,4 +31,12 @@ export class MockLocationStrategy extends LocationStrategy {
onPopState(fn: (value: any) => void): void { ObservableWrapper.subscribe(this._subject, fn); } onPopState(fn: (value: any) => void): void { ObservableWrapper.subscribe(this._subject, fn); }
getBaseHref(): string { return this.internalBaseHref; } getBaseHref(): string { return this.internalBaseHref; }
back(): void {
if (this.urlChanges.length > 0) {
this.urlChanges.pop();
var nextUrl = this.urlChanges.length > 0 ? this.urlChanges[this.urlChanges.length - 1] : '';
this.simulatePopState(nextUrl);
}
}
} }

View File

@ -83,5 +83,27 @@ export function main() {
.toThrowError( .toThrowError(
`No base href set. Either provide a binding to "appBaseHrefToken" or add a base element.`); `No base href set. Either provide a binding to "appBaseHrefToken" or add a base element.`);
}); });
it('should revert to the previous path when a back() operation is executed', () => {
var locationStrategy = new MockLocationStrategy();
var location = new Location(locationStrategy);
location.go('/ready');
assertUrl('/ready');
location.go('/ready/set');
assertUrl('/ready/set');
location.go('/ready/set/go');
assertUrl('/ready/set/go');
location.back();
assertUrl('/ready/set');
location.back();
assertUrl('/ready');
function assertUrl(path) { expect(location.path()).toEqual(path); }
});
}); });
} }