diff options
| author | Wes Bos <wesbos@gmail.com> | 2018-05-07 16:54:27 -0400 |
|---|---|---|
| committer | Wes Bos <wesbos@gmail.com> | 2018-05-07 16:54:27 -0400 |
| commit | c9a2b488c83dcaae0a00d2177d3bfe1f185c28bf (patch) | |
| tree | ee3b0ad93874e434a212b43194286f366f13fbe1 /frontend/__tests__/TakeMyMoney.test.js | |
| parent | dbd39fcc3861facecdd4413c90ae85cebd5db67f (diff) | |
TEST ESTSE TS ETSETST
Diffstat (limited to 'frontend/__tests__/TakeMyMoney.test.js')
| -rw-r--r-- | frontend/__tests__/TakeMyMoney.test.js | 81 |
1 files changed, 59 insertions, 22 deletions
diff --git a/frontend/__tests__/TakeMyMoney.test.js b/frontend/__tests__/TakeMyMoney.test.js index a7d2c98..1b131a5 100644 --- a/frontend/__tests__/TakeMyMoney.test.js +++ b/frontend/__tests__/TakeMyMoney.test.js @@ -5,13 +5,32 @@ import NProgress from 'nprogress'; import TakeMyMoney from '../components/TakeMyMoney'; import Router from 'next/router'; import wait from 'waait'; -import mountOptions from '../lib/testUtils'; +import { MockedProvider } from 'react-apollo/test-utils'; +import { fakeItem, fakeUser, fakeCartItem } from '../lib/testUtils'; +import { CREATE_ITEM_MUTATION, CURRENT_USER_QUERY } from '../queries/queries'; -Router.router = { push() { } }; +Router.router = { push() {} }; +const mocks = [ + { + request: { query: CURRENT_USER_QUERY }, + result: { + data: { + me: { + ...fakeUser(), + cart: [fakeCartItem()], + }, + }, + }, + }, +]; describe('<TakeMyMoney />', () => { it('renders', async () => { - const wrapper = mount(<TakeMyMoney />, mountOptions); + const wrapper = mount( + <MockedProvider mocks={mocks}> + <TakeMyMoney /> + </MockedProvider> + ); // wait for it to load await wait(); wrapper.update(); @@ -21,38 +40,56 @@ describe('<TakeMyMoney />', () => { }); it('creates an order onToken', async () => { - // TODO can this be done with a resolve jest fn? - const createOrderSpy = jest.fn(() => - Promise.resolve({ data: { createOrder: { id: 'xyz789' } } }) + const createOrderSpy = jest.fn().mockResolvedValue({ data: { createOrder: { id: 'xyz789' } } }); + + const wrapper = mount( + <MockedProvider mocks={mocks}> + <TakeMyMoney /> + </MockedProvider> ); - const wrapper = mount(<TakeMyMoney />, mountOptions); - // manually run onToken - wrapper.instance().onToken({ id: 'abc123' }, createOrderSpy); + const component = wrapper.find('TakeMyMoney'); + component.instance().onToken({ id: 'abc123' }, createOrderSpy); // check it expect(createOrderSpy).toBeCalled(); expect(createOrderSpy).toBeCalledWith({ variables: { token: 'abc123' } }); }); - it('turns the progress bar on', () => { - const createOrderSpy = jest.fn().mockResolvedValue({ - data: { createOrder: { id: 'xyz789' } }, - }); - - // spy on .start() + it('turns the progress bar on', async () => { + const wrapper = mount( + <MockedProvider mocks={mocks}> + <TakeMyMoney /> + </MockedProvider> + ); + await wait(); + wrapper.update(); NProgress.start = jest.fn(); - const wrapper = mount(<TakeMyMoney />, mountOptions); - wrapper.instance().onToken({ id: 'abc123' }, createOrderSpy); + + const createOrderSpy = jest.fn().mockResolvedValue({ data: { createOrder: { id: 'xyz789' } } }); + const component = wrapper.find('TakeMyMoney'); + component.instance().onToken({ id: 'abc123' }, createOrderSpy); + wrapper.find('button').simulate('click'); expect(NProgress.start).toHaveBeenCalled(); }); it('routes to the order page when completed', async () => { - const createOrderSpy = jest.fn().mockResolvedValue({ - data: { createOrder: { id: 'xyz789' } }, - }); + // Mount the wrapper + const wrapper = mount( + <MockedProvider mocks={mocks}> + <TakeMyMoney /> + </MockedProvider> + ); + await wait(); + wrapper.update(); + // Spy on Router Push Router.router.push = jest.fn(); - const wrapper = mount(<TakeMyMoney />, mountOptions); - wrapper.instance().onToken({ id: 'abc123' }, createOrderSpy); + const createOrderSpy = jest.fn().mockResolvedValue({ data: { createOrder: { id: 'xyz789' } } }); + + const component = wrapper.find('TakeMyMoney'); + component.instance().onToken({ id: 'abc123' }, createOrderSpy); + + // submit the form + wrapper.find('button').simulate('click'); await wait(); expect(Router.router.push).toHaveBeenCalledWith({ pathname: '/order', |
