feat(router): add `back()` support to `MockLocationStrategy`
This commit is contained in:
parent
209aefee57
commit
60f38eab78
|
@ -31,4 +31,12 @@ export class MockLocationStrategy extends LocationStrategy {
|
|||
onPopState(fn: (value: any) => void): void { ObservableWrapper.subscribe(this._subject, fn); }
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,5 +83,27 @@ export function main() {
|
|||
.toThrowError(
|
||||
`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); }
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue