summaryrefslogtreecommitdiffstats
path: root/frontend/__tests__
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/__tests__')
-rw-r--r--frontend/__tests__/Cart.test.js25
-rw-r--r--frontend/__tests__/CreateItem.test.js2
-rw-r--r--frontend/__tests__/Nav.test.js14
-rw-r--r--frontend/__tests__/Order.test.js2
-rw-r--r--frontend/__tests__/Pagination.test.js112
-rw-r--r--frontend/__tests__/ResetRequest.test.js1
-rw-r--r--frontend/__tests__/Signup.test.js2
-rw-r--r--frontend/__tests__/SingleItem.test.js1
-rw-r--r--frontend/__tests__/__snapshots__/Cart.test.js.snap9
-rw-r--r--frontend/__tests__/__snapshots__/Pagination.test.js.snap21
-rw-r--r--frontend/__tests__/__snapshots__/ResetRequest.test.js.snap26
11 files changed, 114 insertions, 101 deletions
diff --git a/frontend/__tests__/Cart.test.js b/frontend/__tests__/Cart.test.js
index a215869..f782708 100644
--- a/frontend/__tests__/Cart.test.js
+++ b/frontend/__tests__/Cart.test.js
@@ -5,8 +5,8 @@ import mountOptions from '../lib/testUtils';
import wait from 'waait';
import Cart from '../components/Cart';
import { MockedProvider } from 'react-apollo/test-utils';
-import { fakeCart, fakeUser } from '../lib/testUtils';
-import { CURRENT_USER_QUERY } from '../queries/queries';
+import { fakeCartItem, fakeUser } from '../lib/testUtils';
+import { CURRENT_USER_QUERY, LOCAL_STATE_QUERY } from '../queries/queries';
const mocks = [
{
@@ -15,26 +15,31 @@ const mocks = [
data: {
me: {
...fakeUser(),
- cart: fakeCart(),
+ cart: [fakeCartItem()],
},
},
},
},
+ {
+ request: { query: LOCAL_STATE_QUERY },
+ result: {
+ data: {
+ cartOpen: true,
+ },
+ },
+ },
];
describe('<Cart/>', () => {
- // TODO fix this one
- expect('wes').toBe('fixed');
it('renders', async () => {
const wrapper = mount(
<MockedProvider mocks={mocks}>
<Cart />
</MockedProvider>
);
- console.log(wrapper.debug());
- // await wait();
- // wrapper.update();
- // expect(toJSON(wrapper.find('header'))).toMatchSnapshot();
- // expect(wrapper.find('CartItem')).toHaveLength(2);
+ await wait();
+ wrapper.update();
+ expect(toJSON(wrapper.find('header'))).toMatchSnapshot();
+ expect(wrapper.find('CartItem')).toHaveLength(1);
});
});
diff --git a/frontend/__tests__/CreateItem.test.js b/frontend/__tests__/CreateItem.test.js
index 035f172..37e5121 100644
--- a/frontend/__tests__/CreateItem.test.js
+++ b/frontend/__tests__/CreateItem.test.js
@@ -126,7 +126,7 @@ describe('<Createitem/>', () => {
// it submits and matches the mocks
wrapper.find('form').simulate('submit');
// it routes to the item page
- await wait();
+ await wait(50);
expect(Router.router.push).toHaveBeenCalled();
expect(Router.router.push).toHaveBeenCalledWith({ pathname: '/item', query: { id: '123' } });
});
diff --git a/frontend/__tests__/Nav.test.js b/frontend/__tests__/Nav.test.js
index 65f5eac..ab8a139 100644
--- a/frontend/__tests__/Nav.test.js
+++ b/frontend/__tests__/Nav.test.js
@@ -1,20 +1,16 @@
import React from 'react';
-import { shallow, mount } from 'enzyme';
+import { mount } from 'enzyme';
import toJSON from 'enzyme-to-json';
+import wait from 'waait';
+import Router from 'next/router';
import Nav from '../components/Nav';
import { MockedProvider } from 'react-apollo/test-utils';
-import { fakeUser, fakeOrder } from './testUtils';
+import { fakeUser } from '../lib/testUtils';
import { CURRENT_USER_QUERY } from '../queries/queries';
-import wait from 'waait';
-// Mock the router
-import Router from 'next/router';
+// Mock the router
Router.router = { push() {} };
-const currentUserLoggedOut = {
- refetch() {},
-};
-
const loggedOutMocks = [
{
request: { query: CURRENT_USER_QUERY },
diff --git a/frontend/__tests__/Order.test.js b/frontend/__tests__/Order.test.js
index 14522f4..c74e384 100644
--- a/frontend/__tests__/Order.test.js
+++ b/frontend/__tests__/Order.test.js
@@ -34,7 +34,7 @@ describe('<Order/>', () => {
<Order id="123" />
</MockedProvider>
);
- await wait(10);
+ await wait(50);
wrapper.update();
const order = wrapper.find('div[data-test="order"]');
expect(toJSON(order)).toMatchSnapshot();
diff --git a/frontend/__tests__/Pagination.test.js b/frontend/__tests__/Pagination.test.js
index 4aa590e..6be60c1 100644
--- a/frontend/__tests__/Pagination.test.js
+++ b/frontend/__tests__/Pagination.test.js
@@ -3,61 +3,95 @@ import { shallow, mount } from 'enzyme';
import toJSON from 'enzyme-to-json';
import Pagination from '../components/Pagination';
import { MockedProvider } from 'react-apollo/test-utils';
+import wait from 'waait';
import { fakeItem } from '../lib/testUtils';
import { ALL_ITEMS_QUERY } from '../queries/queries';
-const data = {
- itemsConnection: { aggregate: { count: 18 } },
- items: [fakeItem()],
-};
+import Router from 'next/router';
-describe('<Pagination/>', () => {
- fit('displays loading message', () => {
- const mocks = [
- {
- request: { query: ALL_ITEMS_QUERY, variables: { skip: 0 } },
- delay: 50,
- result: { data },
+Router.router = { push() {} };
+
+function makeMocksFor(length) {
+ return [
+ {
+ request: { query: ALL_ITEMS_QUERY, variables: { skip: 0, first: 4 } },
+ result: {
+ data: {
+ itemsConnection: {
+ // TODO what are these typenames ????
+ __typename: 'aggregate',
+ aggregate: {
+ count: length,
+ __typename: 'count',
+ },
+ },
+ // items: [fakeItem()],
+ items: Array.from({ length }, (_, i) => fakeItem({ id: `item${i}` })),
+ },
},
- ];
+ },
+ ];
+}
+describe('<Pagination/>', () => {
+ it('displays loading message', async () => {
const wrapper = mount(
- <MockedProvider mocks={mocks}>
+ <MockedProvider mocks={makeMocksFor(1)}>
<Pagination page={1} />
</MockedProvider>
);
- console.log(wrapper.debug());
- // expect(toJSON(wrapper)).toMatchSnapshot();
+ await wait();
+ wrapper.update();
+ expect(toJSON(wrapper.find('div[data-test="pagination"]'))).toMatchSnapshot();
});
- it('renders pagination for 18 items', () => {
- const wrapper = shallow(<Pagination loading={false} page={1} itemsQuery={fakeQuery} />);
- expect(toJSON(wrapper)).toMatchSnapshot();
- expect(wrapper.find('.totalPages').text()).toEqual('2');
+ it('renders pagination for 18 items', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={makeMocksFor(18)}>
+ <Pagination page={1} />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ expect(wrapper.find('.totalPages').text()).toEqual('5');
});
- it('renders pagination for 28 items', () => {
- const fakeQuery2 = {
- itemsConnection: { aggregate: { count: 28 } },
- };
- const wrapper = shallow(<Pagination loading={false} page={1} itemsQuery={fakeQuery2} />);
- expect(wrapper.find('.totalPages').text()).toEqual('4');
+ it('disables prev button on first page', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={makeMocksFor(18)}>
+ <Pagination page={1} />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ // first page
+ expect(wrapper.find('a.prev').prop('aria-disabled')).toEqual(true);
+ expect(wrapper.find('a.next').prop('aria-disabled')).toEqual(false);
});
- it('disables and enables next/prev buttons', () => {
- const fakeQuery3 = {
- itemsConnection: { aggregate: { count: 100 } },
- };
- const wrapper = shallow(<Pagination loading={false} page={1} itemsQuery={fakeQuery} />);
+ it('disables next button on last page', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={makeMocksFor(18)}>
+ <Pagination page={5} />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ // first page
+ expect(wrapper.find('a.prev').prop('aria-disabled')).toEqual(false);
+ expect(wrapper.find('a.next').prop('aria-disabled')).toEqual(true);
+ });
- expect(wrapper.find('a.prev').props()['aria-disabled']).toEqual(true);
- expect(wrapper.find('a.next').props()['aria-disabled']).toEqual(false);
- wrapper.setProps({ page: 2 });
- expect(wrapper.find('a.prev').props()['aria-disabled']).toEqual(false);
- expect(wrapper.find('a.next').props()['aria-disabled']).toEqual(true);
- // when in the middle, both should work
- wrapper.setProps({ itemsQuery: fakeQuery3, page: 3 });
- expect(wrapper.find('a.prev').props()['aria-disabled']).toEqual(false);
- expect(wrapper.find('a.next').props()['aria-disabled']).toEqual(false);
+ it('enables all buttons on a middle page', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={makeMocksFor(18)}>
+ <Pagination page={2} />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ // first page
+ expect(wrapper.find('a.prev').prop('aria-disabled')).toEqual(false);
+ expect(wrapper.find('a.next').prop('aria-disabled')).toEqual(false);
});
});
diff --git a/frontend/__tests__/ResetRequest.test.js b/frontend/__tests__/ResetRequest.test.js
index c7d8012..4f21911 100644
--- a/frontend/__tests__/ResetRequest.test.js
+++ b/frontend/__tests__/ResetRequest.test.js
@@ -81,6 +81,7 @@ describe('<ResetRequest/>', () => {
wrapper.find('form').simulate('submit');
await wait();
} catch (e) {
+ console.log('CAUGHT');
console.log(e);
}
// expect(async () => {
diff --git a/frontend/__tests__/Signup.test.js b/frontend/__tests__/Signup.test.js
index b6994a6..8f475f7 100644
--- a/frontend/__tests__/Signup.test.js
+++ b/frontend/__tests__/Signup.test.js
@@ -87,7 +87,7 @@ describe('<Signup/>', () => {
wrapper.update();
wrapper.find('form').simulate('submit');
- await wait();
+ await wait(5);
expect(localStorage.getItem('token')).toBe('tok123');
});
});
diff --git a/frontend/__tests__/SingleItem.test.js b/frontend/__tests__/SingleItem.test.js
index 3494f44..f362e58 100644
--- a/frontend/__tests__/SingleItem.test.js
+++ b/frontend/__tests__/SingleItem.test.js
@@ -59,7 +59,6 @@ describe('<SingleItem/>', () => {
wrapper.update();
const Item = wrapper.find('[data-test="graphql-error"]');
- console.log(Item.debug());
expect(toJSON(Item)).toMatchSnapshot();
});
});
diff --git a/frontend/__tests__/__snapshots__/Cart.test.js.snap b/frontend/__tests__/__snapshots__/Cart.test.js.snap
index 426bef2..28011dc 100644
--- a/frontend/__tests__/__snapshots__/Cart.test.js.snap
+++ b/frontend/__tests__/__snapshots__/Cart.test.js.snap
@@ -7,7 +7,7 @@ exports[`<Cart/> renders 1`] = `
title="close"
>
<button
- className="sc-EHOje jytiuo"
+ className="sc-bZQynM julgib"
onClick={[Function]}
title="close"
>
@@ -16,17 +16,16 @@ exports[`<Cart/> renders 1`] = `
</styled.button>
<styled.h3>
<h3
- className="sc-ifAKCX imryuh"
+ className="sc-EHOje ixXoOG"
>
- Miss Tillman Mitchell
+ Miss Coleman Berge
's Cart.
</h3>
</styled.h3>
<p>
You have
- 2
+ 1
item
- s
in your cart.
</p>
</header>
diff --git a/frontend/__tests__/__snapshots__/Pagination.test.js.snap b/frontend/__tests__/__snapshots__/Pagination.test.js.snap
index 34fc655..2ecd98a 100644
--- a/frontend/__tests__/__snapshots__/Pagination.test.js.snap
+++ b/frontend/__tests__/__snapshots__/Pagination.test.js.snap
@@ -1,7 +1,10 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<Pagination/> renders pagination for 18 items 1`] = `
-<styled.div>
+exports[`<Pagination/> displays loading message 1`] = `
+<div
+ className="sc-bdVaJa ijYKGd"
+ data-test="pagination"
+>
<Link
href={
Object {
@@ -11,11 +14,12 @@ exports[`<Pagination/> renders pagination for 18 items 1`] = `
},
}
}
- prefetch={true}
>
<a
aria-disabled={true}
className="prev"
+ href="items?page=0"
+ onClick={[Function]}
>
←Prev
</a>
@@ -30,12 +34,12 @@ exports[`<Pagination/> renders pagination for 18 items 1`] = `
<strong
className="totalPages"
>
- 2
+ 1
</strong>
</p>
<p>
<strong>
- 18
+ 1
</strong>
Items Total
</p>
@@ -48,14 +52,15 @@ exports[`<Pagination/> renders pagination for 18 items 1`] = `
},
}
}
- prefetch={true}
>
<a
- aria-disabled={false}
+ aria-disabled={true}
className="next"
+ href="items?page=2"
+ onClick={[Function]}
>
Next →
</a>
</Link>
-</styled.div>
+</div>
`;
diff --git a/frontend/__tests__/__snapshots__/ResetRequest.test.js.snap b/frontend/__tests__/__snapshots__/ResetRequest.test.js.snap
index 6afa68c..f93486b 100644
--- a/frontend/__tests__/__snapshots__/ResetRequest.test.js.snap
+++ b/frontend/__tests__/__snapshots__/ResetRequest.test.js.snap
@@ -31,29 +31,3 @@ exports[`<ResetRequest/> renders and matches snapshot 1`] = `
</fieldset>
</form>
`;
-
-exports[`<ResetRequest/> renders errors 1`] = `
-<DisplayError
- error={
- Object {
- "message": "Shit!",
- }
- }
->
- <styled.div>
- <div
- className="sc-bwzfXH flKeYn"
- >
- <p>
- <strong>
- Shoot!
- </strong>
- Shit!
- <button>
- Try Again
- </button>
- </p>
- </div>
- </styled.div>
-</DisplayError>
-`;