mirror of
https://github.com/ansible/awx.git
synced 2026-03-02 09:18:48 -03:30
Merge remote-tracking branch 'origin/add-org-new' into react-context-api
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import api from '../../src/api';
|
||||
import { API_CONFIG } from '../../src/endpoints';
|
||||
import About from '../../src/components/About';
|
||||
@@ -9,14 +10,22 @@ describe('<About />', () => {
|
||||
let closeButton;
|
||||
|
||||
test('initially renders without crashing', () => {
|
||||
aboutWrapper = mount(<About isOpen />);
|
||||
aboutWrapper = mount(
|
||||
<I18nProvider>
|
||||
<About isOpen />
|
||||
</I18nProvider>
|
||||
);
|
||||
expect(aboutWrapper.length).toBe(1);
|
||||
aboutWrapper.unmount();
|
||||
});
|
||||
|
||||
test('close button calls onAboutModalClose', () => {
|
||||
const onAboutModalClose = jest.fn();
|
||||
aboutWrapper = mount(<About isOpen onAboutModalClose={onAboutModalClose} />);
|
||||
aboutWrapper = mount(
|
||||
<I18nProvider>
|
||||
<About isOpen onAboutModalClose={onAboutModalClose} />
|
||||
</I18nProvider>
|
||||
);
|
||||
closeButton = aboutWrapper.find('AboutModalBoxCloseButton Button');
|
||||
closeButton.simulate('click');
|
||||
expect(onAboutModalClose).toBeCalled();
|
||||
@@ -29,9 +38,15 @@ describe('<About />', () => {
|
||||
err.response = { status: 404, message: 'problem' };
|
||||
return Promise.reject(err);
|
||||
});
|
||||
aboutWrapper = mount(<About isOpen />);
|
||||
await aboutWrapper.instance().componentDidMount();
|
||||
expect(aboutWrapper.state('error').response.status).toBe(404);
|
||||
aboutWrapper = mount(
|
||||
<I18nProvider>
|
||||
<About isOpen />
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
const aboutComponentInstance = aboutWrapper.find(About).instance();
|
||||
await aboutComponentInstance.componentDidMount();
|
||||
expect(aboutComponentInstance.state.error.response.status).toBe(404);
|
||||
aboutWrapper.unmount();
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import DataListToolbar from '../../src/components/DataListToolbar';
|
||||
|
||||
describe('<DataListToolbar />', () => {
|
||||
@@ -15,7 +16,7 @@ describe('<DataListToolbar />', () => {
|
||||
|
||||
test('it triggers the expected callbacks', () => {
|
||||
const search = 'button[aria-label="Search"]';
|
||||
const searchTextInput = 'input[aria-label="search text input"]';
|
||||
const searchTextInput = 'input[aria-label="Search text input"]';
|
||||
const selectAll = 'input[aria-label="Select all"]';
|
||||
const sort = 'button[aria-label="Sort"]';
|
||||
|
||||
@@ -24,15 +25,17 @@ describe('<DataListToolbar />', () => {
|
||||
const onSelectAll = jest.fn();
|
||||
|
||||
toolbar = mount(
|
||||
<DataListToolbar
|
||||
isAllSelected={false}
|
||||
sortedColumnKey="name"
|
||||
sortOrder="ascending"
|
||||
columns={columns}
|
||||
onSearch={onSearch}
|
||||
onSort={onSort}
|
||||
onSelectAll={onSelectAll}
|
||||
/>
|
||||
<I18nProvider>
|
||||
<DataListToolbar
|
||||
isAllSelected={false}
|
||||
sortedColumnKey="name"
|
||||
sortOrder="ascending"
|
||||
columns={columns}
|
||||
onSearch={onSearch}
|
||||
onSort={onSort}
|
||||
onSelectAll={onSelectAll}
|
||||
/>
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
toolbar.find(sort).simulate('click');
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import HelpDropdown from '../../src/components/HelpDropdown';
|
||||
|
||||
let questionCircleIcon;
|
||||
let dropdownWrapper;
|
||||
let dropdownComponentInstance;
|
||||
let dropdownToggle;
|
||||
let dropdownItems;
|
||||
let dropdownItem;
|
||||
|
||||
beforeEach(() => {
|
||||
dropdownWrapper = mount(<HelpDropdown />);
|
||||
dropdownWrapper = mount(
|
||||
<I18nProvider>
|
||||
<HelpDropdown />
|
||||
</I18nProvider>
|
||||
);
|
||||
dropdownComponentInstance = dropdownWrapper.find(HelpDropdown).instance();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -19,14 +26,15 @@ afterEach(() => {
|
||||
describe('<HelpDropdown />', () => {
|
||||
test('initially renders without crashing', () => {
|
||||
expect(dropdownWrapper.length).toBe(1);
|
||||
expect(dropdownWrapper.state('isOpen')).toEqual(false);
|
||||
expect(dropdownWrapper.state('showAboutModal')).toEqual(false);
|
||||
expect(dropdownComponentInstance.state.isOpen).toEqual(false);
|
||||
expect(dropdownComponentInstance.state.showAboutModal).toEqual(false);
|
||||
questionCircleIcon = dropdownWrapper.find('QuestionCircleIcon');
|
||||
expect(questionCircleIcon.length).toBe(1);
|
||||
});
|
||||
|
||||
test('renders two dropdown items', () => {
|
||||
dropdownWrapper.setState({ isOpen: true });
|
||||
dropdownComponentInstance.setState({ isOpen: true });
|
||||
dropdownWrapper.update();
|
||||
dropdownItems = dropdownWrapper.find('DropdownItem');
|
||||
expect(dropdownItems.length).toBe(2);
|
||||
const dropdownTexts = dropdownItems.map(item => item.text());
|
||||
@@ -34,24 +42,27 @@ describe('<HelpDropdown />', () => {
|
||||
});
|
||||
|
||||
test('onToggle sets state.isOpen to opposite', () => {
|
||||
dropdownWrapper.setState({ isOpen: true });
|
||||
dropdownComponentInstance.setState({ isOpen: true });
|
||||
dropdownWrapper.update();
|
||||
dropdownToggle = dropdownWrapper.find('DropdownToggle > DropdownToggle');
|
||||
dropdownToggle.simulate('click');
|
||||
expect(dropdownWrapper.state('isOpen')).toEqual(false);
|
||||
expect(dropdownComponentInstance.state.isOpen).toEqual(false);
|
||||
});
|
||||
|
||||
test('about dropdown item sets state.showAboutModal to true', () => {
|
||||
dropdownWrapper.setState({ isOpen: true });
|
||||
dropdownComponentInstance.setState({ isOpen: true });
|
||||
dropdownWrapper.update();
|
||||
dropdownItem = dropdownWrapper.find('DropdownItem a').at(1);
|
||||
dropdownItem.simulate('click');
|
||||
expect(dropdownWrapper.state('showAboutModal')).toEqual(true);
|
||||
expect(dropdownComponentInstance.state.showAboutModal).toEqual(true);
|
||||
});
|
||||
|
||||
test('onAboutModalClose sets state.showAboutModal to false', () => {
|
||||
dropdownWrapper.setState({ showAboutModal: true });
|
||||
dropdownComponentInstance.setState({ showAboutModal: true });
|
||||
dropdownWrapper.update();
|
||||
const aboutModal = dropdownWrapper.find('AboutModal');
|
||||
aboutModal.find('AboutModalBoxCloseButton Button').simulate('click');
|
||||
expect(dropdownWrapper.state('showAboutModal')).toEqual(false);
|
||||
expect(dropdownComponentInstance.state.showAboutModal).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import LogoutButton from '../../src/components/LogoutButton';
|
||||
|
||||
let buttonWrapper;
|
||||
@@ -14,7 +15,11 @@ const findChildren = () => {
|
||||
describe('<LogoutButton />', () => {
|
||||
test('initially renders without crashing', () => {
|
||||
const onDevLogout = jest.fn();
|
||||
buttonWrapper = mount(<LogoutButton onDevLogout={onDevLogout} />);
|
||||
buttonWrapper = mount(
|
||||
<I18nProvider>
|
||||
<LogoutButton onDevLogout={onDevLogout} />
|
||||
</I18nProvider>
|
||||
);
|
||||
findChildren();
|
||||
expect(buttonWrapper.length).toBe(1);
|
||||
expect(buttonElem.length).toBe(1);
|
||||
|
||||
@@ -1,34 +1,35 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import Pagination from '../../src/components/Pagination';
|
||||
|
||||
describe('<Pagination />', () => {
|
||||
const noop = () => {};
|
||||
|
||||
let pagination;
|
||||
|
||||
afterEach(() => {
|
||||
if (toolbar) {
|
||||
if (pagination) {
|
||||
pagination.unmount();
|
||||
pagination = null;
|
||||
}
|
||||
});
|
||||
|
||||
test('it triggers the expected callbacks on next and last', () => {
|
||||
const next = 'button[aria-label="next"]';
|
||||
const last = 'button[aria-label="last"]';
|
||||
const next = 'button[aria-label="Next"]';
|
||||
const last = 'button[aria-label="Last"]';
|
||||
|
||||
const onSetPage = jest.fn();
|
||||
|
||||
pagination = mount(
|
||||
<Pagination
|
||||
count={21}
|
||||
page={1}
|
||||
pageCount={5}
|
||||
page_size={5}
|
||||
pageSizeOptions={[5, 10, 25, 50]}
|
||||
onSetPage={onSetPage}
|
||||
/>
|
||||
<I18nProvider>
|
||||
<Pagination
|
||||
count={21}
|
||||
page={1}
|
||||
pageCount={5}
|
||||
page_size={5}
|
||||
pageSizeOptions={[5, 10, 25, 50]}
|
||||
onSetPage={onSetPage}
|
||||
/>
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
pagination.find(next).simulate('click');
|
||||
@@ -43,20 +44,22 @@ describe('<Pagination />', () => {
|
||||
});
|
||||
|
||||
test('it triggers the expected callback on previous and first', () => {
|
||||
const previous = 'button[aria-label="previous"]';
|
||||
const first = 'button[aria-label="first"]';
|
||||
const previous = 'button[aria-label="Previous"]';
|
||||
const first = 'button[aria-label="First"]';
|
||||
|
||||
const onSetPage = jest.fn();
|
||||
|
||||
pagination = mount(
|
||||
<Pagination
|
||||
count={21}
|
||||
page={5}
|
||||
pageCount={5}
|
||||
page_size={5}
|
||||
pageSizeOptions={[5, 10, 25, 50]}
|
||||
onSetPage={onSetPage}
|
||||
/>
|
||||
<I18nProvider>
|
||||
<Pagination
|
||||
count={21}
|
||||
page={5}
|
||||
pageCount={5}
|
||||
page_size={5}
|
||||
pageSizeOptions={[5, 10, 25, 50]}
|
||||
onSetPage={onSetPage}
|
||||
/>
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
pagination.find(previous).simulate('click');
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import { MemoryRouter } from 'react-router-dom';
|
||||
import { mount } from 'enzyme';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import TowerLogo from '../../src/components/TowerLogo';
|
||||
|
||||
let logoWrapper;
|
||||
@@ -14,7 +15,13 @@ const findChildren = () => {
|
||||
|
||||
describe('<TowerLogo />', () => {
|
||||
test('initially renders without crashing', () => {
|
||||
logoWrapper = mount(<MemoryRouter><TowerLogo /></MemoryRouter>);
|
||||
logoWrapper = mount(
|
||||
<MemoryRouter>
|
||||
<I18nProvider>
|
||||
<TowerLogo />
|
||||
</I18nProvider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
findChildren();
|
||||
expect(logoWrapper.length).toBe(1);
|
||||
expect(towerLogoElem.length).toBe(1);
|
||||
@@ -23,7 +30,13 @@ describe('<TowerLogo />', () => {
|
||||
|
||||
test('adds navigation to route history on click', () => {
|
||||
const onLogoClick = jest.fn();
|
||||
logoWrapper = mount(<MemoryRouter><TowerLogo onClick={onLogoClick} /></MemoryRouter>);
|
||||
logoWrapper = mount(
|
||||
<MemoryRouter>
|
||||
<I18nProvider>
|
||||
<TowerLogo onClick={onLogoClick} />
|
||||
</I18nProvider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
findChildren();
|
||||
expect(towerLogoElem.props().history.length).toBe(1);
|
||||
logoWrapper.simulate('click');
|
||||
@@ -31,7 +44,13 @@ describe('<TowerLogo />', () => {
|
||||
});
|
||||
|
||||
test('gracefully handles not being passed click handler', () => {
|
||||
logoWrapper = mount(<MemoryRouter><TowerLogo /></MemoryRouter>);
|
||||
logoWrapper = mount(
|
||||
<MemoryRouter>
|
||||
<I18nProvider>
|
||||
<TowerLogo />
|
||||
</I18nProvider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
findChildren();
|
||||
expect(towerLogoElem.props().history.length).toBe(1);
|
||||
logoWrapper.simulate('click');
|
||||
@@ -40,7 +59,13 @@ describe('<TowerLogo />', () => {
|
||||
|
||||
test('handles mouse over and out state.hover changes', () => {
|
||||
const onLogoClick = jest.fn();
|
||||
logoWrapper = mount(<MemoryRouter><TowerLogo onClick={onLogoClick} /></MemoryRouter>);
|
||||
logoWrapper = mount(
|
||||
<MemoryRouter>
|
||||
<I18nProvider>
|
||||
<TowerLogo onClick={onLogoClick} />
|
||||
</I18nProvider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
findChildren();
|
||||
findChildren();
|
||||
expect(brandElem.props().src).toBe('tower-logo-header.svg');
|
||||
|
||||
Reference in New Issue
Block a user