UNPKG

cli-testing-library

Version:

Simple and complete CLI testing utilities that encourage good testing practices.

74 lines (73 loc) 2.08 kB
import { getSuggestedQuery } from "./suggestions.js"; import { waitFor as waitForWrapper } from "./wait-for.js"; import { getConfig } from "./config.js"; function getInstanceError(message, instance) { return getConfig().getInstanceError(message, instance); } function getSuggestionError(suggestion, container) { return getConfig().getInstanceError( `A better query is available, try this: ${suggestion.toString()} `, container ); } function makeGetQuery(queryBy, getMissingError) { return (instance, ...args) => { const el = queryBy(instance, ...args); if (!el) { throw getConfig().getInstanceError( getMissingError(instance, ...args), instance ); } return el; }; } function makeFindQuery(getter) { return (instance, text, options, waitForOptions) => { return waitForWrapper( () => { return getter(instance, text, options); }, { instance, ...waitForOptions } ); }; } const wrapSingleQueryWithSuggestion = (query, queryByName, variant) => (container, ...args) => { const instance = query(container, ...args); const [{ suggest = getConfig().throwSuggestions } = {}] = args.slice( -1 ); if (instance && suggest) { const suggestion = getSuggestedQuery(instance, variant); if (suggestion && !queryByName.endsWith(suggestion.queryName)) { throw getSuggestionError(suggestion.toString(), container); } } return instance; }; function buildQueries(queryBy, getMissingError) { const getBy = makeGetQuery(queryBy, getMissingError); const queryByWithSuggestions = wrapSingleQueryWithSuggestion( queryBy, queryBy.name, "get" ); const getByWithSuggestions = wrapSingleQueryWithSuggestion( getBy, queryBy.name, "get" ); const findBy = makeFindQuery( wrapSingleQueryWithSuggestion(getBy, queryBy.name, "find") ); return [queryByWithSuggestions, getByWithSuggestions, findBy]; } export { buildQueries, getInstanceError, makeFindQuery, wrapSingleQueryWithSuggestion }; //# sourceMappingURL=query-helpers.js.map