Skip to content

Commit

Permalink
Merge pull request apollographql/apollo-server#2821 from lgandecki/pa…
Browse files Browse the repository at this point in the history
…ssContextToLocalDataStore

pass context to localGraphQLDatasource for testing purposes
Apollo-Orig-Commit-AS: apollographql/apollo-server@b4c6642
  • Loading branch information
James Baxley committed Jun 12, 2019
2 parents ead50a0 + df28c0b commit 0e41424
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
2 changes: 2 additions & 0 deletions gateway-js/src/datasources/LocalGraphQLDatasource.ts
Expand Up @@ -18,6 +18,7 @@ export class LocalGraphQLDataSource implements GraphQLDataSource {

async process<TContext>({
request,
context,
}: Pick<GraphQLRequestContext<TContext>, 'request' | 'context'>): Promise<
GraphQLResponse
> {
Expand All @@ -26,6 +27,7 @@ export class LocalGraphQLDataSource implements GraphQLDataSource {
source: request.query!,
variableValues: request.variables,
operationName: request.operationName,
contextValue: context,
});
}

Expand Down
@@ -0,0 +1,44 @@
import { LocalGraphQLDataSource } from '../LocalGraphQLDatasource';
import { buildFederatedSchema } from '@apollo/federation';
import gql from 'graphql-tag';

describe('constructing requests', () => {
it('accepts context', async () => {
const typeDefs = gql`
type Query {
me: User
}
type User {
id: ID
name: String!
}
`;
const resolvers = {
Query: {
me(_, __, { userId }) {
const users = [
{ id: 1, name: 'otherGuy' },
{ id: 2, name: 'james' },
{
id: 3,
name: 'someoneElse',
},
];
return users.find(user => user.id === userId);
},
},
};
const schema = buildFederatedSchema([{ typeDefs, resolvers }]);

const DataSource = new LocalGraphQLDataSource(schema);

const { data } = await DataSource.process({
request: {
query: '{ me { name } }',
},
context: { userId: 2 },
});

expect(data).toEqual({ me: { name: 'james' } });
});
});

0 comments on commit 0e41424

Please sign in to comment.