UNPKG

@ngx-formly/core

Version:

Formly is a dynamic (JSON powered) form library for Angular that bring unmatched maintainability to your application's forms.

88 lines (84 loc) 3.83 kB
import { TestBed } from '@angular/core/testing'; import * as i0 from '@angular/core'; import { Component } from '@angular/core'; import * as i1 from '@ngx-formly/core'; import { FormlyModule, FormlyFormBuilder } from '@ngx-formly/core'; import { ReactiveFormsModule } from '@angular/forms'; import { By } from '@angular/platform-browser'; function setInputs(fixture, inputs, detectChanges = true) { Object.keys(inputs).forEach((input) => { fixture.componentInstance[input] = inputs[input]; }); if (detectChanges !== false) { fixture.detectChanges(); } } function createComponent({ template, inputs, config, detectChanges, imports, declarations, providers, }) { TestBed.configureTestingModule({ declarations: [TestComponent, ...(declarations || [])], imports: [ReactiveFormsModule, FormlyModule.forRoot(config), ...(imports || [])], providers: providers || [], teardown: { destroyAfterEach: false }, }).overrideComponent(TestComponent, { set: { template, inputs: Object.keys(inputs), }, }); const fixture = TestBed.createComponent(TestComponent); Object.keys(inputs).forEach((input) => { fixture.componentInstance[input] = inputs[input]; }); setInputs(fixture, inputs, detectChanges); const utils = { fixture, detectChanges: () => fixture.detectChanges(), setInputs: (props) => setInputs(fixture, props), query: (selector) => fixture.debugElement.query(By.css(selector)), queryAll: (selector) => fixture.debugElement.queryAll(By.css(selector)), }; Object.keys(inputs).forEach((input) => { Object.defineProperty(utils, input, { get: () => fixture.componentInstance[input], }); }); return utils; } function createFieldComponent(field, config = {}) { const model = (field === null || field === void 0 ? void 0 : field.model) || {}; const options = (field === null || field === void 0 ? void 0 : field.options) || {}; field === null || field === void 0 ? true : delete field.model; field === null || field === void 0 ? true : delete field.options; const utils = createComponent(Object.assign(Object.assign({ template: '<formly-field [field]="field"></formly-field>', inputs: { field } }, config), { detectChanges: false })); const builder = utils.fixture.componentRef.instance.builder; builder.build({ model, options, fieldGroup: [field] }); utils.detectChanges(); const setInputs = utils.setInputs; utils.setInputs = (props) => { if (props.field) { builder.build(props.field); } setInputs(props); }; return utils; } class TestComponent { constructor(builder) { this.builder = builder; } } TestComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestComponent, deps: [{ token: i1.FormlyFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); TestComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TestComponent, selector: "formly-test-component", providers: [FormlyFormBuilder], ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestComponent, decorators: [{ type: Component, args: [{ selector: 'formly-test-component', template: '', providers: [FormlyFormBuilder], }] }], ctorParameters: function () { return [{ type: i1.FormlyFormBuilder }]; } }); /** * Generated bundle index. Do not edit. */ export { createComponent, createFieldComponent }; //# sourceMappingURL=ngx-formly-core-testing.mjs.map