Skip to content

Commit

Permalink
[Testing] Support for resolvers in ApolloTestProvider (#7612)
Browse files Browse the repository at this point in the history
* support for resolvers in ApolloTestProvider

* Update ApolloTestProvider.tsx

* Update ApolloTestProvider.tsx
  • Loading branch information
salazarm committed Apr 28, 2022
1 parent b8be100 commit b9be0d4
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions js_modules/dagit/packages/core/src/testing/ApolloTestProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {defaultMocks} from './defaultMocks';

export interface ApolloTestProps {
/**
* Either a resolver object or an array of resolver objects.
* Either a mock object or an array of mock objects.
*
* If you have test-level default mocks that may be overridden on a per-test basis,
* pass an array of the mock resolver objects:
Expand All @@ -22,27 +22,35 @@ export interface ApolloTestProps {
* objects.
*/
mocks?: any;

resolvers?: any;
}

interface Props extends ApolloTestProps {
typeDefs: DocumentNode;
}

export const ApolloTestProvider: React.FC<Props> = (props) => {
const {children, mocks = [], typeDefs} = props;
const {children, mocks = [], typeDefs, resolvers = []} = props;

const client = React.useMemo(() => {
const mocksToMerge = Array.isArray(mocks) ? mocks : [mocks];
const mocksWithMerge = mergeResolvers([defaultMocks, ...mocksToMerge]);

const schema = makeExecutableSchema({typeDefs});
const mockedSchema = addMocksToSchema({schema, mocks: mocksWithMerge});
const mockedSchema = addMocksToSchema({
schema,
mocks: mocksWithMerge,
resolvers: () => {
return mergeResolvers(resolvers);
},
});
const cache = createAppCache();
return new ApolloClient({
cache,
link: new SchemaLink({schema: mockedSchema}),
});
}, [mocks, typeDefs]);
}, [mocks, typeDefs, resolvers]);

return <ApolloProvider client={client}>{children}</ApolloProvider>;
};

0 comments on commit b9be0d4

Please sign in to comment.