Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielfttorres/efd4ef8e2a7b0cf94122e136640a6543 to your computer and use it in GitHub Desktop.
Save danielfttorres/efd4ef8e2a7b0cf94122e136640a6543 to your computer and use it in GitHub Desktop.
Mock Relay
import React from 'react';
import {storiesOf} from '@kadira/storybook';
import mockRelay from '@loggi/js/mocks/relay';
import {Component} from '../';
import viewer from './fixtures/viewer'; // json data
const relay = {
variables: {
foo: {},
bar: true,
baz: false
}
};
storiesOf('Component', module)
.add('default', () => {
let Component = mockRelay(Component);
return (
<Component
viewer={viewer}
relay={relay}
/>
);
});
import React, {PropTypes} from 'react';
import Relay from 'react-relay';
import type {RelayContainer} from 'react-relay/src/tools/RelayTypes';
const ROOT_QUERY: Object = {
name: 'rootQuery',
params: {},
queries: {}
};
export default function mockRelay(Component: any): MockRelay {
return class MockRelay extends React.Component {
static displayName = 'MockRelay';
static propTypes = {
relay: PropTypes.object
};
static defaultProps = {
relay: {}
};
render () {
const Container: RelayContainer = Relay.createContainer(
Component, {
fragments: {},
initialVariables: {...this.props.relay.variables}
}
);
return (
<Relay.Renderer
render={() => <Container {...this.props} />}
Container={Container}
queryConfig={ROOT_QUERY}
environment={Relay.Store}
/>
);
}
};
}
Relay.injectNetworkLayer({
sendMutation() {
return new Promise(resolve => resolve());
},
sendQueries() {
return new Promise(resolve => resolve());
},
supports() {
return true;
}
});
import React from 'react';
import {isContainer, Renderer} from 'react-relay';
import mockRelay from '../relay';
import {shallow} from 'enzyme';
describe('RelayHOC', () => {
beforeEach(() => {
jest.resetModules();
});
it('should get a RelayRenderer component with the passed component as Container prop', () => {
const RelayComponent = mockRelay('div');
const Component = shallow(<RelayComponent />);
expect(Component.dive().find(Renderer).length).toBe(1);
expect(isContainer(Component.prop('Container'))).toBe(true);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment