UNPKG

@orchestrator/ngx-testing

Version:
121 lines 12.6 kB
import { __awaiter, __generator } from "tslib"; import { Compiler, } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { HostGeneratorService } from './host-generator.service'; import { TestTypeToken } from './tokens'; var Host = /** @class */ (function () { function Host(injector) { this.injector = injector; this.hostGeneratorService = this.injector.get(HostGeneratorService); this.componentType = this.injector.get(TestTypeToken); this.hostComponentType = this.hostGeneratorService.generate(); this.compiler = this.injector.get(Compiler); this._didCompilation = false; } Object.defineProperty(Host.prototype, "fixture", { get: function () { return this._fixture; }, enumerable: true, configurable: true }); Object.defineProperty(Host.prototype, "hostElement", { get: function () { return this._fixture.debugElement; }, enumerable: true, configurable: true }); Object.defineProperty(Host.prototype, "hostHtmlElement", { get: function () { return this._fixture.nativeElement; }, enumerable: true, configurable: true }); Object.defineProperty(Host.prototype, "hostComponent", { get: function () { return this._fixture.componentInstance; }, enumerable: true, configurable: true }); Host.prototype.ngOnDestroy = function () { if (this._fixture) { try { this._fixture.destroy(); } catch (_a) { } } }; Host.prototype.compileComponents = function () { return __awaiter(this, void 0, void 0, function () { var hostModule; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!!this._didCompilation) return [3 /*break*/, 3]; this._didCompilation = true; hostModule = this.hostGeneratorService.generateModuleFor(this.hostComponentType); return [4 /*yield*/, this.compiler.compileModuleAndAllComponentsAsync(hostModule)]; case 1: _a.sent(); return [4 /*yield*/, TestBed.compileComponents()]; case 2: return [2 /*return*/, _a.sent()]; case 3: return [2 /*return*/]; } }); }); }; Host.prototype.createComponent = function (inputs, detectChanges) { if (detectChanges === void 0) { detectChanges = false; } return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.compileComponents()]; case 1: _a.sent(); this._fixture = TestBed.createComponent(this.hostComponentType); if (inputs) { this.setInputs(inputs); } if (detectChanges) { this.detectChanges(); } return [2 /*return*/, this._fixture]; } }); }); }; Host.prototype.setInputs = function (inputs, detectChanges) { if (detectChanges === void 0) { detectChanges = false; } Object.assign(this.hostComponent, inputs); if (detectChanges) { this.detectChanges(); } }; Host.prototype.overrideHostTemplate = function (tpl) { TestBed.overrideTemplate(this.hostComponentType, tpl); }; Host.prototype.detectChanges = function (checkNoChanges) { this._fixture.detectChanges(checkNoChanges); }; Host.prototype.query = function (compOrDir) { return this.hostElement.query(By.directive(compOrDir)); }; Host.prototype.queryComponent = function (compOrDir) { var elem = this.query(compOrDir); return elem ? elem.componentInstance : undefined; }; Host.prototype.queryComponentHtml = function (compOrDir) { var elem = this.query(compOrDir); return elem ? elem.nativeElement : undefined; }; Host.prototype.queryCss = function (css) { return this.hostElement.query(By.css(css)); }; return Host; }()); export { Host }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BvcmNoZXN0cmF0b3Ivbmd4LXRlc3RpbmcvIiwic291cmNlcyI6WyJsaWIvaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFFBQVEsR0FLVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9CLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3pDO0lBMkJFLGNBQXNCLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUExQmhDLHlCQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFOUQsa0JBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxzQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFLLENBQUM7UUFrQjdELGFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUd2QyxvQkFBZSxHQUFHLEtBQUssQ0FBQztJQUVXLENBQUM7SUFyQjVDLHNCQUFJLHlCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBVzthQUFmO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGlDQUFlO2FBQW5CO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUNyQyxDQUFDOzs7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LElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0gsV0FBQztBQUFELENBQUMsQUF0R0QsSUFzR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21waWxlcixcbiAgRGVidWdFbGVtZW50LFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEZpeHR1cmUsIFRlc3RCZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgQnkgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgSG9zdEdlbmVyYXRvclNlcnZpY2UgfSBmcm9tICcuL2hvc3QtZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVzdFR5cGVUb2tlbiB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IEFzSG9zdENvbXBvbmVudCwgQ29tcG9uZW50SW5wdXRzLCBEZWJ1Z0VsZW1lbnRUeXBlZCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSG9zdDxUID0gYW55PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgaG9zdEdlbmVyYXRvclNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChIb3N0R2VuZXJhdG9yU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgY29tcG9uZW50VHlwZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRlc3RUeXBlVG9rZW4pO1xuICByZWFkb25seSBob3N0Q29tcG9uZW50VHlwZSA9IHRoaXMuaG9zdEdlbmVyYXRvclNlcnZpY2UuZ2VuZXJhdGU8VD4oKTtcblxuICBnZXQgZml4dHVyZSgpOiBDb21wb25lbnRGaXh0dXJlPEFzSG9zdENvbXBvbmVudDxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9maXh0dXJlO1xuICB9XG5cbiAgZ2V0IGhvc3RFbGVtZW50KCk6IERlYnVnRWxlbWVudFR5cGVkPEFzSG9zdENvbXBvbmVudDxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9maXh0dXJlLmRlYnVnRWxlbWVudDtcbiAgfVxuXG4gIGdldCBob3N0SHRtbEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9maXh0dXJlLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBnZXQgaG9zdENvbXBvbmVudCgpOiBBc0hvc3RDb21wb25lbnQ8VD4ge1xuICAgIHJldHVybiB0aGlzLl9maXh0dXJlLmNvbXBvbmVudEluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21waWxlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KENvbXBpbGVyKTtcblxuICBwcml2YXRlIF9maXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPEFzSG9zdENvbXBvbmVudDxUPj47XG4gIHByaXZhdGUgX2RpZENvbXBpbGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZml4dHVyZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fZml4dHVyZS5kZXN0cm95KCk7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY29tcGlsZUNvbXBvbmVudHMoKSB7XG4gICAgaWYgKCF0aGlzLl9kaWRDb21waWxhdGlvbikge1xuICAgICAgdGhpcy5fZGlkQ29tcGlsYXRpb24gPSB0cnVlO1xuXG4gICAgICBjb25zdCBob3N0TW9kdWxlID0gdGhpcy5ob3N0R2VuZXJhdG9yU2VydmljZS5nZW5lcmF0ZU1vZHVsZUZvcihcbiAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50VHlwZSxcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNBc3luYyhob3N0TW9kdWxlKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IFRlc3RCZWQuY29tcGlsZUNvbXBvbmVudHMoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVDb21wb25lbnQoXG4gICAgaW5wdXRzPzogQ29tcG9uZW50SW5wdXRzPFQ+LFxuICAgIGRldGVjdENoYW5nZXMgPSBmYWxzZSxcbiAgKTogUHJvbWlzZTxDb21wb25lbnRGaXh0dXJlPEFzSG9zdENvbXBvbmVudDxUPj4+IHtcbiAgICBhd2FpdCB0aGlzLmNvbXBpbGVDb21wb25lbnRzKCk7XG4gICAgdGhpcy5fZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KHRoaXMuaG9zdENvbXBvbmVudFR5cGUpO1xuXG4gICAgaWYgKGlucHV0cykge1xuICAgICAgdGhpcy5zZXRJbnB1dHMoaW5wdXRzKTtcbiAgICB9XG5cbiAgICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ZpeHR1cmU7XG4gIH1cblxuICBzZXRJbnB1dHMoaW5wdXRzOiBDb21wb25lbnRJbnB1dHM8VD4sIGRldGVjdENoYW5nZXMgPSBmYWxzZSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5ob3N0Q29tcG9uZW50LCBpbnB1dHMpO1xuXG4gICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlSG9zdFRlbXBsYXRlKHRwbDogc3RyaW5nKTogdm9pZCB7XG4gICAgVGVzdEJlZC5vdmVycmlkZVRlbXBsYXRlKHRoaXMuaG9zdENvbXBvbmVudFR5cGUsIHRwbCk7XG4gIH1cblxuICBkZXRlY3RDaGFuZ2VzKGNoZWNrTm9DaGFuZ2VzPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2ZpeHR1cmUuZGV0ZWN0Q2hhbmdlcyhjaGVja05vQ2hhbmdlcyk7XG4gIH1cblxuICBxdWVyeTxDPihjb21wT3JEaXI6IFR5cGU8Qz4pOiBEZWJ1Z0VsZW1lbnRUeXBlZDxDPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmhvc3RFbGVtZW50LnF1ZXJ5KEJ5LmRpcmVjdGl2ZShjb21wT3JEaXIpKTtcbiAgfVxuXG4gIHF1ZXJ5Q29tcG9uZW50PEM+KGNvbXBPckRpcjogVHlwZTxDPik6IEMgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGVsZW0gPSB0aGlzLnF1ZXJ5KGNvbXBPckRpcik7XG4gICAgcmV0dXJuIGVsZW0gPyBlbGVtLmNvbXBvbmVudEluc3RhbmNlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcXVlcnlDb21wb25lbnRIdG1sPEM+KGNvbXBPckRpcjogVHlwZTxDPik6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlbGVtID0gdGhpcy5xdWVyeShjb21wT3JEaXIpO1xuICAgIHJldHVybiBlbGVtID8gZWxlbS5uYXRpdmVFbGVtZW50IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcXVlcnlDc3MoY3NzOiBzdHJpbmcpOiBEZWJ1Z0VsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RWxlbWVudC5xdWVyeShCeS5jc3MoY3NzKSk7XG4gIH1cbn1cbiJdfQ==