import * as React from 'react'; import {shallow, mount, ReactWrapper, ShallowWrapper} from 'enzyme'; import {createMockEnvironment, MockPayloadGenerator} from 'relay-test-utils'; import {QueryRenderer, graphql} from 'react-relay'; import * as ReactTestRenderer from 'react-test-renderer'; import FragmentedPokemonShow, {PokemonShow, Props} from 'packs/frontend/components/pages/pokemon/Show'; import {Show_pokemon} from 'packs/frontend/components/pages/pokemon/__generated__/Show_pokemon.graphql'; const pokemon: Show_pokemon = { id: '1', iid: 'x1', nickname: 'Bulbasaur', pokedexNumber: 1, ' $refType': '' as any, }; const defaultProps = { pokemon: pokemon, }; function setup(props = defaultProps): ShallowWrapper { return shallow(); } function mountSetup(props = defaultProps): ReactWrapper { return mount(); } describe('', () => { it('displays a pokemon', () => { const wrapper = setup(); expect(wrapper).toMatchSnapshot(); }); it('requests data from a GraphQL fragment', () => { const environment = createMockEnvironment(); const mockId = 'mock-id-1'; const TestRenderer = () => ( { const {error, props} = args as {error: Error; props: Props}; if (props) { // Prevent TS Compiler from complaining about unsupplied props const Component = FragmentedPokemonShow as any; return ; } else if (error) { return error.message; } return 'Loading...'; }} /> ); environment.mock.queueOperationResolver(operation => MockPayloadGenerator.generate(operation, { Pokemon: () => ({ id: mockId, iid: '1', nickname: 'Bulba', pokedexNumber: 3, }), }) ); const renderer = ReactTestRenderer.create(); expect(renderer).toMatchSnapshot(); }); });