diff --git a/__tests__/pages/Organizations/components/OrganizationListItem.test.jsx b/__tests__/pages/Organizations/components/OrganizationListItem.test.jsx index a1bea32b3f..210979646b 100644 --- a/__tests__/pages/Organizations/components/OrganizationListItem.test.jsx +++ b/__tests__/pages/Organizations/components/OrganizationListItem.test.jsx @@ -1,12 +1,12 @@ import React from 'react'; -import { mount } from 'enzyme'; import { MemoryRouter } from 'react-router-dom'; import { I18nProvider } from '@lingui/react'; +import { mountWithContexts } from '../../../enzymeHelpers'; import OrganizationListItem from '../../../../src/pages/Organizations/components/OrganizationListItem'; describe('', () => { test('initially renders succesfully', () => { - mount( + mountWithContexts( diff --git a/__tests__/pages/Organizations/components/OrganizationTeamsList.test.jsx b/__tests__/pages/Organizations/components/OrganizationTeamsList.test.jsx index 41282262f5..4f0924826e 100644 --- a/__tests__/pages/Organizations/components/OrganizationTeamsList.test.jsx +++ b/__tests__/pages/Organizations/components/OrganizationTeamsList.test.jsx @@ -1,8 +1,6 @@ import React from 'react'; -import { mount } from 'enzyme'; -import { MemoryRouter, Router } from 'react-router-dom'; import { createMemoryHistory } from 'history'; -import { I18nProvider } from '@lingui/react'; +import { mountWithContexts } from '../../../enzymeHelpers'; import { sleep } from '../../../testUtils'; import OrganizationTeamsList from '../../../../src/pages/Organizations/components/OrganizationTeamsList'; @@ -20,20 +18,16 @@ describe('', () => { }); test('initially renders succesfully', () => { - mount( - - - - - + mountWithContexts( + ); }); @@ -42,20 +36,16 @@ describe('', () => { const history = createMemoryHistory({ initialEntries: ['/organizations/1/teams'], }); - const wrapper = mount( - - - - - + const wrapper = mountWithContexts( + , { context: { router: { history } } } ); const toolbar = wrapper.find('DataListToolbar'); @@ -78,20 +68,16 @@ describe('', () => { const history = createMemoryHistory({ initialEntries: ['/organizations/1/teams'], }); - const wrapper = mount( - - - - - + const wrapper = mountWithContexts( + , { context: { router: { history } } } ); const pagination = wrapper.find('Pagination'); diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx b/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx index 5e66115d03..177ff714b1 100644 --- a/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx +++ b/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx @@ -1,7 +1,5 @@ import React from 'react'; -import { mount } from 'enzyme'; -import { MemoryRouter } from 'react-router-dom'; -import { I18nProvider } from '@lingui/react'; +import { mountWithContexts } from '../../../../enzymeHelpers'; import OrganizationDetail from '../../../../../src/pages/Organizations/screens/Organization/OrganizationDetail'; describe('', () => { @@ -14,33 +12,21 @@ describe('', () => { }; test('initially renders succesfully', () => { - mount( - - - - - + mountWithContexts( + ); }); test('should request instance groups from api', () => { const getOrganizationInstanceGroups = jest.fn(); - mount( - - - {}} - organization={mockDetails} - /> - - + mountWithContexts( + , { context: { + network: { api: { getOrganizationInstanceGroups }, handleHttpError: () => {} } + } } ).find('OrganizationDetail'); expect(getOrganizationInstanceGroups).toHaveBeenCalledTimes(1); @@ -54,23 +40,12 @@ describe('', () => { const getOrganizationInstanceGroups = jest.fn(() => ( Promise.resolve({ data: { results: mockInstanceGroups } }) )); - const wrapper = mount( - - - {}} - api={{ - getOrganizationInstanceGroups - }} - /> - - + const wrapper = mountWithContexts( + , { context: { + network: { api: { getOrganizationInstanceGroups }, handleHttpError: () => {} } + } } ).find('OrganizationDetail'); await getOrganizationInstanceGroups(); @@ -78,19 +53,10 @@ describe('', () => { }); test('should render Details', async () => { - const wrapper = mount( - - - - - + const wrapper = mountWithContexts( + ); const detailWrapper = wrapper.find('Detail'); diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationEdit.test.jsx b/__tests__/pages/Organizations/screens/Organization/OrganizationEdit.test.jsx index 7aee6e5975..edd8296156 100644 --- a/__tests__/pages/Organizations/screens/Organization/OrganizationEdit.test.jsx +++ b/__tests__/pages/Organizations/screens/Organization/OrganizationEdit.test.jsx @@ -1,17 +1,12 @@ import React from 'react'; -import { mount } from 'enzyme'; -import { MemoryRouter } from 'react-router-dom'; -import { I18nProvider } from '@lingui/react'; +import { mountWithContexts } from '../../../../enzymeHelpers'; -import { NetworkProvider } from '../../../../../src/contexts/Network'; - -import { _OrganizationEdit } from '../../../../../src/pages/Organizations/screens/Organization/OrganizationEdit'; +import OrganizationEdit from '../../../../../src/pages/Organizations/screens/Organization/OrganizationEdit'; const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); describe('', () => { let api; - let networkProviderValue; const mockData = { name: 'Foo', @@ -30,26 +25,16 @@ describe('', () => { associateInstanceGroup: jest.fn(), disassociate: jest.fn(), }; - - networkProviderValue = { - api, - handleHttpError: () => {} - }; }); test('handleSubmit should call api update', () => { - const wrapper = mount( - - - - <_OrganizationEdit - organization={mockData} - api={api} - handleHttpError={() => {}} - /> - - - + const wrapper = mountWithContexts( + , { context: { network: { + api, + handleHttpError: () => {} + } } } ); const updatedOrgData = { @@ -66,18 +51,13 @@ describe('', () => { }); test('handleSubmit associates and disassociates instance groups', async () => { - const wrapper = mount( - - - - <_OrganizationEdit - organization={mockData} - api={api} - handleHttpError={() => {}} - /> - - - + const wrapper = mountWithContexts( + , { context: { network: { + api, + handleHttpError: () => {} + } } } ); const updatedOrgData = { @@ -106,19 +86,16 @@ describe('', () => { const history = { push: jest.fn(), }; - const wrapper = mount( - - - - <_OrganizationEdit - organization={mockData} - api={api} - handleHttpError={() => {}} - history={history} - /> - - - + const wrapper = mountWithContexts( + , { context: { + network: { + api: { api }, + handleHttpError: () => {} + }, + router: { history } + } } ); expect(history.push).not.toHaveBeenCalled(); diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationNotifications.test.jsx b/__tests__/pages/Organizations/screens/Organization/OrganizationNotifications.test.jsx index 3061c7e9b8..560565c931 100644 --- a/__tests__/pages/Organizations/screens/Organization/OrganizationNotifications.test.jsx +++ b/__tests__/pages/Organizations/screens/Organization/OrganizationNotifications.test.jsx @@ -1,60 +1,45 @@ import React from 'react'; -import { mount } from 'enzyme'; -import { MemoryRouter } from 'react-router-dom'; -import { _OrganizationNotifications } from '../../../../../src/pages/Organizations/screens/Organization/OrganizationNotifications'; +import { mountWithContexts } from '../../../../enzymeHelpers'; + +import OrganizationNotifications from '../../../../../src/pages/Organizations/screens/Organization/OrganizationNotifications'; describe('', () => { + let api; + + beforeEach(() => { + api = { + getOrganizationNotifications: jest.fn(), + getOrganizationNotificationSuccess: jest.fn(), + getOrganizationNotificationError: jest.fn(), + createOrganizationNotificationSuccess: jest.fn(), + createOrganizationNotificationError: jest.fn() + }; + }); + test('initially renders succesfully', () => { - mount( - - <_OrganizationNotifications - match={{ path: '/organizations/:id/notifications', url: '/organizations/1/notifications' }} - location={{ search: '', pathname: '/organizations/1/notifications' }} - params={{}} - api={{ - getOrganizationNotifications: jest.fn(), - getOrganizationNotificationSuccess: jest.fn(), - getOrganizationNotificationError: jest.fn(), - createOrganizationNotificationSuccess: jest.fn(), - createOrganizationNotificationError: jest.fn() - }} - handleHttpError={() => {}} - /> - + mountWithContexts( + , { context: { network: { + api, + handleHttpError: () => {} + } } } ); }); test('handles api requests', () => { - const getOrganizationNotifications = jest.fn(); - const getOrganizationNotificationSuccess = jest.fn(); - const getOrganizationNotificationError = jest.fn(); - const createOrganizationNotificationSuccess = jest.fn(); - const createOrganizationNotificationError = jest.fn(); - const wrapper = mount( - - <_OrganizationNotifications - match={{ path: '/organizations/:id/notifications', url: '/organizations/1/notifications' }} - location={{ search: '', pathname: '/organizations/1/notifications' }} - params={{}} - api={{ - getOrganizationNotifications, - getOrganizationNotificationSuccess, - getOrganizationNotificationError, - createOrganizationNotificationSuccess, - createOrganizationNotificationError - }} - handleHttpError={() => {}} - /> - + const wrapper = mountWithContexts( + , { context: { network: { + api, + handleHttpError: () => {} + } } } ).find('OrganizationNotifications'); wrapper.instance().readOrgNotifications(1, { foo: 'bar' }); - expect(getOrganizationNotifications).toHaveBeenCalledWith(1, { foo: 'bar' }); + expect(api.getOrganizationNotifications).toHaveBeenCalledWith(1, { foo: 'bar' }); wrapper.instance().readOrgNotificationSuccess(1, { foo: 'bar' }); - expect(getOrganizationNotificationSuccess).toHaveBeenCalledWith(1, { foo: 'bar' }); + expect(api.getOrganizationNotificationSuccess).toHaveBeenCalledWith(1, { foo: 'bar' }); wrapper.instance().readOrgNotificationError(1, { foo: 'bar' }); - expect(getOrganizationNotificationError).toHaveBeenCalledWith(1, { foo: 'bar' }); + expect(api.getOrganizationNotificationError).toHaveBeenCalledWith(1, { foo: 'bar' }); wrapper.instance().createOrgNotificationSuccess(1, { id: 2 }); - expect(createOrganizationNotificationSuccess).toHaveBeenCalledWith(1, { id: 2 }); + expect(api.createOrganizationNotificationSuccess).toHaveBeenCalledWith(1, { id: 2 }); wrapper.instance().createOrgNotificationError(1, { id: 2 }); - expect(createOrganizationNotificationError).toHaveBeenCalledWith(1, { id: 2 }); + expect(api.createOrganizationNotificationError).toHaveBeenCalledWith(1, { id: 2 }); }); }); diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationTeams.test.jsx b/__tests__/pages/Organizations/screens/Organization/OrganizationTeams.test.jsx index 44effdca37..61b50bae57 100644 --- a/__tests__/pages/Organizations/screens/Organization/OrganizationTeams.test.jsx +++ b/__tests__/pages/Organizations/screens/Organization/OrganizationTeams.test.jsx @@ -1,12 +1,10 @@ import React from 'react'; -import { mount, shallow } from 'enzyme'; -import { MemoryRouter, Router } from 'react-router-dom'; -import { I18nProvider } from '@lingui/react'; +import { shallow } from 'enzyme'; import { createMemoryHistory } from 'history'; +import { mountWithContexts } from '../../../../enzymeHelpers'; import { sleep } from '../../../../testUtils'; import OrganizationTeams, { _OrganizationTeams } from '../../../../../src/pages/Organizations/screens/Organization/OrganizationTeams'; import OrganizationTeamsList from '../../../../../src/pages/Organizations/components/OrganizationTeamsList'; -import { NetworkProvider } from '../../../../../src/contexts/Network'; const listData = { data: { @@ -38,19 +36,13 @@ describe('', () => { test('should load teams on mount', () => { const readOrganizationTeamsList = jest.fn(() => Promise.resolve(listData)); - mount( - - - {} }} - > - - - - + mountWithContexts( + , { context: { + network: { api: { readOrganizationTeamsList }, handleHttpError: () => {} } } + } ).find('OrganizationTeams'); expect(readOrganizationTeamsList).toHaveBeenCalledWith(1, { page: 1, @@ -61,19 +53,13 @@ describe('', () => { test('should pass fetched teams to list component', async () => { const readOrganizationTeamsList = jest.fn(() => Promise.resolve(listData)); - const wrapper = mount( - - - {} }} - > - - - - + const wrapper = mountWithContexts( + , { context: { + network: { api: { readOrganizationTeamsList }, handleHttpError: () => {} } } + } ); await sleep(0); @@ -105,19 +91,14 @@ describe('', () => { const history = createMemoryHistory({ initialEntries: ['/organizations/1/teams'], }); - const wrapper = mount( - - - {} }} - > - - - - + const wrapper = mountWithContexts( + , { context: { + network: { api: { readOrganizationTeamsList }, handleHttpError: () => {} }, + router: { history } + } } ); await sleep(0); @@ -132,7 +113,6 @@ describe('', () => { readOrganizationTeamsList.mockReturnValueOnce(page2Data); history.push('/organizations/1/teams?page=2'); - wrapper.setProps({ history }); await sleep(0); wrapper.update(); diff --git a/src/components/NotificationsList/Notifications.list.jsx b/src/components/NotificationsList/Notifications.list.jsx index cd3ea675b7..d7595d913e 100644 --- a/src/components/NotificationsList/Notifications.list.jsx +++ b/src/components/NotificationsList/Notifications.list.jsx @@ -3,6 +3,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; +import { withRouter } from 'react-router-dom'; import { Title, EmptyState, EmptyStateIcon, EmptyStateBody } from '@patternfly/react-core'; import { CubesIcon } from '@patternfly/react-icons'; import { I18n, i18nMark } from '@lingui/react'; @@ -344,4 +345,4 @@ Notifications.propTypes = { }; export { Notifications as _Notifications }; -export default withNetwork(Notifications); +export default withRouter(withNetwork(Notifications)); diff --git a/src/pages/Organizations/screens/Organization/OrganizationDetail.jsx b/src/pages/Organizations/screens/Organization/OrganizationDetail.jsx index 2771cf8c8e..e069a5e01b 100644 --- a/src/pages/Organizations/screens/Organization/OrganizationDetail.jsx +++ b/src/pages/Organizations/screens/Organization/OrganizationDetail.jsx @@ -1,5 +1,5 @@ import React, { Component } from 'react'; -import { Link } from 'react-router-dom'; +import { Link, withRouter } from 'react-router-dom'; import { I18n } from '@lingui/react'; import { Trans, t } from '@lingui/macro'; @@ -178,4 +178,4 @@ class OrganizationDetail extends Component { } } -export default withNetwork(OrganizationDetail); +export default withRouter(withNetwork(OrganizationDetail)); diff --git a/src/pages/Organizations/screens/Organization/OrganizationNotifications.jsx b/src/pages/Organizations/screens/Organization/OrganizationNotifications.jsx index da658632c8..4f6cf13d6d 100644 --- a/src/pages/Organizations/screens/Organization/OrganizationNotifications.jsx +++ b/src/pages/Organizations/screens/Organization/OrganizationNotifications.jsx @@ -41,12 +41,6 @@ class OrganizationNotifications extends Component { } render () { - const { - location, - match, - history - } = this.props; - return ( ); }