Skip to content

Instantly share code, notes, and snippets.

View JakeDawkins's full-sized avatar

Jake Dawkins JakeDawkins

View GitHub Profile
// src/server.js
context: ({ req }) => {
// pass the request information through to the model
return {
user,
models: {
User: generateUserModel({ req }),
...
}
};
import React from 'react';
import gql from 'graphql-tag';
import { Query } from 'react-apollo';
// Make sure the query is also exported -- not just the component
export const GET_DOG_QUERY = gql`
query getDog($name: String) {
dog(name: $name) {
id
name
// Broken because it's missing Apollo Client in the context
it('should render without error', () => {
renderer.create(<Dog name="Buck" />);
});
// Not predictable
it('renders without error', () => {
renderer.create(
<ApolloProvider client={client}>
<Dog name="Buck" />
</ApolloProvider>,
);
});
// dog.test.js
import { MockedProvider } from 'react-apollo/test-utils';
// The component AND the query need to be exported
import { GET_DOG_QUERY, Dog } from './dog';
const mocks = [
{
request: {
it('should render loading state initially', () => {
const component = renderer.create(
<MockedProvider mocks={[]}>
<Dog />
</MockedProvider>,
);
const tree = component.toJSON();
expect(tree.children).toContain('Loading...');
});
const wait = require('waait');
it('should render dog', async () => {
const dogMock = {
request: {
query: GET_DOG_QUERY,
variables: { name: 'Buck' },
},
result: {
data: { dog: { id: 1, name: 'Buck', breed: 'poodle' } },
it('should show error UI', async () => {
const dogMock = {
request: {
query: GET_DOG_QUERY,
variables: { name: 'Buck' },
},
error: new Error('aw shucks'),
};
const component = renderer.create(
export const DELETE_DOG_MUTATION = gql`
mutation deleteDog($name: String!) {
deleteDog(name: $name) {
id
name
breed
}
}
`;
import DeleteButton, { DELETE_DOG_MUTATION } from './delete-dog';
it('should render without error', () => {
renderer.create(
<MockedProvider mocks={[]}>
<DeleteButton />
</MockedProvider>,
);
});