File tree Expand file tree Collapse file tree 4 files changed +29
-17
lines changed
Expand file tree Collapse file tree 4 files changed +29
-17
lines changed Original file line number Diff line number Diff line change 11import { DataProvider } from 'react-admin' ;
2- import fakeServerFactory from '../fakeServer' ;
32
43export default ( type : string ) => {
54 // The fake servers require to generate data, which can take some time.
@@ -29,7 +28,6 @@ export default (type: string) => {
2928} ;
3029
3130const getDataProvider = async ( type : string ) : Promise < DataProvider > => {
32- await fakeServerFactory ( process . env . REACT_APP_DATA_PROVIDER || '' ) ;
3331 /**
3432 * This demo can work with either a fake REST server, or a fake GraphQL server.
3533 *
Original file line number Diff line number Diff line change 1- import { http } from 'msw' ;
2- import { setupWorker } from 'msw/browser' ;
31import JsonGraphqlServer from 'json-graphql-server' ;
42import generateData from 'data-generator-retail' ;
3+ import { HttpResponse , HttpResponseResolver } from 'msw' ;
54
6- const data = generateData ( ) ;
7- const restServer = JsonGraphqlServer ( { data } ) ;
8- const handler = restServer . getHandler ( ) ;
5+ export default ( ) : HttpResponseResolver => {
6+ const data = generateData ( ) ;
7+ const server = JsonGraphqlServer ( { data } ) ;
8+ const graphqlHandler = server . getHandler ( ) ;
99
10- export const worker = setupWorker ( http . all ( / h t t p : \/ \/ l o c a l h o s t : 4 0 0 0 / , handler ) ) ;
10+ // Temporary workaround for MSW's graphql handler because json-graphql-server is not yet compatible with MSW
11+ const handler : HttpResponseResolver = async ( { request } ) => {
12+ const body = await request . text ( ) ;
13+ const result = await graphqlHandler ( {
14+ requestBody : body ,
15+ } ) ;
1116
12- export default ( ) => worker ;
17+ return HttpResponse . json ( JSON . parse ( result . body ) ) ;
18+ } ;
19+
20+ return handler ;
21+ } ;
Original file line number Diff line number Diff line change 11// only install the mocks once
22// this is necessary with react@18 in StrictMode
33let fakeServer : any ;
4+ import { http } from 'msw' ;
5+ import { setupWorker } from 'msw/browser' ;
46
5- export default ( type : string ) => {
7+ export default async ( type : string ) => {
68 if ( ! fakeServer ) {
79 switch ( type ) {
810 case 'graphql' :
9- fakeServer = import ( './graphql' ) . then ( factory =>
11+ fakeServer = await import ( './graphql' ) . then ( factory =>
1012 factory . default ( )
1113 ) ;
1214 break ;
1315 default :
14- fakeServer = import ( './rest' ) . then ( factory =>
16+ fakeServer = await import ( './rest' ) . then ( factory =>
1517 factory . default ( )
1618 ) ;
1719 }
1820 }
19- return fakeServer ;
21+ const worker = setupWorker ( http . all ( / h t t p : \/ \/ l o c a l h o s t : 4 0 0 0 / , fakeServer ) ) ;
22+ return worker ;
2023} ;
Original file line number Diff line number Diff line change 11import { createRoot } from 'react-dom/client' ;
22
33import App from './App' ;
4- import { worker } from './fakeServer/graphql ' ;
4+ import fakeServerWorker from './fakeServer' ;
55
66const container = document . getElementById ( 'root' ) ;
77if ( ! container ) {
88 throw new Error ( 'No container found' ) ;
99}
1010const root = createRoot ( container ) ;
1111
12- worker . start ( { onUnhandledRequest : 'bypass' } ) . then ( ( ) => {
13- root . render ( < App /> ) ;
14- } ) ;
12+ fakeServerWorker ( process . env . REACT_APP_DATA_PROVIDER ?? '' )
13+ . then ( worker => worker . start ( { onUnhandledRequest : 'bypass' } ) )
14+ . then ( ( ) => {
15+ root . render ( < App /> ) ;
16+ } ) ;
You can’t perform that action at this time.
0 commit comments