UNPKG

cli-testing-library

Version:

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

74 lines (73 loc) 2.28 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const suggestions = require("./suggestions.cjs"); const waitFor = require("./wait-for.cjs"); const config = require("./config.cjs"); function getInstanceError(message, instance) { return config.getConfig().getInstanceError(message, instance); } function getSuggestionError(suggestion, container) { return config.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 config.getConfig().getInstanceError( getMissingError(instance, ...args), instance ); } return el; }; } function makeFindQuery(getter) { return (instance, text, options, waitForOptions) => { return waitFor.waitFor( () => { return getter(instance, text, options); }, { instance, ...waitForOptions } ); }; } const wrapSingleQueryWithSuggestion = (query, queryByName, variant) => (container, ...args) => { const instance = query(container, ...args); const [{ suggest = config.getConfig().throwSuggestions } = {}] = args.slice( -1 ); if (instance && suggest) { const suggestion = suggestions.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]; } exports.buildQueries = buildQueries; exports.getInstanceError = getInstanceError; exports.makeFindQuery = makeFindQuery; exports.wrapSingleQueryWithSuggestion = wrapSingleQueryWithSuggestion; //# sourceMappingURL=query-helpers.cjs.map