UNPKG

@data-client/test

Version:

Testing utilities for Data Client

103 lines (102 loc) 13 kB
/** * 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, { ...renderProps, ...props, children: /*#__PURE__*/_jsx(WithErrorWrap, { children: props.children }) }); } : WithErrorWrap; const render18Result = renderHook(render, { ...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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiU3VzcGVuc2UiLCJhY3QiLCJ3YWl0Rm9yIiwicmVuZGVySG9vayIsImpzeCIsIl9qc3giLCJyZW5kZXIxOFdyYXBwZXIiLCJyZW5kZXIiLCJvcHRpb25zIiwiX1NldFVuZGVmaW5lZCIsInJlbmRlclByb3BzIiwiaW5pdGlhbFByb3BzIiwiZXJyb3IiLCJzZXRFcnJvciIsImUiLCJyZXNldEVycm9yQm91bmRhcnkiLCJFcnJvckZhbGxiYWNrIiwicmVzZXQiLCJzZXRUaW1lb3V0IiwicmVzdWx0VW5kZWZpbmVkIiwic2V0UmVzdWx0VW5kZWZpbmVkIiwiU2V0VW5kZWZpbmVkIiwiV2l0aEVycm9yV3JhcCIsInByb3BzIiwiZmFsbGJhY2siLCJjaGlsZHJlbiIsImZhbGxiYWNrQ29tcG9uZW50IiwiV3JhcHBlciIsIndyYXBwZXIiLCJQcm92aWRlcldyYXBwZWQiLCJyZW5kZXIxOFJlc3VsdCIsInJldCIsIk9iamVjdCIsImNyZWF0ZSIsInJlc3VsdCIsInZhbHVlIiwiY3VycmVudCIsInVuZGVmaW5lZCIsInJlcmVuZGVyIiwid2FpdEZvck5leHRVcGRhdGUiLCJwcmV2aW91c0N1cnJlbnQiLCJwcmV2RXJyb3IiLCJpc01vY2tUaW1lcnMiLCJqZXN0IiwiY2xvY2siLCJEYXRlIiwicnVuT25seVBlbmRpbmdUaW1lcnMiLCJ1c2VSZWFsVGltZXJzIiwiRXJyb3IiLCJ1c2VGYWtlVGltZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ha2VSZW5kZXJEYXRhQ2xpZW50L3JlbmRlcjE4SG9va1dyYXBwZWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvdmlkZXMgYW4gYWJzdHJhY3Rpb24gb3ZlciByZWFjdCAxNyBhbmQgMTggY29tcGF0aWJsZSBsaWJyYXJpZXNcbiAqL1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJ0BkYXRhLWNsaWVudC9yZWFjdCc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJpZXMsIHdhaXRGb3JPcHRpb25zIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgeyBTdXNwZW5zZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgYWN0LCB3YWl0Rm9yLCByZW5kZXJIb29rLCBSZW5kZXJIb29rT3B0aW9ucyB9IGZyb20gJy4vcmVuZGVyMThIb29rLmpzJztcblxuZXhwb3J0IHsgYWN0IH07XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIxOFdyYXBwZXI8XG4gIFJlc3VsdCxcbiAgUHJvcHMsXG4gIFEgZXh0ZW5kcyBRdWVyaWVzID0gUXVlcmllcyxcbiAgQ29udGFpbmVyIGV4dGVuZHMgRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQgPSBIVE1MRWxlbWVudCxcbiAgQmFzZUVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCA9IENvbnRhaW5lcixcbj4oXG4gIHJlbmRlcjogKGluaXRpYWxQcm9wczogUHJvcHMpID0+IFJlc3VsdCxcbiAgb3B0aW9ucz86IFJlbmRlckhvb2tPcHRpb25zPFByb3BzLCBRLCBDb250YWluZXIsIEJhc2VFbGVtZW50Pixcbik6IFJlbmRlckhvb2tSZXN1bHQ8UmVzdWx0LCBQcm9wcz4ge1xuICBsZXQgcmVuZGVyUHJvcHM6IGFueSA9IG9wdGlvbnM/LmluaXRpYWxQcm9wcztcbiAgbGV0IGVycm9yOiBhbnk7XG4gIGNvbnN0IHNldEVycm9yID0gKGU6IGFueSkgPT4ge1xuICAgIGVycm9yID0gZTtcbiAgfTtcbiAgbGV0IHJlc2V0RXJyb3JCb3VuZGFyeSA9ICgpID0+IHt9O1xuICBjb25zdCBFcnJvckZhbGxiYWNrID0gKHsgZXJyb3IsIHJlc2V0RXJyb3JCb3VuZGFyeTogcmVzZXQgfTogYW55KSA9PiB7XG4gICAgcmVzZXRFcnJvckJvdW5kYXJ5ID0gKCkgPT4ge1xuICAgICAgcmVzZXRFcnJvckJvdW5kYXJ5ID0gKCkgPT4ge307XG4gICAgICBzZXRUaW1lb3V0KHJlc2V0LCAwKTtcbiAgICB9O1xuICAgIHNldEVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBsZXQgcmVzdWx0VW5kZWZpbmVkID0gZmFsc2U7XG4gIGNvbnN0IHNldFJlc3VsdFVuZGVmaW5lZCA9ICgpID0+IHtcbiAgICByZXN1bHRVbmRlZmluZWQgPSB0cnVlO1xuICB9O1xuICBjb25zdCBTZXRVbmRlZmluZWQgPSAoKSA9PiB7XG4gICAgc2V0UmVzdWx0VW5kZWZpbmVkKCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgV2l0aEVycm9yV3JhcCA9IChwcm9wczogYW55KSA9PiB7XG4gICAgcmVzZXRFcnJvckJvdW5kYXJ5KCk7XG4gICAgcmVzdWx0VW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN1c3BlbnNlIGZhbGxiYWNrPXs8U2V0VW5kZWZpbmVkIC8+fT5cbiAgICAgICAgPEVycm9yQm91bmRhcnkgZmFsbGJhY2tDb21wb25lbnQ9e0Vycm9yRmFsbGJhY2t9PlxuICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgPC9TdXNwZW5zZT5cbiAgICApO1xuICB9O1xuXG4gIC8vIFRPRE86IGFkZCBlcnJvciBhbmQgd2FpdGZvcnVwZGF0ZVxuICBjb25zdCBXcmFwcGVyID0gb3B0aW9ucz8ud3JhcHBlcjtcbiAgY29uc3Qgd3JhcHBlcjogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+ID1cbiAgICBXcmFwcGVyID9cbiAgICAgIGZ1bmN0aW9uIFByb3ZpZGVyV3JhcHBlZChwcm9wczogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48YW55Pikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxXcmFwcGVyIHsuLi5yZW5kZXJQcm9wc30gey4uLnByb3BzfT5cbiAgICAgICAgICAgIDxXaXRoRXJyb3JXcmFwPntwcm9wcy5jaGlsZHJlbn08L1dpdGhFcnJvcldyYXA+XG4gICAgICAgICAgPC9XcmFwcGVyPlxuICAgICAgICApO1xuICAgICAgfVxuICAgIDogV2l0aEVycm9yV3JhcDtcblxuICBjb25zdCByZW5kZXIxOFJlc3VsdCA9IHJlbmRlckhvb2socmVuZGVyLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICB3cmFwcGVyLFxuICB9KTtcbiAgY29uc3QgcmV0OiBSZW5kZXJIb29rUmVzdWx0PFJlc3VsdCwgUHJvcHM+ID0gT2JqZWN0LmNyZWF0ZShyZW5kZXIxOFJlc3VsdCwge1xuICAgIHJlc3VsdDoge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgZ2V0IGN1cnJlbnQoKTogYW55IHtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyMThSZXN1bHQucmVzdWx0LmN1cnJlbnQgPT09IG51bGwgP1xuICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgIDogcmVuZGVyMThSZXN1bHQucmVzdWx0LmN1cnJlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVyZW5kZXI6IHtcbiAgICAgIHZhbHVlOiAocHJvcHM/OiBhbnkpID0+IHtcbiAgICAgICAgcmVuZGVyUHJvcHMgPSBwcm9wcztcbiAgICAgICAgcmVuZGVyMThSZXN1bHQucmVyZW5kZXIocHJvcHMpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHdhaXRGb3I6IHtcbiAgICAgIHZhbHVlOiB3YWl0Rm9yLFxuICAgIH0sXG4gICAgd2FpdEZvck5leHRVcGRhdGU6IHtcbiAgICAgIHZhbHVlOiBhc3luYyAob3B0aW9ucz86IHdhaXRGb3JPcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzQ3VycmVudCA9IHJldC5yZXN1bHQuY3VycmVudDtcbiAgICAgICAgY29uc3QgcHJldkVycm9yID0gZXJyb3I7XG4gICAgICAgIGNvbnN0IGlzTW9ja1RpbWVycyA9XG4gICAgICAgICAgdHlwZW9mIGplc3QgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgKHNldFRpbWVvdXQgYXMgYW55KS5jbG9jayAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIChzZXRUaW1lb3V0IGFzIGFueSkuY2xvY2suRGF0ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgaWYgKGlzTW9ja1RpbWVycykge1xuICAgICAgICAgIGplc3QucnVuT25seVBlbmRpbmdUaW1lcnMoKTtcbiAgICAgICAgICBqZXN0LnVzZVJlYWxUaW1lcnMoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHtcbiAgICAgICAgICBpZiAocHJldkVycm9yID09PSBlcnJvciAmJiByZXQucmVzdWx0LmN1cnJlbnQgPT09IHByZXZpb3VzQ3VycmVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aW1lb3V0IGluIHdhaXRGb3JOZXh0VXBkYXRlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgaWYgKGlzTW9ja1RpbWVycykgamVzdC51c2VGYWtlVGltZXJzKCk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySG9va1Jlc3VsdDxSZXN1bHQsIFByb3BzPiB7XG4gIC8qKlxuICAgKiBUcmlnZ2VycyBhIHJlLXJlbmRlci4gVGhlIHByb3BzIHdpbGwgYmUgcGFzc2VkIHRvIHlvdXIgcmVuZGVySG9vayBjYWxsYmFjay5cbiAgICovXG4gIHJlcmVuZGVyOiAocHJvcHM/OiBQcm9wcykgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBzdGFibGUgcmVmZXJlbmNlIHRvIHRoZSBsYXRlc3QgdmFsdWUgcmV0dXJuZWQgYnkgeW91ciByZW5kZXJIb29rXG4gICAqIGNhbGxiYWNrXG4gICAqL1xuICByZXN1bHQ6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgYnkgeW91ciByZW5kZXJIb29rIGNhbGxiYWNrXG4gICAgICovXG4gICAgY3VycmVudDogUmVzdWx0O1xuICAgIGVycm9yPzogRXJyb3I7XG4gIH07XG4gIC8qKlxuICAgKiBVbm1vdW50cyB0aGUgdGVzdCBjb21wb25lbnQuIFRoaXMgaXMgdXNlZnVsIGZvciB3aGVuIHlvdSBuZWVkIHRvIHRlc3RcbiAgICogYW55IGNsZWFudXAgeW91ciB1c2VFZmZlY3RzIGhhdmUuXG4gICAqL1xuICB1bm1vdW50OiAoKSA9PiB2b2lkO1xuICAvKiBAZGVwcmVjYXRlZCB1c2Ugd2FpdEZvciAqL1xuICB3YWl0Rm9yTmV4dFVwZGF0ZTogKG9wdGlvbnM/OiB3YWl0Rm9yT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgd2FpdEZvcjxUPihcbiAgICBjYWxsYmFjazogKCkgPT4gUHJvbWlzZTxUPiB8IFQsXG4gICAgb3B0aW9ucz86IHdhaXRGb3JPcHRpb25zLFxuICApOiBQcm9taXNlPFQ+O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxhQUFhLFFBQVEsb0JBQW9CO0FBRWxELFNBQVNDLFFBQVEsUUFBUSxPQUFPO0FBRWhDLFNBQVNDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxVQUFVLFFBQTJCLG1CQUFtQjtBQUFDLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQUVoRixTQUFTSixHQUFHO0FBRVosT0FBTyxTQUFTSyxlQUFlQSxDQU83QkMsTUFBdUMsRUFDdkNDLE9BQTZELEVBQzVCO0VBQUEsSUFBQUMsYUFBQTtFQUNqQyxJQUFJQyxXQUFnQixHQUFHRixPQUFPLG9CQUFQQSxPQUFPLENBQUVHLFlBQVk7RUFDNUMsSUFBSUMsS0FBVTtFQUNkLE1BQU1DLFFBQVEsR0FBSUMsQ0FBTSxJQUFLO0lBQzNCRixLQUFLLEdBQUdFLENBQUM7RUFDWCxDQUFDO0VBQ0QsSUFBSUMsa0JBQWtCLEdBQUdBLENBQUEsS0FBTSxDQUFDLENBQUM7RUFDakMsTUFBTUMsYUFBYSxHQUFHQSxDQUFDO0lBQUVKLEtB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