diff options
Diffstat (limited to 'finished-application/frontend/__tests__/Nav.test.js')
| -rw-r--r-- | finished-application/frontend/__tests__/Nav.test.js | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/finished-application/frontend/__tests__/Nav.test.js b/finished-application/frontend/__tests__/Nav.test.js index 5c61c56..d30cb39 100644 --- a/finished-application/frontend/__tests__/Nav.test.js +++ b/finished-application/frontend/__tests__/Nav.test.js @@ -1,66 +1,76 @@ -import React from 'react'; import { mount } from 'enzyme'; -import toJSON from 'enzyme-to-json'; import wait from 'waait'; -import Router from 'next/router'; +import toJSON from 'enzyme-to-json'; import Nav from '../components/Nav'; -import { MockedProvider } from 'react-apollo/test-utils'; -import { fakeUser } from '../lib/testUtils'; import { CURRENT_USER_QUERY } from '../components/User'; +import { MockedProvider } from 'react-apollo/test-utils'; +import { fakeUser, fakeCartItem } from '../lib/testUtils'; -// Mock the router -Router.router = { push() {} }; +const notSignedInMocks = [ + { + request: { query: CURRENT_USER_QUERY }, + result: { data: { me: null } }, + }, +]; -const loggedOutMocks = [ +const signedInMocks = [ { request: { query: CURRENT_USER_QUERY }, - delay: 0, - result: { - data: { - me: null, - }, - }, + result: { data: { me: fakeUser() } }, }, ]; -const loggedInMocks = [ +const signedInMocksWithCartItems = [ { request: { query: CURRENT_USER_QUERY }, result: { data: { - what: 'yah', me: { ...fakeUser(), - orders: [], - cart: [], + cart: [fakeCartItem(), fakeCartItem(), fakeCartItem()], }, }, }, }, ]; -describe('<Nav></Nav>', () => { - it('Renders minimal nav when logged out', () => { +describe('<Nav/>', () => { + it('renders a minimal nav when signed out', async () => { const wrapper = mount( - <MockedProvider mocks={loggedOutMocks}> + <MockedProvider mocks={notSignedInMocks}> <Nav /> </MockedProvider> ); + await wait(); + wrapper.update(); + // console.log(wrapper.debug()); const nav = wrapper.find('ul[data-test="nav"]'); expect(toJSON(nav)).toMatchSnapshot(); }); - it('renders full nav when logged in', async () => { + it('renders full nav when signed in', async () => { const wrapper = mount( - <MockedProvider mocks={loggedInMocks}> + <MockedProvider mocks={signedInMocks}> <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); + expect(nav.children().length).toBe(6); + expect(nav.text()).toContain('Sign Out'); + }); + + it('renders the amount of items in the cart', async () => { + const wrapper = mount( + <MockedProvider mocks={signedInMocksWithCartItems}> + <Nav /> + </MockedProvider> + ); + await wait(); + wrapper.update(); + const nav = wrapper.find('[data-test="nav"]'); + const count = nav.find('div.count'); + expect(toJSON(count)).toMatchSnapshot(); }); }); |
