UNPKG

@data-client/test

Version:

Testing utilities for Data Client

101 lines (100 loc) 13.1 kB
import _extends from "@babel/runtime/helpers/esm/extends"; /** * Provides an abstraction over react 17 and 18 compatible libraries */ import { ErrorBoundary } from '@data-client/react'; import { Suspense } from 'react'; import { act, waitFor, renderHook } from './render18Hook.js'; import { jsx as _jsx } from "react/jsx-runtime"; export { act }; export function render18Wrapper(render, options) { var _SetUndefined; let renderProps = options == null ? void 0 : options.initialProps; let error; const setError = e => { error = e; }; let resetErrorBoundary = () => {}; const ErrorFallback = ({ error, resetErrorBoundary: reset }) => { resetErrorBoundary = () => { resetErrorBoundary = () => {}; setTimeout(reset, 0); }; setError(error); return null; }; let resultUndefined = false; const setResultUndefined = () => { resultUndefined = true; }; const SetUndefined = () => { setResultUndefined(); return null; }; const WithErrorWrap = props => { resetErrorBoundary(); resultUndefined = false; return /*#__PURE__*/_jsx(Suspense, { fallback: _SetUndefined || (_SetUndefined = /*#__PURE__*/_jsx(SetUndefined, {})), children: /*#__PURE__*/_jsx(ErrorBoundary, { fallbackComponent: ErrorFallback, children: props.children }) }); }; // TODO: add error and waitforupdate const Wrapper = options == null ? void 0 : options.wrapper; const wrapper = Wrapper ? function ProviderWrapped(props) { return /*#__PURE__*/_jsx(Wrapper, _extends({}, renderProps, props, { children: /*#__PURE__*/_jsx(WithErrorWrap, { children: props.children }) })); } : WithErrorWrap; const render18Result = renderHook(render, _extends({}, options, { wrapper })); const ret = Object.create(render18Result, { result: { value: { get current() { return render18Result.result.current === null ? undefined : render18Result.result.current; }, get error() { return error; } } }, rerender: { value: props => { renderProps = props; render18Result.rerender(props); } }, waitFor: { value: waitFor }, waitForNextUpdate: { value: async options => { const previousCurrent = ret.result.current; const prevError = error; const isMockTimers = typeof jest !== 'undefined' && setTimeout.clock != null && typeof setTimeout.clock.Date === 'function'; if (isMockTimers) { jest.runOnlyPendingTimers(); jest.useRealTimers(); } await waitFor(() => { if (prevError === error && ret.result.current === previousCurrent) { throw new Error('timeout in waitForNextUpdate'); } }, options); if (isMockTimers) jest.useFakeTimers(); } } }); return ret; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiU3VzcGVuc2UiLCJhY3QiLCJ3YWl0Rm9yIiwicmVuZGVySG9vayIsImpzeCIsIl9qc3giLCJyZW5kZXIxOFdyYXBwZXIiLCJyZW5kZXIiLCJvcHRpb25zIiwiX1NldFVuZGVmaW5lZCIsInJlbmRlclByb3BzIiwiaW5pdGlhbFByb3BzIiwiZXJyb3IiLCJzZXRFcnJvciIsImUiLCJyZXNldEVycm9yQm91bmRhcnkiLCJFcnJvckZhbGxiYWNrIiwicmVzZXQiLCJzZXRUaW1lb3V0IiwicmVzdWx0VW5kZWZpbmVkIiwic2V0UmVzdWx0VW5kZWZpbmVkIiwiU2V0VW5kZWZpbmVkIiwiV2l0aEVycm9yV3JhcCIsInByb3BzIiwiZmFsbGJhY2siLCJjaGlsZHJlbiIsImZhbGxiYWNrQ29tcG9uZW50IiwiV3JhcHBlciIsIndyYXBwZXIiLCJQcm92aWRlcldyYXBwZWQiLCJfZXh0ZW5kcyIsInJlbmRlcjE4UmVzdWx0IiwicmV0IiwiT2JqZWN0IiwiY3JlYXRlIiwicmVzdWx0IiwidmFsdWUiLCJjdXJyZW50IiwidW5kZWZpbmVkIiwicmVyZW5kZXIiLCJ3YWl0Rm9yTmV4dFVwZGF0ZSIsInByZXZpb3VzQ3VycmVudCIsInByZXZFcnJvciIsImlzTW9ja1RpbWVycyIsImplc3QiLCJjbG9jayIsIkRhdGUiLCJydW5Pbmx5UGVuZGluZ1RpbWVycyIsInVzZVJlYWxUaW1lcnMiLCJFcnJvciIsInVzZUZha2VUaW1lcnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFrZVJlbmRlckRhdGFDbGllbnQvcmVuZGVyMThIb29rV3JhcHBlZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm92aWRlcyBhbiBhYnN0cmFjdGlvbiBvdmVyIHJlYWN0IDE3IGFuZCAxOCBjb21wYXRpYmxlIGxpYnJhcmllc1xuICovXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSAnQGRhdGEtY2xpZW50L3JlYWN0JztcbmltcG9ydCB0eXBlIHsgUXVlcmllcywgd2FpdEZvck9wdGlvbnMgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IFN1c3BlbnNlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBhY3QsIHdhaXRGb3IsIHJlbmRlckhvb2ssIFJlbmRlckhvb2tPcHRpb25zIH0gZnJvbSAnLi9yZW5kZXIxOEhvb2suanMnO1xuXG5leHBvcnQgeyBhY3QgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcjE4V3JhcHBlcjxcbiAgUmVzdWx0LFxuICBQcm9wcyxcbiAgUSBleHRlbmRzIFF1ZXJpZXMgPSBRdWVyaWVzLFxuICBDb250YWluZXIgZXh0ZW5kcyBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCA9IEhUTUxFbGVtZW50LFxuICBCYXNlRWxlbWVudCBleHRlbmRzIEVsZW1lbnQgfCBEb2N1bWVudEZyYWdtZW50ID0gQ29udGFpbmVyLFxuPihcbiAgcmVuZGVyOiAoaW5pdGlhbFByb3BzOiBQcm9wcykgPT4gUmVzdWx0LFxuICBvcHRpb25zPzogUmVuZGVySG9va09wdGlvbnM8UHJvcHMsIFEsIENvbnRhaW5lciwgQmFzZUVsZW1lbnQ+LFxuKTogUmVuZGVySG9va1Jlc3VsdDxSZXN1bHQsIFByb3BzPiB7XG4gIGxldCByZW5kZXJQcm9wczogYW55ID0gb3B0aW9ucz8uaW5pdGlhbFByb3BzO1xuICBsZXQgZXJyb3I6IGFueTtcbiAgY29uc3Qgc2V0RXJyb3IgPSAoZTogYW55KSA9PiB7XG4gICAgZXJyb3IgPSBlO1xuICB9O1xuICBsZXQgcmVzZXRFcnJvckJvdW5kYXJ5ID0gKCkgPT4ge307XG4gIGNvbnN0IEVycm9yRmFsbGJhY2sgPSAoeyBlcnJvciwgcmVzZXRFcnJvckJvdW5kYXJ5OiByZXNldCB9OiBhbnkpID0+IHtcbiAgICByZXNldEVycm9yQm91bmRhcnkgPSAoKSA9PiB7XG4gICAgICByZXNldEVycm9yQm91bmRhcnkgPSAoKSA9PiB7fTtcbiAgICAgIHNldFRpbWVvdXQocmVzZXQsIDApO1xuICAgIH07XG4gICAgc2V0RXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGxldCByZXN1bHRVbmRlZmluZWQgPSBmYWxzZTtcbiAgY29uc3Qgc2V0UmVzdWx0VW5kZWZpbmVkID0gKCkgPT4ge1xuICAgIHJlc3VsdFVuZGVmaW5lZCA9IHRydWU7XG4gIH07XG4gIGNvbnN0IFNldFVuZGVmaW5lZCA9ICgpID0+IHtcbiAgICBzZXRSZXN1bHRVbmRlZmluZWQoKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb25zdCBXaXRoRXJyb3JXcmFwID0gKHByb3BzOiBhbnkpID0+IHtcbiAgICByZXNldEVycm9yQm91bmRhcnkoKTtcbiAgICByZXN1bHRVbmRlZmluZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9ezxTZXRVbmRlZmluZWQgLz59PlxuICAgICAgICA8RXJyb3JCb3VuZGFyeSBmYWxsYmFja0NvbXBvbmVudD17RXJyb3JGYWxsYmFja30+XG4gICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICA8L1N1c3BlbnNlPlxuICAgICk7XG4gIH07XG5cbiAgLy8gVE9ETzogYWRkIGVycm9yIGFuZCB3YWl0Zm9ydXBkYXRlXG4gIGNvbnN0IFdyYXBwZXIgPSBvcHRpb25zPy53cmFwcGVyO1xuICBjb25zdCB3cmFwcGVyOiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT4gPVxuICAgIFdyYXBwZXIgP1xuICAgICAgZnVuY3Rpb24gUHJvdmlkZXJXcmFwcGVkKHByb3BzOiBSZWFjdC5Qcm9wc1dpdGhDaGlsZHJlbjxhbnk+KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFdyYXBwZXIgey4uLnJlbmRlclByb3BzfSB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgPFdpdGhFcnJvcldyYXA+e3Byb3BzLmNoaWxkcmVufTwvV2l0aEVycm9yV3JhcD5cbiAgICAgICAgICA8L1dyYXBwZXI+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgOiBXaXRoRXJyb3JXcmFwO1xuXG4gIGNvbnN0IHJlbmRlcjE4UmVzdWx0ID0gcmVuZGVySG9vayhyZW5kZXIsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIHdyYXBwZXIsXG4gIH0pO1xuICBjb25zdCByZXQ6IFJlbmRlckhvb2tSZXN1bHQ8UmVzdWx0LCBQcm9wcz4gPSBPYmplY3QuY3JlYXRlKHJlbmRlcjE4UmVzdWx0LCB7XG4gICAgcmVzdWx0OiB7XG4gICAgICB2YWx1ZToge1xuICAgICAgICBnZXQgY3VycmVudCgpOiBhbnkge1xuICAgICAgICAgIHJldHVybiByZW5kZXIxOFJlc3VsdC5yZXN1bHQuY3VycmVudCA9PT0gbnVsbCA/XG4gICAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICAgICAgOiByZW5kZXIxOFJlc3VsdC5yZXN1bHQuY3VycmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXJlbmRlcjoge1xuICAgICAgdmFsdWU6IChwcm9wcz86IGFueSkgPT4ge1xuICAgICAgICByZW5kZXJQcm9wcyA9IHByb3BzO1xuICAgICAgICByZW5kZXIxOFJlc3VsdC5yZXJlbmRlcihwcm9wcyk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgd2FpdEZvcjoge1xuICAgICAgdmFsdWU6IHdhaXRGb3IsXG4gICAgfSxcbiAgICB3YWl0Rm9yTmV4dFVwZGF0ZToge1xuICAgICAgdmFsdWU6IGFzeW5jIChvcHRpb25zPzogd2FpdEZvck9wdGlvbnMpID0+IHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNDdXJyZW50ID0gcmV0LnJlc3VsdC5jdXJyZW50O1xuICAgICAgICBjb25zdCBwcmV2RXJyb3IgPSBlcnJvcjtcbiAgICAgICAgY29uc3QgaXNNb2NrVGltZXJzID1cbiAgICAgICAgICB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAoc2V0VGltZW91dCBhcyBhbnkpLmNsb2NrICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgKHNldFRpbWVvdXQgYXMgYW55KS5jbG9jay5EYXRlID09PSAnZnVuY3Rpb24nO1xuICAgICAgICBpZiAoaXNNb2NrVGltZXJzKSB7XG4gICAgICAgICAgamVzdC5ydW5Pbmx5UGVuZGluZ1RpbWVycygpO1xuICAgICAgICAgIGplc3QudXNlUmVhbFRpbWVycygpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2RXJyb3IgPT09IGVycm9yICYmIHJldC5yZXN1bHQuY3VycmVudCA9PT0gcHJldmlvdXNDdXJyZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RpbWVvdXQgaW4gd2FpdEZvck5leHRVcGRhdGUnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG9wdGlvbnMpO1xuICAgICAgICBpZiAoaXNNb2NrVGltZXJzKSBqZXN0LnVzZUZha2VUaW1lcnMoKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJIb29rUmVzdWx0PFJlc3VsdCwgUHJvcHM+IHtcbiAgLyoqXG4gICAqIFRyaWdnZXJzIGEgcmUtcmVuZGVyLiBUaGUgcHJvcHMgd2lsbCBiZSBwYXNzZWQgdG8geW91ciByZW5kZXJIb29rIGNhbGxiYWNrLlxuICAgKi9cbiAgcmVyZW5kZXI6IChwcm9wcz86IFByb3BzKSA9PiB2b2lkO1xuICAvKipcbiAgICogVGhpcyBpcyBhIHN0YWJsZSByZWZlcmVuY2UgdG8gdGhlIGxhdGVzdCB2YWx1ZSByZXR1cm5lZCBieSB5b3VyIHJlbmRlckhvb2tcbiAgICogY2FsbGJhY2tcbiAgICovXG4gIHJlc3VsdDoge1xuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBieSB5b3VyIHJlbmRlckhvb2sgY2FsbGJhY2tcbiAgICAgKi9cbiAgICBjdXJyZW50OiBSZXN1bHQ7XG4gICAgZXJyb3I/OiBFcnJvcjtcbiAgfTtcbiAgLyoqXG4gICAqIFVubW91bnRzIHRoZSB0ZXN0IGNvbXBvbmVudC4gVGhpcyBpcyB1c2VmdWwgZm9yIHdoZW4geW91IG5lZWQgdG8gdGVzdFxuICAgKiBhbnkgY2xlYW51cCB5b3VyIHVzZUVmZmVjdHMgaGF2ZS5cbiAgICovXG4gIHVubW91bnQ6ICgpID0+IHZvaWQ7XG4gIC8qIEBkZXByZWNhdGVkIHVzZSB3YWl0Rm9yICovXG4gIHdhaXRGb3JOZXh0VXBkYXRlOiAob3B0aW9ucz86IHdhaXRGb3JPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB3YWl0Rm9yPFQ+KFxuICAgIGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPFQ+IHwgVCxcbiAgICBvcHRpb25zPzogd2FpdEZvck9wdGlvbnMsXG4gICk6IFByb21pc2U8VD47XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxhQUFhLFFBQVEsb0JBQW9CO0FBRWxELFNBQVNDLFFBQVEsUUFBUSxPQUFPO0FBRWhDLFNBQVNDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxVQUFVLFFBQTJCLG1CQUFtQjtBQUFDLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQUVoRixTQUFTSixHQUFHO0FBRVosT0FBTyxTQUFTSyxlQUFlQSxDQU83QkMsTUFBdUMsRUFDdkNDLE9BQTZELEVBQzVCO0VBQUEsSUFBQUMsYUFBQTtFQUNqQyxJQUFJQyxXQUFnQixHQUFHRixPQUFPLG9CQUFQQSxPQUFPLENBQUVHLFlBQVk7RUFDNUMsSUFBSUMsS0FBVTtFQUNkLE1BQU1DLFFBQVEsR0FBSUMsQ0FBTSxJQUFLO0lBQzNCRixLQUFLLEdBQUdFLENBQUM7RUFDWCxDQUFDO0VBQ0QsSUFBSUMsa0JBQWtCLEdBQUdBLENBQUEsS0FBTSxDQUFDLENBQUM7RUFDakMsTUFBTUMsYUFBYSxHQUFHQSxD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