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); }
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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); }
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue