ngx-testing-tools
Version:
Makes Angular testing easier
52 lines • 9.54 kB
JavaScript
import { isStandalone } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';
import { provideNoopAnimations } from '@angular/platform-browser/animations';
import { assertInstance } from '../../assertions/assert-instance';
import { shouldCreate } from '../../expectations/should-create';
import { appendSet } from '../../utils/set.util';
import { BaseTestBedFactory } from '../base/base-test-bed-factory';
export class RendererTestBedFactory extends BaseTestBedFactory {
constructor(described, host, options) {
super(described, options);
this.host = host;
this._fixture = null;
const { declarations = [], schemas = [], startDetectChanges = true, noopAnimations = true, noTemplate = false, } = options;
this.startDetectChanges = startDetectChanges;
this.noTemplate = noTemplate;
this.declarations = new Set(declarations);
this.schemas = new Set(schemas);
if (noopAnimations)
this.provide(provideNoopAnimations());
(isStandalone(this.host))
? this.import(this.host)
: this.declare(this.host);
(isStandalone(this.described))
? this.import(this.described)
: this.declare(this.described);
}
get fixture() {
assertInstance(this._fixture, ComponentFixture);
return this._fixture;
}
createHostFixture() {
this._fixture = this.testBed.createComponent(this.host);
}
declare(oneOrManyDeclarations) {
appendSet(this.declarations, oneOrManyDeclarations);
return this;
}
async compile() {
await super.compile();
this.testBed.configureTestingModule({
declarations: [...this.declarations.values()],
schemas: [...this.schemas.values()],
});
if (this.noTemplate)
this.testBed.overrideTemplateUsingTestingModule(this.host, '');
await this.testBed.compileComponents();
}
_shouldCreate() {
shouldCreate(() => this.fixture.componentInstance);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXItdGVzdC1iZWQtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZXN0aW5nLXRvb2xzL3NyYy9saWIvY29tbW9uL3Rlc3QtYmVkcy9yZW5kZXJlci9yZW5kZXJlci10ZXN0LWJlZC1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSW5FLE1BQU0sT0FBZ0Isc0JBS3BCLFNBQVEsa0JBQStDO0lBRXZELFlBQ0UsU0FBOEIsRUFDdEIsSUFBb0IsRUFDNUIsT0FBK0I7UUFFL0IsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUhsQixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQW9DcEIsYUFBUSxHQUErQixJQUFLLENBQUM7UUEvQnJELE1BQU0sRUFDSixZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsRUFBRSxFQUNaLGtCQUFrQixHQUFHLElBQUksRUFDekIsY0FBYyxHQUFHLElBQUksRUFDckIsVUFBVSxHQUFHLEtBQUssR0FDbkIsR0FBRyxPQUFPLENBQUM7UUFFWixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhDLElBQUksY0FBYztZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBRTFELENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQVVELElBQWMsT0FBTztRQUNuQixjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRVMsaUJBQWlCO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFVTSxPQUFPLENBQUMscUJBQThDO1FBQzNELFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRWUsS0FBSyxDQUFDLE9BQU87UUFDM0IsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztZQUNsQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEYsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVlLGFBQWE7UUFDM0IsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0YW5kYWxvbmUsIFNjaGVtYU1ldGFkYXRhLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IHByb3ZpZGVOb29wQW5pbWF0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBhc3NlcnRJbnN0YW5jZSB9IGZyb20gJy4uLy4uL2Fzc2VydGlvbnMvYXNzZXJ0LWluc3RhbmNlJztcbmltcG9ydCB7IHNob3VsZENyZWF0ZSB9IGZyb20gJy4uLy4uL2V4cGVjdGF0aW9ucy9zaG91bGQtY3JlYXRlJztcbmltcG9ydCB7IE1heWJlQXJyYXkgfSBmcm9tICcuLi8uLi9zaGFyZWQubW9kZWxzJztcbmltcG9ydCB7IEJhc2VUb29scyB9IGZyb20gJy4uLy4uL3Rvb2xzL2Jhc2UvbW9kZWxzL2Jhc2UtdG9vbHMubW9kZWwnO1xuaW1wb3J0IHsgSW5qZWN0aW9uU3RvcmUgfSBmcm9tICcuLi8uLi90b29scy9zdG9yZS9tb2RlbHMvaW5qZWN0ZWQtc3RvcmUubW9kZWwnO1xuaW1wb3J0IHsgYXBwZW5kU2V0IH0gZnJvbSAnLi4vLi4vdXRpbHMvc2V0LnV0aWwnO1xuaW1wb3J0IHsgQmFzZVRlc3RCZWRGYWN0b3J5IH0gZnJvbSAnLi4vYmFzZS9iYXNlLXRlc3QtYmVkLWZhY3RvcnknO1xuaW1wb3J0IHsgRGVjbGFyYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvbWV0YWRhdGEtdHlwZS5tb2RlbHMnO1xuaW1wb3J0IHsgUmVuZGVyZXJUZXN0QmVkT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzL3JlbmRlcmVyLXRlc3QtYmVkLW9wdGlvbnMubW9kZWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVuZGVyZXJUZXN0QmVkRmFjdG9yeTxcbiAgRGVzY3JpYmVkVHlwZSxcbiAgU3RvcmUgZXh0ZW5kcyBJbmplY3Rpb25TdG9yZSA9IEluamVjdGlvblN0b3JlLFxuICBUb29scyBleHRlbmRzIEJhc2VUb29scyA9IEJhc2VUb29scyxcbiAgSG9zdFR5cGUgPSBEZXNjcmliZWRUeXBlLFxuPiBleHRlbmRzIEJhc2VUZXN0QmVkRmFjdG9yeTxEZXNjcmliZWRUeXBlLCBTdG9yZSwgVG9vbHM+IHtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgZGVzY3JpYmVkOiBUeXBlPERlc2NyaWJlZFR5cGU+LFxuICAgIHByaXZhdGUgaG9zdDogVHlwZTxIb3N0VHlwZT4sXG4gICAgb3B0aW9uczogUmVuZGVyZXJUZXN0QmVkT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIoZGVzY3JpYmVkLCBvcHRpb25zKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGRlY2xhcmF0aW9ucyA9IFtdLFxuICAgICAgc2NoZW1hcyA9IFtdLFxuICAgICAgc3RhcnREZXRlY3RDaGFuZ2VzID0gdHJ1ZSxcbiAgICAgIG5vb3BBbmltYXRpb25zID0gdHJ1ZSxcbiAgICAgIG5vVGVtcGxhdGUgPSBmYWxzZSxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIHRoaXMuc3RhcnREZXRlY3RDaGFuZ2VzID0gc3RhcnREZXRlY3RDaGFuZ2VzO1xuICAgIHRoaXMubm9UZW1wbGF0ZSA9IG5vVGVtcGxhdGU7XG5cbiAgICB0aGlzLmRlY2xhcmF0aW9ucyA9IG5ldyBTZXQoZGVjbGFyYXRpb25zKTtcbiAgICB0aGlzLnNjaGVtYXMgPSBuZXcgU2V0KHNjaGVtYXMpO1xuXG4gICAgaWYgKG5vb3BBbmltYXRpb25zKSB0aGlzLnByb3ZpZGUocHJvdmlkZU5vb3BBbmltYXRpb25zKCkpO1xuXG4gICAgKGlzU3RhbmRhbG9uZSh0aGlzLmhvc3QpKVxuICAgICAgPyB0aGlzLmltcG9ydCh0aGlzLmhvc3QpXG4gICAgICA6IHRoaXMuZGVjbGFyZSh0aGlzLmhvc3QpO1xuXG4gICAgKGlzU3RhbmRhbG9uZSh0aGlzLmRlc2NyaWJlZCkpXG4gICAgICA/IHRoaXMuaW1wb3J0KHRoaXMuZGVzY3JpYmVkKVxuICAgICAgOiB0aGlzLmRlY2xhcmUodGhpcy5kZXNjcmliZWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXJ0RGV0ZWN0Q2hhbmdlczogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vVGVtcGxhdGU6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGRlY2xhcmF0aW9uczogU2V0PERlY2xhcmF0aW9uPjtcbiAgcHJvdGVjdGVkIHNjaGVtYXM6IFNldDxTY2hlbWFNZXRhZGF0YT47XG5cbiAgcHJvdGVjdGVkIF9maXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPEhvc3RUeXBlPiA9IG51bGwhO1xuXG4gIHByb3RlY3RlZCBnZXQgZml4dHVyZSgpOiBDb21wb25lbnRGaXh0dXJlPEhvc3RUeXBlPiB7XG4gICAgYXNzZXJ0SW5zdGFuY2UodGhpcy5fZml4dHVyZSwgQ29tcG9uZW50Rml4dHVyZSk7XG4gICAgcmV0dXJuIHRoaXMuX2ZpeHR1cmU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlSG9zdEZpeHR1cmUoKTogdm9pZCB7XG4gICAgdGhpcy5fZml4dHVyZSA9IHRoaXMudGVzdEJlZC5jcmVhdGVDb21wb25lbnQodGhpcy5ob3N0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNsYXJlcyBvbmUgbm9uLXN0YW5kYWxvbmUgY29tcG9uZW50LCBkaXJlY3RpdmUgb3IgcGlwZSBpbnRvIHRoZSBjdXN0b20gdGVzdCBiZWQuXG4gICAqL1xuICBwdWJsaWMgZGVjbGFyZShkZWNsYXJhdGlvbjogRGVjbGFyYXRpb24pOiB0aGlzXG4gIC8qKlxuICAgKiBEZWNsYXJlcyBtYW55IG5vbi1zdGFuZGFsb25lIGNvbXBvbmVudHMsIGRpcmVjdGl2ZXMgYW5kIHBpcGVzIGludG8gdGhlIGN1c3RvbSB0ZXN0IGJlZC5cbiAgICovXG4gIHB1YmxpYyBkZWNsYXJlKGRlY2xhcmF0aW9uczogRGVjbGFyYXRpb25bXSk6IHRoaXNcbiAgcHVibGljIGRlY2xhcmUob25lT3JNYW55RGVjbGFyYXRpb25zOiBNYXliZUFycmF5PERlY2xhcmF0aW9uPik6IHRoaXMge1xuICAgIGFwcGVuZFNldCh0aGlzLmRlY2xhcmF0aW9ucywgb25lT3JNYW55RGVjbGFyYXRpb25zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBjb21waWxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLmNvbXBpbGUoKTtcbiAgICB0aGlzLnRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgICBkZWNsYXJhdGlvbnM6IFsuLi50aGlzLmRlY2xhcmF0aW9ucy52YWx1ZXMoKV0sXG4gICAgICBzY2hlbWFzOiBbLi4udGhpcy5zY2hlbWFzLnZhbHVlcygpXSxcbiAgICB9KTtcbiAgICBpZiAodGhpcy5ub1RlbXBsYXRlKSB0aGlzLnRlc3RCZWQub3ZlcnJpZGVUZW1wbGF0ZVVzaW5nVGVzdGluZ01vZHVsZSh0aGlzLmhvc3QsICcnKTtcbiAgICBhd2FpdCB0aGlzLnRlc3RCZWQuY29tcGlsZUNvbXBvbmVudHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBfc2hvdWxkQ3JlYXRlKCk6IHZvaWQge1xuICAgIHNob3VsZENyZWF0ZSgoKSA9PiB0aGlzLmZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2UpO1xuICB9XG59XG4iXX0=