summaryrefslogtreecommitdiffstats
path: root/stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-09-13 14:18:56 -0400
committerWes Bos <wesbos@gmail.com>2018-09-13 14:18:56 -0400
commit8a5825d52271d712ec7c8348447d433067e13ef2 (patch)
treeba07c218c1b2d4e59c154f2059b69fd858ae65fe /stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js
parentb0d25a9ad3cc1df2fcc11ddb84e4603b94520b09 (diff)
DONE
Diffstat (limited to 'stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js')
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js b/stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js
new file mode 100644
index 0000000..e18bdee
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js
@@ -0,0 +1,80 @@
+import { mount } from 'enzyme';
+import wait from 'waait';
+import toJSON from 'enzyme-to-json';
+import { MockedProvider } from 'react-apollo/test-utils';
+import { ApolloConsumer } from 'react-apollo';
+import Signup, { SIGNUP_MUTATION } from '../components/Signup';
+import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser } from '../lib/testUtils';
+
+function type(wrapper, name, value) {
+ wrapper.find(`input[name="${name}"]`).simulate('change', {
+ target: { name, value },
+ });
+}
+
+const me = fakeUser();
+const mocks = [
+ // signup mock mutation
+ {
+ request: {
+ query: SIGNUP_MUTATION,
+ variables: {
+ name: me.name,
+ email: me.email,
+ password: 'wes',
+ },
+ },
+ result: {
+ data: {
+ signup: {
+ __typename: 'User',
+ id: 'abc123',
+ email: me.email,
+ name: me.name,
+ },
+ },
+ },
+ },
+ // current user query mock
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: { data: { me } },
+ },
+];
+
+describe('<Signup/>', () => {
+ it('renders and matches snapshot', async () => {
+ const wrapper = mount(
+ <MockedProvider>
+ <Signup />
+ </MockedProvider>
+ );
+ expect(toJSON(wrapper.find('form'))).toMatchSnapshot();
+ });
+
+ it('calls the mutation properly', async () => {
+ let apolloClient;
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <ApolloConsumer>
+ {client => {
+ apolloClient = client;
+ return <Signup />;
+ }}
+ </ApolloConsumer>
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ type(wrapper, 'name', me.name);
+ type(wrapper, 'email', me.email);
+ type(wrapper, 'password', 'wes');
+ wrapper.update();
+ wrapper.find('form').simulate('submit');
+ await wait();
+ // query the user out of the apollo client
+ const user = await apolloClient.query({ query: CURRENT_USER_QUERY });
+ expect(user.data.me).toMatchObject(me);
+ });
+});