@data-client/test
Version:
Testing utilities for Data Client
36 lines (35 loc) • 4.72 kB
JavaScript
'use client';
import { ControllerContext, useController } from '@data-client/react';
import { useMemo } from 'react';
import React from 'react';
import { MockController } from './MockController.js';
import { jsx as _jsx } from "react/jsx-runtime";
/** Can be used to mock responses based on fixtures provided.
*
* <MockResolver fixtures={postFixtures[state]}><MyComponent /></MockResolver>
*
* Place below <DataProvider /> and above any components you want to mock.
*/
export default function MockResolver({
children,
fixtures,
getInitialInterceptorData = () => ({})
}) {
const controller = useController();
const controllerInterceptor = useMemo(() => {
const MockedController = MockController(controller.constructor, fixtures ? {
fixtures,
getInitialInterceptorData
} : {});
const controllerInterceptor = new MockedController({
...controller,
dispatch: controller['_dispatch'] ?? controller.dispatch
});
return controllerInterceptor;
}, [controller, fixtures, getInitialInterceptorData]);
return /*#__PURE__*/_jsx(ControllerContext.Provider, {
value: controllerInterceptor,
children: children
});
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250cm9sbGVyQ29udGV4dCIsInVzZUNvbnRyb2xsZXIiLCJ1c2VNZW1vIiwiUmVhY3QiLCJNb2NrQ29udHJvbGxlciIsImpzeCIsIl9qc3giLCJNb2NrUmVzb2x2ZXIiLCJjaGlsZHJlbiIsImZpeHR1cmVzIiwiZ2V0SW5pdGlhbEludGVyY2VwdG9yRGF0YSIsImNvbnRyb2xsZXIiLCJjb250cm9sbGVySW50ZXJjZXB0b3IiLCJNb2NrZWRDb250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJkaXNwYXRjaCIsIlByb3ZpZGVyIiwidmFsdWUiXSwic291cmNlcyI6WyIuLi9zcmMvTW9ja1Jlc29sdmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBDb250cm9sbGVyQ29udGV4dCwgdXNlQ29udHJvbGxlciB9IGZyb20gJ0BkYXRhLWNsaWVudC9yZWFjdCc7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgTW9ja0NvbnRyb2xsZXIgfSBmcm9tICcuL01vY2tDb250cm9sbGVyLmpzJztcbmltcG9ydCB7IE1vY2tQcm9wcyB9IGZyb20gJy4vbW9ja1R5cGVzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNb2NrUmVzb2x2ZXJQcm9wczxUPiBleHRlbmRzIE1vY2tQcm9wczxUPiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHNpbGVuY2VNaXNzaW5nPzogYm9vbGVhbjtcbn1cblxuLyoqIENhbiBiZSB1c2VkIHRvIG1vY2sgcmVzcG9uc2VzIGJhc2VkIG9uIGZpeHR1cmVzIHByb3ZpZGVkLlxuICpcbiAqIDxNb2NrUmVzb2x2ZXIgZml4dHVyZXM9e3Bvc3RGaXh0dXJlc1tzdGF0ZV19PjxNeUNvbXBvbmVudCAvPjwvTW9ja1Jlc29sdmVyPlxuICpcbiAqIFBsYWNlIGJlbG93IDxEYXRhUHJvdmlkZXIgLz4gYW5kIGFib3ZlIGFueSBjb21wb25lbnRzIHlvdSB3YW50IHRvIG1vY2suXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vY2tSZXNvbHZlcjxUID0gYW55Pih7XG4gIGNoaWxkcmVuLFxuICBmaXh0dXJlcyxcbiAgZ2V0SW5pdGlhbEludGVyY2VwdG9yRGF0YSA9ICgpID0+ICh7fSkgYXMgYW55LFxufTogTW9ja1Jlc29sdmVyUHJvcHM8VD4pIHtcbiAgY29uc3QgY29udHJvbGxlciA9IHVzZUNvbnRyb2xsZXIoKTtcblxuICBjb25zdCBjb250cm9sbGVySW50ZXJjZXB0b3IgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBNb2NrZWRDb250cm9sbGVyID0gTW9ja0NvbnRyb2xsZXIoXG4gICAgICBjb250cm9sbGVyLmNvbnN0cnVjdG9yIGFzIGFueSxcbiAgICAgIGZpeHR1cmVzID9cbiAgICAgICAge1xuICAgICAgICAgIGZpeHR1cmVzLFxuICAgICAgICAgIGdldEluaXRpYWxJbnRlcmNlcHRvckRhdGEsXG4gICAgICAgIH1cbiAgICAgIDoge30sXG4gICAgKTtcbiAgICBjb25zdCBjb250cm9sbGVySW50ZXJjZXB0b3IgPSBuZXcgTW9ja2VkQ29udHJvbGxlcih7XG4gICAgICAuLi5jb250cm9sbGVyLFxuICAgICAgZGlzcGF0Y2g6IGNvbnRyb2xsZXJbJ19kaXNwYXRjaCddID8/IGNvbnRyb2xsZXIuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbnRyb2xsZXJJbnRlcmNlcHRvcjtcbiAgfSwgW2NvbnRyb2xsZXIsIGZpeHR1cmVzLCBnZXRJbml0aWFsSW50ZXJjZXB0b3JEYXRhXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udHJvbGxlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRyb2xsZXJJbnRlcmNlcHRvcn0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db250cm9sbGVyQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWixTQUFTQSxpQkFBaUIsRUFBRUMsYUFBYSxRQUFRLG9CQUFvQjtBQUNyRSxTQUFTQyxPQUFPLFFBQVEsT0FBTztBQUMvQixPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUV6QixTQUFTQyxjQUFjLFFBQVEscUJBQXFCO0FBQUMsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBUXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBU0MsWUFBWUEsQ0FBVTtFQUM1Q0MsUUFBUTtFQUNSQyxRQUFRO0VBQ1JDLHlCQUF5QixHQUFHQSxDQUFBLE1BQU8sQ0FBQyxDQUFDO0FBQ2pCLENBQUMsRUFBRTtFQUN2QixNQUFNQyxVQUFVLEdBQUdWLGFBQWEsQ0FBQyxDQUFDO0VBRWxDLE1BQU1XLHFCQUFxQixHQUFHVixPQUFPLENBQUMsTUFBTTtJQUMxQyxNQUFNVyxnQkFBZ0IsR0FBR1QsY0FBYyxDQUNyQ08sVUFBVSxDQUFDRyxXQUFXLEVBQ3RCTCxRQUFRLEdBQ047TUFDRUEsUUFBUTtNQUNSQztJQUNGLENBQUMsR0FDRCxDQUFDLENBQ0wsQ0FBQztJQUNELE1BQU1FLHFCQUFxQixHQUFHLElBQUlDLGdCQUFnQixDQUFDO01BQ2pELEdBQUdGLFVBQVU7TUFDYkksUUFBUSxFQUFFSixVQUFVLENBQUMsV0FBVyxDQUFDLElBQUlBLFVBQVUsQ0FBQ0k7SUFDbEQsQ0FBQyxDQUFDO0lBQ0YsT0FBT0gscUJBQXFCO0VBQzlCLENBQUMsRUFBRSxDQUFDRCxVQUFVLEVBQUVGLFFBQVEsRUFBRUMseUJBQXlCLENBQUMsQ0FBQztFQUVyRCxvQkFDRUosSUFBQSxDQUFDTixpQkFBaUIsQ0FBQ2dCLFFBQVE7SUFBQ0MsS0FBSyxFQUFFTCxxQkFBc0I7SUFBQUosUUFBQSxFQUN0REE7RUFBUSxDQUNpQixDQUFDO0FBRWpDIiwiaWdub3JlTGlzdCI6W119