@dbg-riskit/angular-testing
Version:
79 lines • 9.29 kB
JavaScript
import { EventEmitter, Injectable } from '@angular/core';
import { NavigationEnd, UrlSegment, UrlSegmentGroup } from '@angular/router';
import * as i0 from "@angular/core";
export class Snapshot {
constructor(stub) {
this.stub = stub;
}
get url() {
return this.stub.getCurrentURL();
}
}
// @dynamic
export class RouterStub {
constructor() {
this.id = 0;
this.navigated = true;
this.currentUrlTree = this.createUrlTree(['/dashboard']);
this.routerState = {
snapshot: new Snapshot(this)
};
this.events = new EventEmitter();
}
getURLTree(url) {
if (Array.isArray(url)) {
return this.createUrlTree(url);
}
if (url instanceof Object) {
return url;
}
return this.createUrlTree(url.split('/'));
}
navigateByUrl(url) {
this.currentUrlTree = this.getURLTree(url);
this.emitNavigate();
return url;
}
navigate(commands, extras) {
this.currentUrlTree = this.getURLTree(commands);
this.emitNavigate();
return [commands, extras];
}
emitNavigate() {
this.id++;
const urlString = this.getCurrentURL();
this.events.emit(new NavigationEnd(this.id, urlString, urlString));
}
isActive(url) {
return this.getCurrentURL().indexOf(RouterStub.serializeUrl(url)) !== -1;
}
getCurrentURL() {
return RouterStub.serializeUrl(this.currentUrlTree);
}
createUrlTree(commands, extras) {
const _b = extras || {};
const queryParams = _b.queryParams || {};
const fragment = _b.fragment || '';
return {
root: new UrlSegmentGroup(commands.map((command) => {
return new UrlSegment(command, {});
}), {}),
queryParams,
fragment,
queryParamMap: {
...new Map(),
getAll: () => [],
keys: []
}
};
}
static serializeUrl(url) {
return url.root.segments.map((segment) => segment.path).join('/');
}
}
RouterStub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: RouterStub, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
RouterStub.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: RouterStub });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: RouterStub, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnN0dWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLXRlc3Rpbmcvc3JjL2xpYi9zdHVicy9yb3V0ZXIvcm91dGVyLnN0dWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBb0IsVUFBVSxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDOztBQUV0RyxNQUFNLE9BQU8sUUFBUTtJQUVqQixZQUEyQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQzNDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUNKO0FBRUQsV0FBVztBQUVYLE1BQU0sT0FBTyxVQUFVO0lBRHZCO1FBR1ksT0FBRSxHQUFHLENBQUMsQ0FBQztRQUVSLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFaEIsbUJBQWMsR0FBWSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUU5RCxnQkFBVyxHQUFHO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDL0IsQ0FBQztRQUVLLFdBQU0sR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7S0E2RGxGO0lBM0RVLFVBQVUsQ0FBQyxHQUE2QjtRQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQVksQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxHQUFHLFlBQVksTUFBTSxFQUFFO1lBQ3ZCLE9BQU8sR0FBYyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFFLEdBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sYUFBYSxDQUFDLEdBQXFCO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sUUFBUSxDQUFDLFFBQWUsRUFBRSxNQUF5QjtRQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVNLGFBQWE7UUFDaEIsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQWUsRUFBRSxNQUF5QjtRQUMzRCxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ25DLE9BQU87WUFDSCxJQUFJLEVBQVcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUM3RCxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUCxXQUFXO1lBQ1gsUUFBUTtZQUNSLGFBQWEsRUFBRTtnQkFDWCxHQUFHLElBQUksR0FBRyxFQUFFO2dCQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNoQixJQUFJLEVBQUksRUFBRTthQUNiO1NBQ0osQ0FBQztJQUNOLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVk7UUFDbkMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFtQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7O3VHQXhFUSxVQUFVOzJHQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkV4dHJhcywgVXJsU2VnbWVudCwgVXJsU2VnbWVudEdyb3VwLCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5leHBvcnQgY2xhc3MgU25hcHNob3Qge1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgc3R1YjogUm91dGVyU3R1Yikge1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0dWIuZ2V0Q3VycmVudFVSTCgpO1xuICAgIH1cbn1cblxuLy8gQGR5bmFtaWNcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSb3V0ZXJTdHViIHtcblxuICAgIHByaXZhdGUgaWQgPSAwO1xuXG4gICAgcHVibGljIG5hdmlnYXRlZCA9IHRydWU7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRVcmxUcmVlOiBVcmxUcmVlID0gdGhpcy5jcmVhdGVVcmxUcmVlKFsnL2Rhc2hib2FyZCddKTtcblxuICAgIHB1YmxpYyByb3V0ZXJTdGF0ZSA9IHtcbiAgICAgICAgc25hcHNob3Q6IG5ldyBTbmFwc2hvdCh0aGlzKVxuICAgIH07XG5cbiAgICBwdWJsaWMgZXZlbnRzOiBFdmVudEVtaXR0ZXI8TmF2aWdhdGlvbkVuZD4gPSBuZXcgRXZlbnRFbWl0dGVyPE5hdmlnYXRpb25FbmQ+KCk7XG5cbiAgICBwdWJsaWMgZ2V0VVJMVHJlZSh1cmw6IHN0cmluZyB8IFVybFRyZWUgfCBhbnlbXSk6IFVybFRyZWUge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh1cmwpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmxUcmVlKHVybCBhcyBhbnlbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXJsIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsIGFzIFVybFRyZWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmxUcmVlKCh1cmwgYXMgc3RyaW5nKS5zcGxpdCgnLycpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmF2aWdhdGVCeVVybCh1cmw6IHN0cmluZyB8IFVybFRyZWUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VXJsVHJlZSA9IHRoaXMuZ2V0VVJMVHJlZSh1cmwpO1xuICAgICAgICB0aGlzLmVtaXROYXZpZ2F0ZSgpO1xuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZShjb21tYW5kczogYW55W10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VXJsVHJlZSA9IHRoaXMuZ2V0VVJMVHJlZShjb21tYW5kcyk7XG4gICAgICAgIHRoaXMuZW1pdE5hdmlnYXRlKCk7XG4gICAgICAgIHJldHVybiBbY29tbWFuZHMsIGV4dHJhc107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0TmF2aWdhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaWQrKztcbiAgICAgICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5nZXRDdXJyZW50VVJMKCk7XG4gICAgICAgIHRoaXMuZXZlbnRzLmVtaXQobmV3IE5hdmlnYXRpb25FbmQodGhpcy5pZCwgdXJsU3RyaW5nLCB1cmxTdHJpbmcpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBY3RpdmUodXJsOiBVcmxUcmVlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRVUkwoKS5pbmRleE9mKFJvdXRlclN0dWIuc2VyaWFsaXplVXJsKHVybCkpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFVSTCgpIHtcbiAgICAgICAgcmV0dXJuIFJvdXRlclN0dWIuc2VyaWFsaXplVXJsKHRoaXMuY3VycmVudFVybFRyZWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVVcmxUcmVlKGNvbW1hbmRzOiBhbnlbXSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFVybFRyZWUge1xuICAgICAgICBjb25zdCBfYiA9IGV4dHJhcyB8fCB7fTtcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBfYi5xdWVyeVBhcmFtcyB8fCB7fTtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBfYi5mcmFnbWVudCB8fCAnJztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJvb3QgICAgICAgICA6IG5ldyBVcmxTZWdtZW50R3JvdXAoY29tbWFuZHMubWFwKChjb21tYW5kOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVybFNlZ21lbnQoY29tbWFuZCwge30pO1xuICAgICAgICAgICAgfSksIHt9KSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgZnJhZ21lbnQsXG4gICAgICAgICAgICBxdWVyeVBhcmFtTWFwOiB7XG4gICAgICAgICAgICAgICAgLi4ubmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIGdldEFsbDogKCkgPT4gW10sXG4gICAgICAgICAgICAgICAga2V5cyAgOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2VyaWFsaXplVXJsKHVybDogVXJsVHJlZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB1cmwucm9vdC5zZWdtZW50cy5tYXAoKHNlZ21lbnQ6IFVybFNlZ21lbnQpID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpO1xuICAgIH1cbn1cbiJdfQ==