summaryrefslogtreecommitdiffstats
path: root/frontend/__tests__/Nav.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/__tests__/Nav.test.js')
-rw-r--r--frontend/__tests__/Nav.test.js77
1 files changed, 56 insertions, 21 deletions
diff --git a/frontend/__tests__/Nav.test.js b/frontend/__tests__/Nav.test.js
index 49d16d6..532ed3e 100644
--- a/frontend/__tests__/Nav.test.js
+++ b/frontend/__tests__/Nav.test.js
@@ -1,35 +1,70 @@
import React from 'react';
-import { shallow } from 'enzyme';
+import { shallow, mount } from 'enzyme';
import toJSON from 'enzyme-to-json';
-import { Nav } from '../components/Nav';
+import Nav from '../components/Nav';
+import { MockedProvider } from 'react-apollo/test-utils';
+import { fakeUser, fakeOrder } from './mockMang';
+import { CURRENT_USER_QUERY } from '../queries/queries';
+import wait from 'waait';
+// Mock the router
+import Router from 'next/router';
+
+Router.router = { push() {} };
const currentUserLoggedOut = {
refetch() {},
};
-const currentUser = {
- me: {},
- refetch() {},
-};
+const loggedOutMocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ delay: 0,
+ result: {
+ data: {
+ me: null,
+ },
+ },
+ },
+];
-describe('<Nav></Nav>', () => {
- it('renders', () => {
- shallow(<Nav currentUser={currentUserLoggedOut} />);
- });
+const loggedInMocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: {
+ data: {
+ what: 'yah',
+ me: {
+ ...fakeUser(),
+ orders: [],
+ cart: [],
+ },
+ },
+ },
+ },
+];
+describe('<Nav></Nav>', () => {
it('Renders minimal nav when logged out', () => {
- const wrapper = shallow(<Nav currentUser={currentUserLoggedOut} />);
- expect(toJSON(wrapper)).toMatchSnapshot();
- });
-
- it('renders full nav when logged in', () => {
- const wrapper = shallow(<Nav currentUser={currentUser} />);
- expect(toJSON(wrapper)).toMatchSnapshot();
+ const wrapper = mount(
+ <MockedProvider mocks={loggedOutMocks}>
+ <Nav />
+ </MockedProvider>
+ );
+ const nav = wrapper.find('ul[data-test="nav"]');
+ expect(toJSON(nav)).toMatchSnapshot();
});
- it('tries to refetch the current user when it mounts', () => {
- const refetch = jest.fn();
- shallow(<Nav currentUser={{ ...currentUser, refetch }} />);
- expect(refetch).toHaveBeenCalled();
+ it('renders full nav when logged in', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={loggedInMocks}>
+ <Nav />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ const nav = wrapper.find('ul[data-test="nav"]');
+ // account link
+ const accountLink = wrapper.find('a[href="/me"]');
+ expect(accountLink.length).toBe(1);
});
});