UNPKG

@data-client/test

Version:
105 lines (104 loc) 15.6 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; const _excluded = ["initialFixtures", "resolverFixtures", "getInitialInterceptorData"], _excluded2 = ["children"]; import { SubscriptionManager, NetworkManager, PollingSubscription, Controller } from '@data-client/react'; import React, { memo, Suspense } from 'react'; import { renderHook, act } from './renderHook.cjs'; import { MockController } from '../MockController.js'; import mockInitialState from '../mockState.js'; import { jsx as _jsx } from "react/jsx-runtime"; /** @see https://dataclient.io/docs/api/makeRenderDataHook */ export default function makeRenderDataHook(Provider) { const renderDataClient = (callback, _ref = {}) => { let { initialFixtures, resolverFixtures, getInitialInterceptorData = () => ({}) } = _ref, options = _objectWithoutPropertiesLoose(_ref, _excluded); /** Wraps dispatches that are typically called declaratively in act() */ class ActController extends MockController(Controller, resolverFixtures ? { fixtures: resolverFixtures, getInitialInterceptorData } : {}) { constructor(options) { super(options); const { setResponse, resolve } = this; this.setResponse = (...args) => { let promise; act(() => { promise = setResponse.call(this, ...args); }); return promise; }; this.resolve = (...args) => { let promise; act(() => { promise = resolve.call(this, ...args); }); return promise; }; } } // we want fresh manager state in each instance const nm = new NetworkManager(); const sm = new SubscriptionManager(PollingSubscription); const managers = [nm, sm]; // this pattern is dangerous if renderDataClient is shared between tests // TODO: move to return value renderDataClient.cleanup = () => { nm.cleanupDate = Infinity; Object.values(nm['rejectors']).forEach(rej => { rej(); }); nm['clearAll'](); managers.forEach(manager => manager.cleanup()); }; renderDataClient.allSettled = () => { return nm.allSettled(); }; const initialState = mockInitialState(initialFixtures); const ProviderWithResolver = /*#__PURE__*/memo(function ProviderWithResolver({ children }) { return /*#__PURE__*/_jsx(Provider, { initialState: initialState, Controller: ActController, managers: managers, devButton: null, children: children }); }); const Wrapper = options == null ? void 0 : options.wrapper; const ProviderWithWrapper = Wrapper ? function ProviderWrapped(props) { return /*#__PURE__*/_jsx(ProviderWithResolver, { children: /*#__PURE__*/_jsx(Wrapper, _extends({}, props)) }); } : ProviderWithResolver; const wrapper = _ref2 => { let { children } = _ref2, props = _objectWithoutPropertiesLoose(_ref2, _excluded2); return /*#__PURE__*/_jsx(ProviderWithWrapper, _extends({}, props, { children: /*#__PURE__*/_jsx(Suspense, { fallback: null, children: children }) })); }; const ret = renderHook(callback, _extends({}, options, { wrapper })); ret.controller = nm['controller']; return ret; }; renderDataClient.cleanup = () => {}; renderDataClient.allSettled = () => Promise.allSettled([]); return renderDataClient; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWJzY3JpcHRpb25NYW5hZ2VyIiwiTmV0d29ya01hbmFnZXIiLCJQb2xsaW5nU3Vic2NyaXB0aW9uIiwiQ29udHJvbGxlciIsIlJlYWN0IiwibWVtbyIsIlN1c3BlbnNlIiwicmVuZGVySG9vayIsImFjdCIsIk1vY2tDb250cm9sbGVyIiwibW9ja0luaXRpYWxTdGF0ZSIsImpzeCIsIl9qc3giLCJtYWtlUmVuZGVyRGF0YUhvb2siLCJQcm92aWRlciIsInJlbmRlckRhdGFDbGllbnQiLCJjYWxsYmFjayIsIl9yZWYiLCJpbml0aWFsRml4dHVyZXMiLCJyZXNvbHZlckZpeHR1cmVzIiwiZ2V0SW5pdGlhbEludGVyY2VwdG9yRGF0YSIsIm9wdGlvbnMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsIl9leGNsdWRlZCIsIkFjdENvbnRyb2xsZXIiLCJmaXh0dXJlcyIsImNvbnN0cnVjdG9yIiwic2V0UmVzcG9uc2UiLCJyZXNvbHZlIiwiYXJncyIsInByb21pc2UiLCJjYWxsIiwibm0iLCJzbSIsIm1hbmFnZXJzIiwiY2xlYW51cCIsImNsZWFudXBEYXRlIiwiSW5maW5pdHkiLCJPYmplY3QiLCJ2YWx1ZXMiLCJmb3JFYWNoIiwicmVqIiwibWFuYWdlciIsImFsbFNldHRsZWQiLCJpbml0aWFsU3RhdGUiLCJQcm92aWRlcldpdGhSZXNvbHZlciIsImNoaWxkcmVuIiwiZGV2QnV0dG9uIiwiV3JhcHBlciIsIndyYXBwZXIiLCJQcm92aWRlcldpdGhXcmFwcGVyIiwiUHJvdmlkZXJXcmFwcGVkIiwicHJvcHMiLCJfZXh0ZW5kcyIsIl9yZWYyIiwiX2V4Y2x1ZGVkMiIsImZhbGxiYWNrIiwicmV0IiwiY29udHJvbGxlciIsIlByb21pc2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFrZVJlbmRlckRhdGFDbGllbnQvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YXRlLFxuICBNYW5hZ2VyLFxuICBTdWJzY3JpcHRpb25NYW5hZ2VyLFxuICBOZXR3b3JrTWFuYWdlcixcbiAgUG9sbGluZ1N1YnNjcmlwdGlvbixcbiAgQ29udHJvbGxlcixcbiAgR2VuZXJpY0Rpc3BhdGNoLFxuICBEYXRhQ2xpZW50RGlzcGF0Y2gsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgU3VzcGVuc2UgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7XG4gIHJlbmRlckhvb2ssXG4gIGFjdCxcbiAgUmVuZGVySG9va1Jlc3VsdCxcbiAgdHlwZSBSZW5kZXJIb29rT3B0aW9ucyxcbn0gZnJvbSAnLi9yZW5kZXJIb29rLmNqcyc7XG5pbXBvcnQgeyBJbnRlcmNlcHRvciwgRml4dHVyZSB9IGZyb20gJy4uL2ZpeHR1cmVUeXBlcy5qcyc7XG5pbXBvcnQgeyBNb2NrQ29udHJvbGxlciB9IGZyb20gJy4uL01vY2tDb250cm9sbGVyLmpzJztcbmltcG9ydCBtb2NrSW5pdGlhbFN0YXRlIGZyb20gJy4uL21vY2tTdGF0ZS5qcyc7XG5pbXBvcnQgeyBNb2NrUHJvcHMgfSBmcm9tICcuLi9tb2NrVHlwZXMuanMnO1xuXG4vKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvbWFrZVJlbmRlckRhdGFIb29rICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYWtlUmVuZGVyRGF0YUhvb2soXG4gIFByb3ZpZGVyOiBSZWFjdC5Db21wb25lbnRUeXBlPERhdGFQcm92aWRlclByb3BzPixcbikge1xuICBjb25zdCByZW5kZXJEYXRhQ2xpZW50OiBSZW5kZXJEYXRhSG9vayA9ICg8UCwgUiwgVCA9IGFueT4oXG4gICAgY2FsbGJhY2s6IChwcm9wczogUCkgPT4gUixcbiAgICB7XG4gICAgICBpbml0aWFsRml4dHVyZXMsXG4gICAgICByZXNvbHZlckZpeHR1cmVzLFxuICAgICAgZ2V0SW5pdGlhbEludGVyY2VwdG9yRGF0YSA9ICgpID0+ICh7fSkgYXMgYW55LFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH06IHtcbiAgICAgIGluaXRpYWxQcm9wcz86IFA7XG4gICAgICBpbml0aWFsRml4dHVyZXM/OiBGaXh0dXJlW107XG4gICAgICByZXNvbHZlckZpeHR1cmVzPzogKEZpeHR1cmUgfCBJbnRlcmNlcHRvcjxUPilbXTtcbiAgICAgIGdldEluaXRpYWxJbnRlcmNlcHRvckRhdGE/OiAoKSA9PiBUO1xuICAgICAgd3JhcHBlcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8UmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48UD4+O1xuICAgIH0gJiBPbWl0PFJlbmRlckhvb2tPcHRpb25zPFA+LCAnaW5pdGlhbFByb3BzJyB8ICd3cmFwcGVyJz4gPSB7fSBhcyBhbnksXG4gICk6IFJlbmRlckhvb2tSZXN1bHQ8UiwgUD4gJiB7IGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgfSA9PiB7XG4gICAgLyoqIFdyYXBzIGRpc3BhdGNoZXMgdGhhdCBhcmUgdHlwaWNhbGx5IGNhbGxlZCBkZWNsYXJhdGl2ZWx5IGluIGFjdCgpICovXG4gICAgY2xhc3MgQWN0Q29udHJvbGxlcjxcbiAgICAgIEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2gsXG4gICAgICBUID0ge30sXG4gICAgPiBleHRlbmRzIE1vY2tDb250cm9sbGVyKFxuICAgICAgQ29udHJvbGxlcixcbiAgICAgIHJlc29sdmVyRml4dHVyZXMgP1xuICAgICAgICB7XG4gICAgICAgICAgZml4dHVyZXM6IHJlc29sdmVyRml4dHVyZXMsXG4gICAgICAgICAgZ2V0SW5pdGlhbEludGVyY2VwdG9yRGF0YSxcbiAgICAgICAgfVxuICAgICAgOiB7fSxcbiAgICApPEQ+IHtcbiAgICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBvcHRpb25zOiBNb2NrUHJvcHM8VD4gJiBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIENvbnRyb2xsZXI8RD4+WzBdLFxuICAgICAgKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCB7IHNldFJlc3BvbnNlLCByZXNvbHZlIH0gPSB0aGlzO1xuICAgICAgICB0aGlzLnNldFJlc3BvbnNlID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICBsZXQgcHJvbWlzZTogYW55O1xuICAgICAgICAgIGFjdCgoKSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlID0gc2V0UmVzcG9uc2UuY2FsbCh0aGlzLCAuLi5hcmdzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZXNvbHZlID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICBsZXQgcHJvbWlzZTogYW55O1xuICAgICAgICAgIGFjdCgoKSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlID0gcmVzb2x2ZS5jYWxsKHRoaXMsIC4uLmFyZ3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdlIHdhbnQgZnJlc2ggbWFuYWdlciBzdGF0ZSBpbiBlYWNoIGluc3RhbmNlXG4gICAgY29uc3Qgbm0gPSBuZXcgTmV0d29ya01hbmFnZXIoKTtcbiAgICBjb25zdCBzbSA9IG5ldyBTdWJzY3JpcHRpb25NYW5hZ2VyKFBvbGxpbmdTdWJzY3JpcHRpb24pO1xuICAgIGNvbnN0IG1hbmFnZXJzID0gW25tLCBzbV07XG4gICAgLy8gdGhpcyBwYXR0ZXJuIGlzIGRhbmdlcm91cyBpZiByZW5kZXJEYXRhQ2xpZW50IGlzIHNoYXJlZCBiZXR3ZWVuIHRlc3RzXG4gICAgLy8gVE9ETzogbW92ZSB0byByZXR1cm4gdmFsdWVcbiAgICByZW5kZXJEYXRhQ2xpZW50LmNsZWFudXAgPSAoKSA9PiB7XG4gICAgICBubS5jbGVhbnVwRGF0ZSA9IEluZmluaXR5O1xuICAgICAgT2JqZWN0LnZhbHVlcyhubVsncmVqZWN0b3JzJ10gYXMgUmVjb3JkPHN0cmluZywgYW55PikuZm9yRWFjaChyZWogPT4ge1xuICAgICAgICByZWooKTtcbiAgICAgIH0pO1xuICAgICAgbm1bJ2NsZWFyQWxsJ10oKTtcbiAgICAgIG1hbmFnZXJzLmZvckVhY2gobWFuYWdlciA9PiBtYW5hZ2VyLmNsZWFudXAoKSk7XG4gICAgfTtcbiAgICByZW5kZXJEYXRhQ2xpZW50LmFsbFNldHRsZWQgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gbm0uYWxsU2V0dGxlZCgpO1xuICAgIH07XG5cbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFN0YXRlPHVua25vd24+ID0gbW9ja0luaXRpYWxTdGF0ZShpbml0aWFsRml4dHVyZXMpO1xuXG4gICAgY29uc3QgUHJvdmlkZXJXaXRoUmVzb2x2ZXI6IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PiA9IG1lbW8oXG4gICAgICBmdW5jdGlvbiBQcm92aWRlcldpdGhSZXNvbHZlcih7IGNoaWxkcmVuIH06IFJlYWN0LlByb3BzV2l0aENoaWxkcmVuPFA+KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFByb3ZpZGVyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGU9e2luaXRpYWxTdGF0ZX1cbiAgICAgICAgICAgIENvbnRyb2xsZXI9e0FjdENvbnRyb2xsZXJ9XG4gICAgICAgICAgICBtYW5hZ2Vycz17bWFuYWdlcnN9XG4gICAgICAgICAgICBkZXZCdXR0b249e251bGx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBXcmFwcGVyOiBSZWFjdC5Db21wb25lbnRUeXBlPFJlYWN0LlByb3BzV2l0aENoaWxkcmVuPFA+PiB8IHVuZGVmaW5lZCA9XG4gICAgICBvcHRpb25zPy53cmFwcGVyO1xuICAgIGNvbnN0IFByb3ZpZGVyV2l0aFdyYXBwZXIgPVxuICAgICAgV3JhcHBlciA/XG4gICAgICAgIGZ1bmN0aW9uIFByb3ZpZGVyV3JhcHBlZChwcm9wczogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48UD4pIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFByb3ZpZGVyV2l0aFJlc29sdmVyPlxuICAgICAgICAgICAgICA8V3JhcHBlciB7Li4ucHJvcHN9IC8+XG4gICAgICAgICAgICA8L1Byb3ZpZGVyV2l0aFJlc29sdmVyPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIDogUHJvdmlkZXJXaXRoUmVzb2x2ZXI7XG5cbiAgICBjb25zdCB3cmFwcGVyOiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT4gPSAoe1xuICAgICAgY2hpbGRyZW4sXG4gICAgICAuLi5wcm9wc1xuICAgIH06IFJlYWN0LlByb3BzV2l0aENoaWxkcmVuPFA+KSA9PiAoXG4gICAgICA8UHJvdmlkZXJXaXRoV3JhcHBlciB7Li4uKHByb3BzIGFzIGFueSl9PlxuICAgICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9e251bGx9PntjaGlsZHJlbn08L1N1c3BlbnNlPlxuICAgICAgPC9Qcm92aWRlcldpdGhXcmFwcGVyPlxuICAgICk7XG5cbiAgICBjb25zdCByZXQ6IGFueSA9IHJlbmRlckhvb2soY2FsbGJhY2ssIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB3cmFwcGVyLFxuICAgIH0pO1xuICAgIHJldC5jb250cm9sbGVyID0gbm1bJ2NvbnRyb2xsZXInXTtcbiAgICByZXR1cm4gcmV0O1xuICB9KSBhcyBhbnk7XG4gIHJlbmRlckRhdGFDbGllbnQuY2xlYW51cCA9ICgpID0+IHt9O1xuICByZW5kZXJEYXRhQ2xpZW50LmFsbFNldHRsZWQgPSAoKSA9PiBQcm9taXNlLmFsbFNldHRsZWQoW10pO1xuICByZXR1cm4gcmVuZGVyRGF0YUNsaWVudDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVByb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBtYW5hZ2VyczogTWFuYWdlcltdO1xuICBpbml0aWFsU3RhdGU6IFN0YXRlPHVua25vd24+O1xuICBDb250cm9sbGVyOiB0eXBlb2YgQ29udHJvbGxlcjxhbnk+O1xuICBkZXZCdXR0b246IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgUmVuZGVyRGF0YUhvb2sgPSAoPFAsIFI+KFxuICBjYWxsYmFjazogKHByb3BzOiBQKSA9PiBSLFxuICBvcHRpb25zPzoge1xuICAgIGluaXRpYWxQcm9wcz86IFA7XG4gICAgaW5pdGlhbEZpeHR1cmVzPzogcmVhZG9ubHkgRml4dHVyZVtdO1xuICAgIHJlYWRvbmx5IHJlc29sdmVyRml4dHVyZXM/OiByZWFkb25seSAoRml4dHVyZSB8IEludGVyY2VwdG9yKVtdO1xuICAgIHdyYXBwZXI/OiBSZWFjdC5Db21wb25lbnRUeXBlPFJlYWN0LlByb3BzV2l0aENoaWxkcmVuPFA+PjtcbiAgfSAmIE9taXQ8UmVuZGVySG9va09wdGlvbnM8UD4sICdpbml0aWFsUHJvcHMnIHwgJ3dyYXBwZXInPixcbikgPT4gUmVuZGVySG9va1Jlc3VsdDxSLCBQPiAmIHtcbiAgY29udHJvbGxlcjogQ29udHJvbGxlcjtcbn0pICYge1xuICBjbGVhbnVwOiAoKSA9PiB2b2lkO1xuICBhbGxTZXR0bGVkOiAoKSA9PiBQcm9taXNlPFByb21pc2VTZXR0bGVkUmVzdWx0PHVua25vd24+W10+IHwgdW5kZWZpbmVkO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBR0VBLG1CQUFtQixFQUNuQkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLFVBQVUsUUFHTCxvQkFBb0I7QUFDM0IsT0FBT0MsS0FBSyxJQUFJQyxJQUFJLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBRTdDLFNBQ0VDLFVBQVUsRUFDVkMsR0FBRyxRQUdFLGtCQUFrQjtBQUV6QixTQUFTQyxjQUFjLFFBQVEsc0JBQXNCO0FBQ3JELE9BQU9DLGdCQUFnQixNQUFNLGlCQUFpQjtBQUFDLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQUcvQztBQUNBLGVBQWUsU0FBU0Msa0JBQWtCQSxDQUN4Q0MsUUFBZ0Qs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