@data-client/test
Version:
Testing utilities for Data Client
103 lines (102 loc) • 13 kB
JavaScript
/**
* 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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