From 54499dbf690db958c1290f615236dd4d3b5768ae Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Thu, 18 Apr 2019 17:18:19 -0400 Subject: [PATCH] update OrganizsationAccess and OrganizationAccessList w mountWithContexts --- .../OrganizationAccessList.test.jsx | 102 ++++++------------ .../Organization/Organization.test.jsx | 15 +-- .../Organization/OrganizationAccess.test.jsx | 55 +++------- .../components/OrganizationAccessList.jsx | 9 +- .../screens/Organization/Organization.jsx | 6 +- .../Organization/OrganizationAccess.jsx | 9 -- 6 files changed, 54 insertions(+), 142 deletions(-) diff --git a/__tests__/pages/Organizations/components/OrganizationAccessList.test.jsx b/__tests__/pages/Organizations/components/OrganizationAccessList.test.jsx index 54288159d6..42836b436e 100644 --- a/__tests__/pages/Organizations/components/OrganizationAccessList.test.jsx +++ b/__tests__/pages/Organizations/components/OrganizationAccessList.test.jsx @@ -1,8 +1,6 @@ import React from 'react'; -import { mount } from 'enzyme'; -import { MemoryRouter } from 'react-router-dom'; -import { I18nProvider } from '@lingui/react'; +import { mountWithContexts } from '../../../enzymeHelpers'; import OrganizationAccessList, { _OrganizationAccessList } from '../../../../src/pages/Organizations/components/OrganizationAccessList'; const mockData = [ @@ -31,32 +29,20 @@ describe('', () => { }); test('initially renders succesfully', () => { - mount( - - - {}} - removeRole={() => {}} - /> - - + mountWithContexts( + {}} + removeRole={() => {}} + /> ); }); test('api response data passed to component gets set to state properly', (done) => { - const wrapper = mount( - - - ({ data: { count: 1, results: mockData } })} - removeRole={() => {}} - /> - - + const wrapper = mountWithContexts( + ({ data: { count: 1, results: mockData } })} + removeRole={() => {}} + /> ).find('OrganizationAccessList'); setImmediate(() => { @@ -67,18 +53,11 @@ describe('', () => { test('onSort being passed properly to DataListToolbar component', async (done) => { const onSort = jest.spyOn(_OrganizationAccessList.prototype, 'onSort'); - const wrapper = mount( - - - <_OrganizationAccessList - match={{ path: '/organizations/:id', url: '/organizations/1', params: { id: '0' } }} - location={{ search: '', pathname: '/organizations/1/access' }} - getAccessList={() => ({ data: { count: 1, results: mockData } })} - removeRole={() => {}} - handleHttpError={() => {}} - /> - - + const wrapper = mountWithContexts( + ({ data: { count: 1, results: mockData } })} + removeRole={() => {}} + /> ).find('OrganizationAccessList'); expect(onSort).not.toHaveBeenCalled(); @@ -91,17 +70,11 @@ describe('', () => { }); test('getTeamRoles returns empty array if dataset is missing team_id attribute', (done) => { - const wrapper = mount( - - - ({ data: { count: 1, results: mockData } })} - removeRole={() => {}} - /> - - + const wrapper = mountWithContexts( + ({ data: { count: 1, results: mockData } })} + removeRole={() => {}} + /> ).find('OrganizationAccessList'); setImmediate(() => { @@ -117,18 +90,11 @@ describe('', () => { const handleWarning = jest.spyOn(_OrganizationAccessList.prototype, 'handleWarning'); const confirmDelete = jest.spyOn(_OrganizationAccessList.prototype, 'confirmDelete'); const removeRole = jest.spyOn(_OrganizationAccessList.prototype, 'removeAccessRole'); - const wrapper = mount( - - - <_OrganizationAccessList - match={{ path: '/organizations/:id', url: '/organizations/1', params: { id: '0' } }} - location={{ search: '', pathname: '/organizations/1/access' }} - getAccessList={() => ({ data: { count: 1, results: mockData } })} - removeRole={() => {}} - handleHttpError={() => {}} - /> - - + const wrapper = mountWithContexts( + ({ data: { count: 1, results: mockData } })} + removeRole={() => {}} + /> ).find('OrganizationAccessList'); expect(handleWarning).not.toHaveBeenCalled(); expect(confirmDelete).not.toHaveBeenCalled(); @@ -147,17 +113,11 @@ describe('', () => { }); test('state is set appropriately when a user tries deleting a role', (done) => { - const wrapper = mount( - - - <_OrganizationAccessList - match={{ path: '/organizations/:id', url: '/organizations/1', params: { id: '0' } }} - location={{ search: '', pathname: '/organizations/1/access' }} - getAccessList={() => ({ data: { count: 1, results: mockData } })} - removeRole={() => {}} - /> - - + const wrapper = mountWithContexts( + ({ data: { count: 1, results: mockData } })} + removeRole={() => {}} + /> ).find('OrganizationAccessList'); setImmediate(() => { diff --git a/__tests__/pages/Organizations/screens/Organization/Organization.test.jsx b/__tests__/pages/Organizations/screens/Organization/Organization.test.jsx index ac147e2631..25a9da73fd 100644 --- a/__tests__/pages/Organizations/screens/Organization/Organization.test.jsx +++ b/__tests__/pages/Organizations/screens/Organization/Organization.test.jsx @@ -1,20 +1,9 @@ import React from 'react'; -import { mount } from 'enzyme'; -import { MemoryRouter } from 'react-router-dom'; -import { I18nProvider } from '@lingui/react'; +import { mountWithContexts } from '../../../../enzymeHelpers'; import Organization from '../../../../../src/pages/Organizations/screens/Organization/Organization'; describe('', () => { test('initially renders succesfully', () => { - mount( - - - - - - ); + mountWithContexts(); }); }); diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationAccess.test.jsx b/__tests__/pages/Organizations/screens/Organization/OrganizationAccess.test.jsx index 837eb3814e..fd8748d9e8 100644 --- a/__tests__/pages/Organizations/screens/Organization/OrganizationAccess.test.jsx +++ b/__tests__/pages/Organizations/screens/Organization/OrganizationAccess.test.jsx @@ -1,51 +1,26 @@ import React from 'react'; -import { mount } from 'enzyme'; -import { MemoryRouter } from 'react-router-dom'; - +import { mountWithContexts } from '../../../../enzymeHelpers'; import OrganizationAccess from '../../../../../src/pages/Organizations/screens/Organization/OrganizationAccess'; -const mockAPIAccessList = { - foo: 'bar', -}; - -const mockGetOrganizationAccessList = () => Promise.resolve(mockAPIAccessList); - -const mockResponse = { - status: 'success', -}; - -const mockRemoveRole = () => Promise.resolve(mockResponse); - describe('', () => { test('initially renders succesfully', () => { - mount( - - - - ); + mountWithContexts(); }); test('passed methods as props are called appropriately', async () => { - const wrapper = mount( - - - - ).find('OrganizationAccess'); + const mockAPIAccessList = { + foo: 'bar', + }; + const mockResponse = { + status: 'success', + }; + const wrapper = mountWithContexts(, { context: { network: { + api: { + getOrganizationAccessList: () => Promise.resolve(mockAPIAccessList), + disassociate: () => Promise.resolve(mockResponse) + }, + handleHttpError: () => {} + } } }).find('OrganizationAccess'); const accessList = await wrapper.instance().getOrgAccessList(); expect(accessList).toEqual(mockAPIAccessList); const resp = await wrapper.instance().removeRole(2, 3, 'users'); diff --git a/src/pages/Organizations/components/OrganizationAccessList.jsx b/src/pages/Organizations/components/OrganizationAccessList.jsx index cc53fa50f1..5aecddd279 100644 --- a/src/pages/Organizations/components/OrganizationAccessList.jsx +++ b/src/pages/Organizations/components/OrganizationAccessList.jsx @@ -10,7 +10,8 @@ import { I18n, i18nMark } from '@lingui/react'; import { t, Trans } from '@lingui/macro'; import { - Link + Link, + withRouter } from 'react-router-dom'; import { withNetwork } from '../../../contexts/Network'; @@ -160,8 +161,8 @@ class OrganizationAccessList extends React.Component { } getQueryParams (overrides = {}) { - const { location } = this.props; - const { search } = location; + const { history } = this.props; + const { search } = history.location; const searchParams = parseQueryString(search.substring(1)); @@ -422,4 +423,4 @@ OrganizationAccessList.propTypes = { }; export { OrganizationAccessList as _OrganizationAccessList }; -export default withNetwork(OrganizationAccessList); +export default withRouter(withNetwork(OrganizationAccessList)); diff --git a/src/pages/Organizations/screens/Organization/Organization.jsx b/src/pages/Organizations/screens/Organization/Organization.jsx index 2ba53ece98..2ff186e3db 100644 --- a/src/pages/Organizations/screens/Organization/Organization.jsx +++ b/src/pages/Organizations/screens/Organization/Organization.jsx @@ -148,11 +148,7 @@ class Organization extends Component { ( - + )} /> ); }