UNPKG

@ngx-formly/core

Version:

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

1 lines 7.3 kB
{"version":3,"file":"ngx-formly-core-testing.mjs","sources":["../../../../src/core/testing/src/component-factory.ts","../../../../src/core/testing/src/ngx-formly-core-testing.ts"],"sourcesContent":["import { TestBed, ComponentFixture } from '@angular/core/testing';\nimport { Component, DebugElement, NgModule } from '@angular/core';\nimport { FormlyModule, FormlyFormBuilder, FormlyFieldConfig, ConfigOption } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { By } from '@angular/platform-browser';\n\nfunction setInputs<T>(fixture: ComponentFixture<T>, inputs: T, detectChanges = true) {\n (Object.keys(inputs) as (keyof T)[]).forEach((input) => {\n fixture.componentInstance[input] = inputs[input];\n });\n\n if (detectChanges !== false) {\n fixture.detectChanges();\n }\n}\n\ninterface IComponentOptions<T> extends NgModule {\n template?: string;\n inputs?: T;\n config?: ConfigOption;\n detectChanges?: boolean;\n}\ninterface IFormlyDebugElement<E> extends DebugElement {\n readonly nativeElement: E;\n}\n\nexport function createComponent<T>({\n template,\n inputs,\n config,\n detectChanges,\n imports,\n declarations,\n providers,\n}: IComponentOptions<T>) {\n TestBed.configureTestingModule({\n declarations: [TestComponent, ...(declarations || [])],\n imports: [ReactiveFormsModule, FormlyModule.forRoot(config), ...(imports || [])],\n providers: providers || [],\n teardown: { destroyAfterEach: false },\n }).overrideComponent(TestComponent, {\n set: {\n template,\n inputs: Object.keys(inputs),\n },\n });\n\n const fixture = TestBed.createComponent(TestComponent) as ComponentFixture<T>;\n (Object.keys(inputs) as (keyof T)[]).forEach((input) => {\n fixture.componentInstance[input] = inputs[input];\n });\n\n setInputs(fixture, inputs, detectChanges);\n\n type FixtureUtils = T & {\n fixture: ComponentFixture<T>;\n detectChanges: typeof fixture['detectChanges'];\n setInputs: (inputs: Partial<T>) => void;\n query: <E extends Element = Element>(selector: string) => IFormlyDebugElement<E>;\n queryAll: <E extends Element = Element>(selector: string) => IFormlyDebugElement<E>[];\n };\n\n const utils = {\n fixture,\n detectChanges: () => fixture.detectChanges(),\n setInputs: (props) => setInputs(fixture, props),\n query: (selector: string) => fixture.debugElement.query(By.css(selector)),\n queryAll: (selector: string) => fixture.debugElement.queryAll(By.css(selector)),\n } as FixtureUtils;\n\n (Object.keys(inputs) as (keyof T)[]).forEach((input) => {\n Object.defineProperty(utils, input, {\n get: () => fixture.componentInstance[input],\n });\n });\n\n return utils;\n}\n\nexport function createFieldComponent(\n field: FormlyFieldConfig,\n config: IComponentOptions<{ field: FormlyFieldConfig }> = {},\n) {\n const model = field?.model || {};\n const options = field?.options || {};\n delete (field as any)?.model;\n delete (field as any)?.options;\n\n const utils = createComponent<{ field: FormlyFieldConfig }>({\n template: '<formly-field [field]=\"field\"></formly-field>',\n inputs: { field },\n ...config,\n detectChanges: false,\n });\n const builder = (utils.fixture.componentRef.instance as any).builder;\n builder.build({ model, options, fieldGroup: [field] });\n utils.detectChanges();\n\n const setInputs = utils.setInputs;\n utils.setInputs = (props) => {\n if (props.field) {\n builder.build(props.field);\n }\n\n setInputs(props);\n };\n\n return utils;\n}\n\n@Component({\n selector: 'formly-test-component',\n template: '',\n providers: [FormlyFormBuilder],\n})\nclass TestComponent {\n constructor(public builder?: FormlyFormBuilder) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;AAMA,SAAS,SAAS,CAAI,OAA4B,EAAE,MAAS,EAAE,aAAa,GAAG,IAAI,EAAA;IAChF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;QACrD,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,KAAC,CAAC,CAAC;IAEH,IAAI,aAAa,KAAK,KAAK,EAAE;QAC3B,OAAO,CAAC,aAAa,EAAE,CAAC;AACzB,KAAA;AACH,CAAC;SAYe,eAAe,CAAI,EACjC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,aAAa,EACb,OAAO,EACP,YAAY,EACZ,SAAS,GACY,EAAA;IACrB,OAAO,CAAC,sBAAsB,CAAC;QAC7B,YAAY,EAAE,CAAC,aAAa,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;AACtD,QAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;QAChF,SAAS,EAAE,SAAS,IAAI,EAAE;AAC1B,QAAA,QAAQ,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE;AACtC,KAAA,CAAC,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAClC,QAAA,GAAG,EAAE;YACH,QAAQ;AACR,YAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,SAAA;AACF,KAAA,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,aAAa,CAAwB,CAAC;IAC7E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;QACrD,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,KAAC,CAAC,CAAC;AAEH,IAAA,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AAU1C,IAAA,MAAM,KAAK,GAAG;QACZ,OAAO;AACP,QAAA,aAAa,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE;QAC5C,SAAS,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AAC/C,QAAA,KAAK,EAAE,CAAC,QAAgB,KAAK,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzE,QAAA,QAAQ,EAAE,CAAC,QAAgB,KAAK,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAChE,CAAC;IAEjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACrD,QAAA,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE;YAClC,GAAG,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC5C,SAAA,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;SAEe,oBAAoB,CAClC,KAAwB,EACxB,SAA0D,EAAE,EAAA;AAE5D,IAAA,MAAM,KAAK,GAAG,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,KAAI,EAAE,CAAC;AACjC,IAAA,MAAM,OAAO,GAAG,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,OAAO,KAAI,EAAE,CAAC;AAC7B,IAAA,KAAa,aAAb,KAAa,KAAA,KAAA,CAAA,GAAA,IAAA,GAAA,OAAb,KAAa,CAAE,KAAK,CAAC;AACrB,IAAA,KAAa,aAAb,KAAa,KAAA,KAAA,CAAA,GAAA,IAAA,GAAA,OAAb,KAAa,CAAE,OAAO,CAAC;IAE/B,MAAM,KAAK,GAAG,eAAe,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAC3B,QAAQ,EAAE,+CAA+C,EACzD,MAAM,EAAE,EAAE,KAAK,EAAE,IACd,MAAM,CAAA,EAAA,EACT,aAAa,EAAE,KAAK,IACpB,CAAC;IACH,MAAM,OAAO,GAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAgB,CAAC,OAAO,CAAC;AACrE,IAAA,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,aAAa,EAAE,CAAC;AAEtB,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAClC,IAAA,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;QAC1B,IAAI,KAAK,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;QAED,SAAS,CAAC,KAAK,CAAC,CAAC;AACnB,KAAC,CAAC;AAEF,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAKM,aAAa,CAAA;AACjB,IAAA,WAAA,CAAmB,OAA2B,EAAA;AAA3B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;KAAI;;2GAD9C,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAFN,QAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,CAAC,iBAAiB,CAAC,0BADpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4FAGR,aAAa,EAAA,UAAA,EAAA,CAAA;kBALlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,CAAC,iBAAiB,CAAC;iBAC/B,CAAA;;;AClHD;;AAEG;;;;"}