@data-client/test
Version:
Testing utilities for Data Client
37 lines (36 loc) • 5 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
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(() => {
var _controller$_dispatch;
const MockedController = MockController(controller.constructor, fixtures ? {
fixtures,
getInitialInterceptorData
} : {});
const controllerInterceptor = new MockedController(_extends({}, controller, {
dispatch: (_controller$_dispatch = controller['_dispatch']) != null ? _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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZW5kcyIsIkNvbnRyb2xsZXJDb250ZXh0IiwidXNlQ29udHJvbGxlciIsInVzZU1lbW8iLCJSZWFjdCIsIk1vY2tDb250cm9sbGVyIiwianN4IiwiX2pzeCIsIk1vY2tSZXNvbHZlciIsImNoaWxkcmVuIiwiZml4dHVyZXMiLCJnZXRJbml0aWFsSW50ZXJjZXB0b3JEYXRhIiwiY29udHJvbGxlciIsImNvbnRyb2xsZXJJbnRlcmNlcHRvciIsIl9jb250cm9sbGVyJF9kaXNwYXRjaCIsIk1vY2tlZENvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImRpc3BhdGNoIiwiUHJvdmlkZXIiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9Nb2NrUmVzb2x2ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcbmltcG9ydCB7IENvbnRyb2xsZXJDb250ZXh0LCB1c2VDb250cm9sbGVyIH0gZnJvbSAnQGRhdGEtY2xpZW50L3JlYWN0JztcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBNb2NrQ29udHJvbGxlciB9IGZyb20gJy4vTW9ja0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHsgTW9ja1Byb3BzIH0gZnJvbSAnLi9tb2NrVHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vY2tSZXNvbHZlclByb3BzPFQ+IGV4dGVuZHMgTW9ja1Byb3BzPFQ+IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgc2lsZW5jZU1pc3Npbmc/OiBib29sZWFuO1xufVxuXG4vKiogQ2FuIGJlIHVzZWQgdG8gbW9jayByZXNwb25zZXMgYmFzZWQgb24gZml4dHVyZXMgcHJvdmlkZWQuXG4gKlxuICogPE1vY2tSZXNvbHZlciBmaXh0dXJlcz17cG9zdEZpeHR1cmVzW3N0YXRlXX0+PE15Q29tcG9uZW50IC8+PC9Nb2NrUmVzb2x2ZXI+XG4gKlxuICogUGxhY2UgYmVsb3cgPERhdGFQcm92aWRlciAvPiBhbmQgYWJvdmUgYW55IGNvbXBvbmVudHMgeW91IHdhbnQgdG8gbW9jay5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTW9ja1Jlc29sdmVyPFQgPSBhbnk+KHtcbiAgY2hpbGRyZW4sXG4gIGZpeHR1cmVzLFxuICBnZXRJbml0aWFsSW50ZXJjZXB0b3JEYXRhID0gKCkgPT4gKHt9KSBhcyBhbnksXG59OiBNb2NrUmVzb2x2ZXJQcm9wczxUPikge1xuICBjb25zdCBjb250cm9sbGVyID0gdXNlQ29udHJvbGxlcigpO1xuXG4gIGNvbnN0IGNvbnRyb2xsZXJJbnRlcmNlcHRvciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IE1vY2tlZENvbnRyb2xsZXIgPSBNb2NrQ29udHJvbGxlcihcbiAgICAgIGNvbnRyb2xsZXIuY29uc3RydWN0b3IgYXMgYW55LFxuICAgICAgZml4dHVyZXMgP1xuICAgICAgICB7XG4gICAgICAgICAgZml4dHVyZXMsXG4gICAgICAgICAgZ2V0SW5pdGlhbEludGVyY2VwdG9yRGF0YSxcbiAgICAgICAgfVxuICAgICAgOiB7fSxcbiAgICApO1xuICAgIGNvbnN0IGNvbnRyb2xsZXJJbnRlcmNlcHRvciA9IG5ldyBNb2NrZWRDb250cm9sbGVyKHtcbiAgICAgIC4uLmNvbnRyb2xsZXIsXG4gICAgICBkaXNwYXRjaDogY29udHJvbGxlclsnX2Rpc3BhdGNoJ10gPz8gY29udHJvbGxlci5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICByZXR1cm4gY29udHJvbGxlckludGVyY2VwdG9yO1xuICB9LCBbY29udHJvbGxlciwgZml4dHVyZXMsIGdldEluaXRpYWxJbnRlcmNlcHRvckRhdGFdKTtcblxuICByZXR1cm4gKFxuICAgIDxDb250cm9sbGVyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udHJvbGxlckludGVyY2VwdG9yfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0NvbnRyb2xsZXJDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxZQUFZOztBQUFDLE9BQUFBLFFBQUE7QUFDYixTQUFTQyxpQkFBaUIsRUFBRUMsYUFBYSxRQUFRLG9CQUFvQjtBQUNyRSxTQUFTQyxPQUFPLFFBQVEsT0FBTztBQUMvQixPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUV6QixTQUFTQyxjQUFjLFFBQVEscUJBQXFCO0FBQUMsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBUXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBU0MsWUFBWUEsQ0FBVTtFQUM1Q0MsUUFBUTtFQUNSQyxRQUFRO0VBQ1JDLHlCQUF5QixHQUFHQSxDQUFBLE1BQU8sQ0FBQyxDQUFDO0FBQ2pCLENBQUMsRUFBRTtFQUN2QixNQUFNQyxVQUFVLEdBQUdWLGFBQWEsQ0FBQyxDQUFDO0VBRWxDLE1BQU1XLHFCQUFxQixHQUFHVixPQUFPLENBQUMsTUFBTTtJQUFBLElBQUFXLHFCQUFBO0lBQzFDLE1BQU1DLGdCQUFnQixHQUFHVixjQUFjLENBQ3JDTyxVQUFVLENBQUNJLFdBQVcsRUFDdEJOLFFBQVEsR0FDTjtNQUNFQSxRQUFRO01BQ1JDO0lBQ0YsQ0FBQyxHQUNELENBQUMsQ0FDTCxDQUFDO0lBQ0QsTUFBTUUscUJBQXFCLEdBQUcsSUFBSUUsZ0JBQWdCLENBQUFmLFFBQUEsS0FDN0NZLFVBQVU7TUFDYkssUUFBUSxHQUFBSCxxQkFBQSxHQUFFRixVQUFVLENBQUMsV0FBVyxDQUFDLFlBQUFFLHFCQUFBLEdBQUlGLFVBQVUsQ0FBQ0s7SUFBUSxFQUN6RCxDQUFDO0lBQ0YsT0FBT0oscUJBQXFCO0VBQzlCLENBQUMsRUFBRSxDQUFDRCxVQUFVLEVBQUVGLFFBQVEsRUFBRUMseUJBQXlCLENBQUMsQ0FBQztFQUVyRCxvQkFDRUosSUFBQSxDQUFDTixpQkFBaUIsQ0FBQ2lCLFFBQVE7SUFBQ0MsS0FBSyxFQUFFTixxQkFBc0I7SUFBQUosUUFBQSxFQUN0REE7RUFBUSxDQUNpQixDQUFDO0FBRWpDIiwiaWdub3JlTGlzdCI6W119