{"version":3,"file":"ngspot-ng-superclass-testing.mjs","sources":["../../../../../packages/ng-superclass/package/testing/src/lib/custom-form-control.harness.ts","../../../../../packages/ng-superclass/package/testing/src/lib/test-custom-control.ts","../../../../../packages/ng-superclass/package/testing/src/ngspot-ng-superclass-testing.ts"],"sourcesContent":["import { ComponentHarness } from '@angular/cdk/testing';\r\n\r\n/**\r\n * Extend your custom component harness from this class. This will allow\r\n * using testCustomControlComponentCommons test utility function that tests\r\n * for common custom component behavior.\r\n */\r\nexport abstract class CustomFormControlHarness<\r\n  ValueType\r\n> extends ComponentHarness {\r\n  abstract setValue(value: ValueType): Promise<void>;\r\n\r\n  abstract touch(): Promise<void>;\r\n\r\n  async isMarkedAs(state: 'touched' | 'dirty' | 'valid' | 'invalid') {\r\n    const host = await this.host();\r\n    return await host.hasClass(`ng-${state}`);\r\n  }\r\n}\r\n","import { AbstractControl } from '@angular/forms';\r\n\r\nimport { CustomFormControlHarness } from './custom-form-control.harness';\r\nimport { JestDescribeLike, JestExpectLike, JestItLike } from './model';\r\n\r\nexport interface CustomControlTestContext {\r\n  outerControl: AbstractControl;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  harness: CustomFormControlHarness<any>;\r\n}\r\n\r\nexport function testCustomFormControl(\r\n  describe: JestDescribeLike,\r\n  it: JestItLike,\r\n  expect: JestExpectLike,\r\n  resolveArgsFn: () =>\r\n    | CustomControlTestContext\r\n    | Promise<CustomControlTestContext>\r\n) {\r\n  describe('Test custom component common behavior', () => {\r\n    async function setup() {\r\n      return await Promise.resolve(resolveArgsFn());\r\n    }\r\n\r\n    describe(`PROP: touched`, () => {\r\n      it('initial \"touched\" state must be \"false\"', async () => {\r\n        const { harness } = await setup();\r\n\r\n        expect(await harness.isMarkedAs('touched')).toBe(false);\r\n      });\r\n\r\n      it('calling `control.markAsTouched()` should mark custom control as touched', async () => {\r\n        const { harness, outerControl } = await setup();\r\n\r\n        outerControl.markAsTouched();\r\n\r\n        expect(await harness.isMarkedAs('touched')).toBe(true);\r\n      });\r\n\r\n      it(`touching the element should mark it as \"touched\"`, async () => {\r\n        const { harness } = await setup();\r\n\r\n        await harness.touch();\r\n\r\n        expect(await harness.isMarkedAs('touched')).toBe(true);\r\n      });\r\n    });\r\n\r\n    describe(`PROP: dirty`, () => {\r\n      it('initial \"dirty\" state must be \"false\"', async () => {\r\n        const { harness } = await setup();\r\n\r\n        expect(await harness.isMarkedAs('dirty')).toBe(false);\r\n      });\r\n\r\n      it('calling `control.markAsDirty()` should mark custom control as dirty', async () => {\r\n        const { harness, outerControl } = await setup();\r\n\r\n        outerControl.markAsDirty();\r\n\r\n        expect(await harness.isMarkedAs('dirty')).toBe(true);\r\n      });\r\n\r\n      it(`setting a value should mark element as \"dirty\"`, async () => {\r\n        const { harness } = await setup();\r\n\r\n        await harness.setValue('test');\r\n\r\n        expect(await harness.isMarkedAs('dirty')).toBe(true);\r\n      });\r\n    });\r\n  });\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}