cli-testing-library
Version:
Simple and complete CLI testing utilities that encourage good testing practices.
25 lines (24 loc) • 1.51 kB
text/typescript
import { TestInstance } from './types.cjs';
import * as defaultQueries from "./queries/index.cjs";
export type BoundFunction<T> = T extends (container: TestInstance, ...args: infer P) => infer R ? (...args: P) => R : never;
export type BoundFunctions<TQueries> = TQueries extends typeof defaultQueries ? {
getByText: <T extends TestInstance = TestInstance>(...args: Parameters<BoundFunction<defaultQueries.GetByText<T>>>) => ReturnType<defaultQueries.GetByText<T>>;
queryByText: <T extends TestInstance = TestInstance>(...args: Parameters<BoundFunction<defaultQueries.QueryByText<T>>>) => ReturnType<defaultQueries.QueryByText<T>>;
findByText: <T extends TestInstance = TestInstance>(...args: Parameters<BoundFunction<defaultQueries.FindByText<T>>>) => ReturnType<defaultQueries.FindByText<T>>;
} & {
[P in keyof TQueries]: BoundFunction<TQueries[P]>;
} : {
[P in keyof TQueries]: BoundFunction<TQueries[P]>;
};
export type Query = (container: TestInstance, ...args: Array<any>) => Error | TestInstance | Array<TestInstance> | Promise<Array<TestInstance>> | Promise<TestInstance> | null;
export interface Queries {
[T: string]: Query;
}
/**
* @param instance
* @param queries object of functions
* @param initialValue for reducer
* @returns returns object of functions bound to container
*/
declare function getQueriesForElement<T extends Queries = typeof defaultQueries>(instance: TestInstance, queries?: T, initialValue?: {}): BoundFunctions<T>;
export { getQueriesForElement };