cli-testing-library
Version:
Simple and complete CLI testing utilities that encourage good testing practices.
1 lines • 2.28 kB
Source Map (JSON)
{"version":3,"file":"get-queries-for-instance.cjs","sources":["../../src/get-queries-for-instance.ts"],"sourcesContent":["import * as defaultQueries from \"./queries/index\";\nimport type { TestInstance } from \"./types\";\n\nexport type BoundFunction<T> = T extends (\n container: TestInstance,\n ...args: infer P\n) => infer R\n ? (...args: P) => R\n : never;\n\nexport type BoundFunctions<TQueries> = TQueries extends typeof defaultQueries\n ? {\n getByText: <T extends TestInstance = TestInstance>(\n ...args: Parameters<BoundFunction<defaultQueries.GetByText<T>>>\n ) => ReturnType<defaultQueries.GetByText<T>>;\n queryByText: <T extends TestInstance = TestInstance>(\n ...args: Parameters<BoundFunction<defaultQueries.QueryByText<T>>>\n ) => ReturnType<defaultQueries.QueryByText<T>>;\n findByText: <T extends TestInstance = TestInstance>(\n ...args: Parameters<BoundFunction<defaultQueries.FindByText<T>>>\n ) => ReturnType<defaultQueries.FindByText<T>>;\n } & {\n [P in keyof TQueries]: BoundFunction<TQueries[P]>;\n }\n : {\n [P in keyof TQueries]: BoundFunction<TQueries[P]>;\n };\n\nexport type Query = (\n container: TestInstance,\n ...args: Array<any>\n) =>\n | Error\n | TestInstance\n | Array<TestInstance>\n | Promise<Array<TestInstance>>\n | Promise<TestInstance>\n | null;\n\nexport interface Queries {\n [T: string]: Query;\n}\n\n/**\n * @param instance\n * @param queries object of functions\n * @param initialValue for reducer\n * @returns returns object of functions bound to container\n */\nfunction getQueriesForElement<T extends Queries = typeof defaultQueries>(\n instance: TestInstance,\n queries: T = defaultQueries as unknown as T,\n initialValue = {},\n): BoundFunctions<T> {\n return Object.keys(queries).reduce((helpers, key) => {\n const fn = queries[key];\n helpers[key] = fn!.bind(null, instance);\n return helpers;\n }, initialValue as BoundFunctions<T>);\n}\n\nexport { getQueriesForElement };\n"],"names":["defaultQueries"],"mappings":";;;AAiDA,SAAS,qBACP,UACA,UAAaA,OACb,eAAe,CAAA,GACI;AACnB,SAAO,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,SAAS,QAAQ;AAC7C,UAAA,KAAK,QAAQ,GAAG;AACtB,YAAQ,GAAG,IAAI,GAAI,KAAK,MAAM,QAAQ;AAC/B,WAAA;AAAA,KACN,YAAiC;AACtC;;"}