@data-client/test
Version:
Testing utilities for Data Client
100 lines (99 loc) • 12.9 kB
JavaScript
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 isMockTimers = typeof jest !== 'undefined' && setTimeout.clock != null && typeof setTimeout.clock.Date === 'function';
if (isMockTimers) {
jest.runOnlyPendingTimers();
jest.useRealTimers();
}
await waitFor(() => {
if (!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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiU3VzcGVuc2UiLCJhY3QiLCJ3YWl0Rm9yIiwicmVuZGVySG9vayIsImpzeCIsIl9qc3giLCJyZW5kZXIxOFdyYXBwZXIiLCJyZW5kZXIiLCJvcHRpb25zIiwiX1NldFVuZGVmaW5lZCIsInJlbmRlclByb3BzIiwiaW5pdGlhbFByb3BzIiwiZXJyb3IiLCJzZXRFcnJvciIsImUiLCJyZXNldEVycm9yQm91bmRhcnkiLCJFcnJvckZhbGxiYWNrIiwicmVzZXQiLCJzZXRUaW1lb3V0IiwicmVzdWx0VW5kZWZpbmVkIiwic2V0UmVzdWx0VW5kZWZpbmVkIiwiU2V0VW5kZWZpbmVkIiwiV2l0aEVycm9yV3JhcCIsInByb3BzIiwiZmFsbGJhY2siLCJjaGlsZHJlbiIsImZhbGxiYWNrQ29tcG9uZW50IiwiV3JhcHBlciIsIndyYXBwZXIiLCJQcm92aWRlcldyYXBwZWQiLCJfZXh0ZW5kcyIsInJlbmRlcjE4UmVzdWx0IiwicmV0IiwiT2JqZWN0IiwiY3JlYXRlIiwicmVzdWx0IiwidmFsdWUiLCJjdXJyZW50IiwidW5kZWZpbmVkIiwicmVyZW5kZXIiLCJ3YWl0Rm9yTmV4dFVwZGF0ZSIsInByZXZpb3VzQ3VycmVudCIsImlzTW9ja1RpbWVycyIsImplc3QiLCJjbG9jayIsIkRhdGUiLCJydW5Pbmx5UGVuZGluZ1RpbWVycyIsInVzZVJlYWxUaW1lcnMiLCJFcnJvciIsInVzZUZha2VUaW1lcnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFrZVJlbmRlckRhdGFDbGllbnQvcmVuZGVyMThIb29rV3JhcHBlZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm92aWRlcyBhbiBhYnN0cmFjdGlvbiBvdmVyIHJlYWN0IDE3IGFuZCAxOCBjb21wYXRpYmxlIGxpYnJhcmllc1xuICovXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSAnQGRhdGEtY2xpZW50L3JlYWN0JztcbmltcG9ydCB0eXBlIHsgUXVlcmllcywgd2FpdEZvck9wdGlvbnMgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IFN1c3BlbnNlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBhY3QsIHdhaXRGb3IsIHJlbmRlckhvb2ssIFJlbmRlckhvb2tPcHRpb25zIH0gZnJvbSAnLi9yZW5kZXIxOEhvb2suanMnO1xuXG5leHBvcnQgeyBhY3QgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcjE4V3JhcHBlcjxcbiAgUmVzdWx0LFxuICBQcm9wcyxcbiAgUSBleHRlbmRzIFF1ZXJpZXMgPSBRdWVyaWVzLFxuICBDb250YWluZXIgZXh0ZW5kcyBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCA9IEhUTUxFbGVtZW50LFxuICBCYXNlRWxlbWVudCBleHRlbmRzIEVsZW1lbnQgfCBEb2N1bWVudEZyYWdtZW50ID0gQ29udGFpbmVyLFxuPihcbiAgcmVuZGVyOiAoaW5pdGlhbFByb3BzOiBQcm9wcykgPT4gUmVzdWx0LFxuICBvcHRpb25zPzogUmVuZGVySG9va09wdGlvbnM8UHJvcHMsIFEsIENvbnRhaW5lciwgQmFzZUVsZW1lbnQ+LFxuKTogUmVuZGVySG9va1Jlc3VsdDxSZXN1bHQsIFByb3BzPiB7XG4gIGxldCByZW5kZXJQcm9wczogYW55ID0gb3B0aW9ucz8uaW5pdGlhbFByb3BzO1xuICBsZXQgZXJyb3I6IGFueTtcbiAgY29uc3Qgc2V0RXJyb3IgPSAoZTogYW55KSA9PiB7XG4gICAgZXJyb3IgPSBlO1xuICB9O1xuICBsZXQgcmVzZXRFcnJvckJvdW5kYXJ5ID0gKCkgPT4ge307XG4gIGNvbnN0IEVycm9yRmFsbGJhY2sgPSAoeyBlcnJvciwgcmVzZXRFcnJvckJvdW5kYXJ5OiByZXNldCB9OiBhbnkpID0+IHtcbiAgICByZXNldEVycm9yQm91bmRhcnkgPSAoKSA9PiB7XG4gICAgICByZXNldEVycm9yQm91bmRhcnkgPSAoKSA9PiB7fTtcbiAgICAgIHNldFRpbWVvdXQocmVzZXQsIDApO1xuICAgIH07XG4gICAgc2V0RXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGxldCByZXN1bHRVbmRlZmluZWQgPSBmYWxzZTtcbiAgY29uc3Qgc2V0UmVzdWx0VW5kZWZpbmVkID0gKCkgPT4ge1xuICAgIHJlc3VsdFVuZGVmaW5lZCA9IHRydWU7XG4gIH07XG4gIGNvbnN0IFNldFVuZGVmaW5lZCA9ICgpID0+IHtcbiAgICBzZXRSZXN1bHRVbmRlZmluZWQoKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb25zdCBXaXRoRXJyb3JXcmFwID0gKHByb3BzOiBhbnkpID0+IHtcbiAgICByZXNldEVycm9yQm91bmRhcnkoKTtcbiAgICByZXN1bHRVbmRlZmluZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9ezxTZXRVbmRlZmluZWQgLz59PlxuICAgICAgICA8RXJyb3JCb3VuZGFyeSBmYWxsYmFja0NvbXBvbmVudD17RXJyb3JGYWxsYmFja30+XG4gICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICA8L1N1c3BlbnNlPlxuICAgICk7XG4gIH07XG5cbiAgLy8gVE9ETzogYWRkIGVycm9yIGFuZCB3YWl0Zm9ydXBkYXRlXG4gIGNvbnN0IFdyYXBwZXIgPSBvcHRpb25zPy53cmFwcGVyO1xuICBjb25zdCB3cmFwcGVyOiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT4gPVxuICAgIFdyYXBwZXIgP1xuICAgICAgZnVuY3Rpb24gUHJvdmlkZXJXcmFwcGVkKHByb3BzOiBSZWFjdC5Qcm9wc1dpdGhDaGlsZHJlbjxhbnk+KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFdyYXBwZXIgey4uLnJlbmRlclByb3BzfSB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgPFdpdGhFcnJvcldyYXA+e3Byb3BzLmNoaWxkcmVufTwvV2l0aEVycm9yV3JhcD5cbiAgICAgICAgICA8L1dyYXBwZXI+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgOiBXaXRoRXJyb3JXcmFwO1xuXG4gIGNvbnN0IHJlbmRlcjE4UmVzdWx0ID0gcmVuZGVySG9vayhyZW5kZXIsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIHdyYXBwZXIsXG4gIH0pO1xuICBjb25zdCByZXQ6IFJlbmRlckhvb2tSZXN1bHQ8UmVzdWx0LCBQcm9wcz4gPSBPYmplY3QuY3JlYXRlKHJlbmRlcjE4UmVzdWx0LCB7XG4gICAgcmVzdWx0OiB7XG4gICAgICB2YWx1ZToge1xuICAgICAgICBnZXQgY3VycmVudCgpOiBhbnkge1xuICAgICAgICAgIHJldHVybiByZW5kZXIxOFJlc3VsdC5yZXN1bHQuY3VycmVudCA9PT0gbnVsbCA/XG4gICAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICAgICAgOiByZW5kZXIxOFJlc3VsdC5yZXN1bHQuY3VycmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXJlbmRlcjoge1xuICAgICAgdmFsdWU6IChwcm9wcz86IGFueSkgPT4ge1xuICAgICAgICByZW5kZXJQcm9wcyA9IHByb3BzO1xuICAgICAgICByZW5kZXIxOFJlc3VsdC5yZXJlbmRlcihwcm9wcyk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgd2FpdEZvcjoge1xuICAgICAgdmFsdWU6IHdhaXRGb3IsXG4gICAgfSxcbiAgICB3YWl0Rm9yTmV4dFVwZGF0ZToge1xuICAgICAgdmFsdWU6IGFzeW5jIChvcHRpb25zPzogd2FpdEZvck9wdGlvbnMpID0+IHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNDdXJyZW50ID0gcmV0LnJlc3VsdC5jdXJyZW50O1xuICAgICAgICBjb25zdCBpc01vY2tUaW1lcnMgPVxuICAgICAgICAgIHR5cGVvZiBqZXN0ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgIChzZXRUaW1lb3V0IGFzIGFueSkuY2xvY2sgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiAoc2V0VGltZW91dCBhcyBhbnkpLmNsb2NrLkRhdGUgPT09ICdmdW5jdGlvbic7XG4gICAgICAgIGlmIChpc01vY2tUaW1lcnMpIHtcbiAgICAgICAgICBqZXN0LnJ1bk9ubHlQZW5kaW5nVGltZXJzKCk7XG4gICAgICAgICAgamVzdC51c2VSZWFsVGltZXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgICAgICAgaWYgKCFlcnJvciAmJiByZXQucmVzdWx0LmN1cnJlbnQgPT09IHByZXZpb3VzQ3VycmVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aW1lb3V0IGluIHdhaXRGb3JOZXh0VXBkYXRlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgaWYgKGlzTW9ja1RpbWVycykgamVzdC51c2VGYWtlVGltZXJzKCk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySG9va1Jlc3VsdDxSZXN1bHQsIFByb3BzPiB7XG4gIC8qKlxuICAgKiBUcmlnZ2VycyBhIHJlLXJlbmRlci4gVGhlIHByb3BzIHdpbGwgYmUgcGFzc2VkIHRvIHlvdXIgcmVuZGVySG9vayBjYWxsYmFjay5cbiAgICovXG4gIHJlcmVuZGVyOiAocHJvcHM/OiBQcm9wcykgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBzdGFibGUgcmVmZXJlbmNlIHRvIHRoZSBsYXRlc3QgdmFsdWUgcmV0dXJuZWQgYnkgeW91ciByZW5kZXJIb29rXG4gICAqIGNhbGxiYWNrXG4gICAqL1xuICByZXN1bHQ6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgYnkgeW91ciByZW5kZXJIb29rIGNhbGxiYWNrXG4gICAgICovXG4gICAgY3VycmVudDogUmVzdWx0O1xuICAgIGVycm9yPzogRXJyb3I7XG4gIH07XG4gIC8qKlxuICAgKiBVbm1vdW50cyB0aGUgdGVzdCBjb21wb25lbnQuIFRoaXMgaXMgdXNlZnVsIGZvciB3aGVuIHlvdSBuZWVkIHRvIHRlc3RcbiAgICogYW55IGNsZWFudXAgeW91ciB1c2VFZmZlY3RzIGhhdmUuXG4gICAqL1xuICB1bm1vdW50OiAoKSA9PiB2b2lkO1xuICAvKiBAZGVwcmVjYXRlZCB1c2Ugd2FpdEZvciAqL1xuICB3YWl0Rm9yTmV4dFVwZGF0ZTogKG9wdGlvbnM/OiB3YWl0Rm9yT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgd2FpdEZvcjxUPihcbiAgICBjYWxsYmFjazogKCkgPT4gUHJvbWlzZTxUPiB8IFQsXG4gICAgb3B0aW9ucz86IHdhaXRGb3JPcHRpb25zLFxuICApOiBQcm9taXNlPFQ+O1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsYUFBYSxRQUFRLG9CQUFvQjtBQUVsRCxTQUFTQyxRQUFRLFFBQVEsT0FBTztBQUVoQyxTQUFTQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxRQUEyQixtQkFBbUI7QUFBQyxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFFaEYsU0FBU0osR0FBRztBQUVaLE9BQU8sU0FBU0ssZUFBZUEsQ0FPN0JDLE1BQXVDLEVBQ3ZDQyxPQUE2RCxFQUM1QjtFQUFBLElBQUFDLGFBQUE7RUFDakMsSUFBSUMsV0FBZ0IsR0FBR0YsT0FBTyxvQkFBUEEsT0FBTyxDQUFFRyxZQUFZO0VBQzVDLElBQUlDLEtBQVU7RUFDZCxNQUFNQyxRQUFRLEdBQUlDLENBQU0sSUFBSztJQUMzQkYsS0FBSyxHQUFHRSxDQUFDO0VBQ1gsQ0FBQztFQUNELElBQUlDLGtCQUFrQixHQUFHQSxDQUFBLEtBQU0sQ0FBQyxDQUFDO0VBQ2pDLE1BQU1DLGFBQWEsR0FBR0EsQ0FBQztJQUFFSixLQUFLO0lBQUVHLGtCQUFrQixFQUFFRTtFQUFXLENBQUMsS0FBSztJQUNuRUYsa0JB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