mirror of
https://github.com/ansible/awx.git
synced 2026-05-24 17:17:45 -02:30
update tests based on i18n changes
This commit is contained in:
@@ -21,29 +21,28 @@ exports[`mountWithContexts injected ConfigProvider should mount and render with
|
||||
|
||||
exports[`mountWithContexts injected I18nProvider should mount and render 1`] = `
|
||||
<div>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<span>
|
||||
Text content
|
||||
</span>
|
||||
</I18n>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`mountWithContexts injected I18nProvider should mount and render deeply nested consumer 1`] = `
|
||||
<Parent>
|
||||
<Child>
|
||||
<WithI18n>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<Component
|
||||
i18n={"/i18n/"}
|
||||
>
|
||||
<div>
|
||||
Text content
|
||||
</div>
|
||||
</Component>
|
||||
</I18n>
|
||||
</Child>
|
||||
</WithI18n>
|
||||
</Parent>
|
||||
`;
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import React from 'react';
|
||||
import { shallow } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import AddResourceRole from '../../src/components/AddRole/AddResourceRole';
|
||||
import AddResourceRole, { _AddResourceRole } from '../../src/components/AddRole/AddResourceRole';
|
||||
|
||||
describe('<AddResourceRole />', () => {
|
||||
describe('<_AddResourceRole />', () => {
|
||||
const readUsers = jest.fn().mockResolvedValue({
|
||||
data: {
|
||||
count: 2,
|
||||
@@ -31,21 +31,23 @@ describe('<AddResourceRole />', () => {
|
||||
};
|
||||
test('initially renders without crashing', () => {
|
||||
shallow(
|
||||
<AddResourceRole
|
||||
<_AddResourceRole
|
||||
api={api}
|
||||
onClose={() => {}}
|
||||
onSave={() => {}}
|
||||
roles={roles}
|
||||
i18n={{ _: val => val.toString() }}
|
||||
/>
|
||||
);
|
||||
});
|
||||
test('handleRoleCheckboxClick properly updates state', () => {
|
||||
const wrapper = shallow(
|
||||
<AddResourceRole
|
||||
<_AddResourceRole
|
||||
api={api}
|
||||
onClose={() => {}}
|
||||
onSave={() => {}}
|
||||
roles={roles}
|
||||
i18n={{ _: val => val.toString() }}
|
||||
/>
|
||||
);
|
||||
wrapper.setState({
|
||||
@@ -76,11 +78,12 @@ describe('<AddResourceRole />', () => {
|
||||
});
|
||||
test('handleResourceCheckboxClick properly updates state', () => {
|
||||
const wrapper = shallow(
|
||||
<AddResourceRole
|
||||
<_AddResourceRole
|
||||
api={api}
|
||||
onClose={() => {}}
|
||||
onSave={() => {}}
|
||||
roles={roles}
|
||||
i18n={{ _: val => val.toString() }}
|
||||
/>
|
||||
);
|
||||
wrapper.setState({
|
||||
@@ -106,14 +109,13 @@ describe('<AddResourceRole />', () => {
|
||||
}]);
|
||||
});
|
||||
test('clicking user/team cards updates state', () => {
|
||||
const spy = jest.spyOn(AddResourceRole.prototype, 'handleResourceSelect');
|
||||
const spy = jest.spyOn(_AddResourceRole.prototype, 'handleResourceSelect');
|
||||
const wrapper = mountWithContexts(
|
||||
<AddResourceRole
|
||||
onClose={() => {}}
|
||||
onSave={() => {}}
|
||||
api={api}
|
||||
roles={roles}
|
||||
/>
|
||||
/>, { context: { network: { api, handleHttpError: () => {} } } }
|
||||
).find('AddResourceRole');
|
||||
const selectableCardWrapper = wrapper.find('SelectableCard');
|
||||
expect(selectableCardWrapper.length).toBe(2);
|
||||
@@ -126,11 +128,12 @@ describe('<AddResourceRole />', () => {
|
||||
});
|
||||
test('readUsers and readTeams call out to corresponding api functions', () => {
|
||||
const wrapper = shallow(
|
||||
<AddResourceRole
|
||||
<_AddResourceRole
|
||||
api={api}
|
||||
onClose={() => {}}
|
||||
onSave={() => {}}
|
||||
roles={roles}
|
||||
i18n={{ _: val => val.toString() }}
|
||||
/>
|
||||
);
|
||||
wrapper.instance().readUsers({
|
||||
@@ -150,11 +153,12 @@ describe('<AddResourceRole />', () => {
|
||||
|
||||
test('handleResourceSelect clears out selected lists and sets selectedResource', () => {
|
||||
const wrapper = shallow(
|
||||
<AddResourceRole
|
||||
<_AddResourceRole
|
||||
api={api}
|
||||
onClose={() => {}}
|
||||
onSave={() => {}}
|
||||
roles={roles}
|
||||
i18n={{ _: val => val.toString() }}
|
||||
/>
|
||||
);
|
||||
wrapper.setState({
|
||||
@@ -193,11 +197,10 @@ describe('<AddResourceRole />', () => {
|
||||
const handleSave = jest.fn();
|
||||
const wrapper = mountWithContexts(
|
||||
<AddResourceRole
|
||||
api={api}
|
||||
onClose={() => {}}
|
||||
onSave={handleSave}
|
||||
roles={roles}
|
||||
/>
|
||||
/>, { context: { network: { api, handleHttpError: () => {} } } }
|
||||
).find('AddResourceRole');
|
||||
wrapper.setState({
|
||||
selectedResource: 'users',
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import AnsibleSelect from '../../src/components/AnsibleSelect';
|
||||
import { _AnsibleSelect } from '../../src/components/AnsibleSelect/AnsibleSelect';
|
||||
|
||||
const label = 'test select';
|
||||
const mockData = ['/venv/baz/', '/venv/ansible/'];
|
||||
@@ -18,7 +19,7 @@ describe('<AnsibleSelect />', () => {
|
||||
});
|
||||
|
||||
test('calls "onSelectChange" on dropdown select change', () => {
|
||||
const spy = jest.spyOn(AnsibleSelect.prototype, 'onSelectChange');
|
||||
const spy = jest.spyOn(_AnsibleSelect.prototype, 'onSelectChange');
|
||||
const wrapper = mountWithContexts(
|
||||
<AnsibleSelect
|
||||
value="foo"
|
||||
|
||||
@@ -216,6 +216,7 @@ describe('<Lookup />', () => {
|
||||
getItems={getItems}
|
||||
handleHttpError={() => {}}
|
||||
location={{ history }}
|
||||
i18n={{ _: val => val.toString() }}
|
||||
/>
|
||||
);
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ describe('<NotifyAndRedirect />', () => {
|
||||
to="foo"
|
||||
setRootDialogMessage={setRootDialogMessage}
|
||||
location={{ pathname: 'foo' }}
|
||||
i18n={{ _: val => val.toString() }}
|
||||
/>
|
||||
);
|
||||
expect(setRootDialogMessage).toHaveBeenCalled();
|
||||
|
||||
@@ -2,14 +2,11 @@
|
||||
|
||||
exports[`<ToolbarDeleteButton /> should render button 1`] = `
|
||||
<ToolbarDeleteButton
|
||||
i18n={"/i18n/"}
|
||||
itemName="item"
|
||||
itemsToDelete={Array []}
|
||||
onDelete={[Function]}
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<Tooltip
|
||||
appendTo={[Function]}
|
||||
className={null}
|
||||
@@ -71,12 +68,14 @@ exports[`<ToolbarDeleteButton /> should render button 1`] = `
|
||||
>
|
||||
<ToolbarDeleteButton__Button
|
||||
aria-label="Delete"
|
||||
className="awx-ToolBarBtn"
|
||||
isDisabled={true}
|
||||
onClick={[Function]}
|
||||
variant="plain"
|
||||
>
|
||||
<StyledComponent
|
||||
aria-label="Delete"
|
||||
className="awx-ToolBarBtn"
|
||||
forwardedComponent={
|
||||
Object {
|
||||
"$$typeof": Symbol(react.forward_ref),
|
||||
@@ -106,7 +105,7 @@ exports[`<ToolbarDeleteButton /> should render button 1`] = `
|
||||
>
|
||||
<Button
|
||||
aria-label="Delete"
|
||||
className="ToolbarDeleteButton__Button-sc-1e3r0eg-0 iyjqWq"
|
||||
className="awx-ToolBarBtn ToolbarDeleteButton__Button-sc-1e3r0eg-0 iyjqWq"
|
||||
component="button"
|
||||
isActive={false}
|
||||
isBlock={false}
|
||||
@@ -120,13 +119,14 @@ exports[`<ToolbarDeleteButton /> should render button 1`] = `
|
||||
<button
|
||||
aria-disabled={null}
|
||||
aria-label="Delete"
|
||||
className="pf-c-button pf-m-plain pf-m-disabled ToolbarDeleteButton__Button-sc-1e3r0eg-0 iyjqWq"
|
||||
className="pf-c-button pf-m-plain pf-m-disabled awx-ToolBarBtn ToolbarDeleteButton__Button-sc-1e3r0eg-0 iyjqWq"
|
||||
disabled={true}
|
||||
onClick={[Function]}
|
||||
tabIndex={null}
|
||||
type="button"
|
||||
>
|
||||
<TrashAltIcon
|
||||
className="awx-ToolBarTrashCanIcon"
|
||||
color="currentColor"
|
||||
size="sm"
|
||||
title={null}
|
||||
@@ -134,6 +134,7 @@ exports[`<ToolbarDeleteButton /> should render button 1`] = `
|
||||
<svg
|
||||
aria-hidden={true}
|
||||
aria-labelledby={null}
|
||||
className="awx-ToolBarTrashCanIcon"
|
||||
fill="currentColor"
|
||||
height="1em"
|
||||
role="img"
|
||||
@@ -198,6 +199,5 @@ exports[`<ToolbarDeleteButton /> should render button 1`] = `
|
||||
</Portal>
|
||||
</Tippy>
|
||||
</Tooltip>
|
||||
</I18n>
|
||||
</ToolbarDeleteButton>
|
||||
`;
|
||||
|
||||
@@ -3,7 +3,7 @@ import { createMemoryHistory } from 'history';
|
||||
import { shallow } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import { sleep } from '../testUtils';
|
||||
import SelectResourceStep, { _SelectResourceStep } from '../../src/components/AddRole/SelectResourceStep';
|
||||
import SelectResourceStep from '../../src/components/AddRole/SelectResourceStep';
|
||||
|
||||
describe('<SelectResourceStep />', () => {
|
||||
const columns = [
|
||||
@@ -67,15 +67,14 @@ describe('<SelectResourceStep />', () => {
|
||||
initialEntries: ['/organizations/1/access?resource.page=1&resource.order_by=-username'],
|
||||
});
|
||||
const wrapper = await mountWithContexts(
|
||||
<_SelectResourceStep
|
||||
<SelectResourceStep
|
||||
columns={columns}
|
||||
displayKey="username"
|
||||
onRowClick={() => {}}
|
||||
onSearch={handleSearch}
|
||||
selectedResourceRows={selectedResourceRows}
|
||||
sortedColumnKey="username"
|
||||
location={history.location}
|
||||
/>
|
||||
/>, { context: { router: { history, route: { location: history.location } } } }
|
||||
).find('SelectResourceStep');
|
||||
await wrapper.instance().readResourceList();
|
||||
expect(handleSearch).toHaveBeenCalledWith({
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
import { mount, shallow } from 'enzyme';
|
||||
import { shallow } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import SelectRoleStep from '../../src/components/AddRole/SelectRoleStep';
|
||||
|
||||
describe('<SelectRoleStep />', () => {
|
||||
@@ -42,7 +43,7 @@ describe('<SelectRoleStep />', () => {
|
||||
});
|
||||
test('clicking role fires onRolesClick callback', () => {
|
||||
const onRolesClick = jest.fn();
|
||||
wrapper = mount(
|
||||
wrapper = mountWithContexts(
|
||||
<SelectRoleStep
|
||||
onRolesClick={onRolesClick}
|
||||
roles={roles}
|
||||
|
||||
@@ -5,6 +5,7 @@ exports[`<NotificationListItem canToggleNotifications /> initially renders succe
|
||||
canToggleNotifications={true}
|
||||
detailUrl="/foo"
|
||||
errorTurnedOn={false}
|
||||
i18n={"/i18n/"}
|
||||
notification={
|
||||
Object {
|
||||
"id": 9000,
|
||||
@@ -15,10 +16,6 @@ exports[`<NotificationListItem canToggleNotifications /> initially renders succe
|
||||
successTurnedOn={false}
|
||||
toggleNotification={[MockFunction]}
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<DataListItem
|
||||
aria-labelledby="items-list-item-9000"
|
||||
className=""
|
||||
@@ -451,10 +448,94 @@ exports[`<NotificationListItem canToggleNotifications /> initially renders succe
|
||||
</NotificationListItem__DataListCell>
|
||||
</div>
|
||||
</DataListItemCells>
|
||||
<NotificationListItem__Switch
|
||||
aria-label="Toggle notification failure"
|
||||
id="notification-9000-error-toggle"
|
||||
isChecked={false}
|
||||
isDisabled={false}
|
||||
key=".1"
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-9000"
|
||||
>
|
||||
<StyledComponent
|
||||
aria-label="Toggle notification failure"
|
||||
forwardedComponent={
|
||||
Object {
|
||||
"$$typeof": Symbol(react.forward_ref),
|
||||
"attrs": Array [],
|
||||
"componentStyle": ComponentStyle {
|
||||
"componentId": "NotificationListItem__Switch-j7c411-1",
|
||||
"isStatic": true,
|
||||
"lastClassName": "ceuHGn",
|
||||
"rules": Array [
|
||||
"display:flex;flex-wrap:no-wrap;",
|
||||
],
|
||||
},
|
||||
"displayName": "NotificationListItem__Switch",
|
||||
"foldedComponentIds": Array [],
|
||||
"render": [Function],
|
||||
"styledComponentId": "NotificationListItem__Switch-j7c411-1",
|
||||
"target": [Function],
|
||||
"toString": [Function],
|
||||
"warnTooManyClasses": [Function],
|
||||
"withComponent": [Function],
|
||||
}
|
||||
}
|
||||
forwardedRef={null}
|
||||
id="notification-9000-error-toggle"
|
||||
isChecked={false}
|
||||
isDisabled={false}
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-9000"
|
||||
>
|
||||
<Switch
|
||||
aria-label="Toggle notification failure"
|
||||
className="NotificationListItem__Switch-j7c411-1 ceuHGn"
|
||||
id="notification-9000-error-toggle"
|
||||
isChecked={false}
|
||||
isDisabled={false}
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-9000"
|
||||
>
|
||||
<label
|
||||
className="pf-c-switch NotificationListItem__Switch-j7c411-1 ceuHGn"
|
||||
htmlFor="notification-9000-error-toggle"
|
||||
>
|
||||
<input
|
||||
aria-label="Toggle notification failure"
|
||||
checked={false}
|
||||
className="pf-c-switch__input"
|
||||
disabled={false}
|
||||
id="notification-9000-error-toggle"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-9000"
|
||||
type="checkbox"
|
||||
/>
|
||||
<span
|
||||
className="pf-c-switch__toggle"
|
||||
/>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
className="pf-c-switch__label pf-m-on"
|
||||
>
|
||||
Failure
|
||||
</span>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
className="pf-c-switch__label pf-m-off"
|
||||
>
|
||||
Failure
|
||||
</span>
|
||||
</label>
|
||||
</Switch>
|
||||
</StyledComponent>
|
||||
</NotificationListItem__Switch>
|
||||
</div>
|
||||
</DataListItemRow>
|
||||
</li>
|
||||
</DataListItem>
|
||||
</I18n>
|
||||
</NotificationListItem>
|
||||
`;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
// import { mount } from 'enzyme';
|
||||
import { I18n } from '@lingui/react';
|
||||
import { withI18n } from '@lingui/react';
|
||||
import { t } from '@lingui/macro';
|
||||
import { mountWithContexts } from './enzymeHelpers';
|
||||
import { Config } from '../src/contexts/Config';
|
||||
@@ -11,26 +10,19 @@ import { withRootDialog } from '../src/contexts/RootDialog';
|
||||
describe('mountWithContexts', () => {
|
||||
describe('injected I18nProvider', () => {
|
||||
test('should mount and render', () => {
|
||||
const wrapper = mountWithContexts(
|
||||
const Child = withI18n()(({ i18n }) => (
|
||||
<div>
|
||||
<I18n>
|
||||
{({ i18n }) => (
|
||||
<span>{i18n._(t`Text content`)}</span>
|
||||
)}
|
||||
</I18n>
|
||||
</div>
|
||||
);
|
||||
));
|
||||
const wrapper = mountWithContexts(<Child />);
|
||||
expect(wrapper.find('div')).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('should mount and render deeply nested consumer', () => {
|
||||
const Child = () => (
|
||||
<I18n>
|
||||
{({ i18n }) => (
|
||||
const Child = withI18n()(({ i18n }) => (
|
||||
<div>{i18n._(t`Text content`)}</div>
|
||||
)}
|
||||
</I18n>
|
||||
);
|
||||
));
|
||||
const Parent = () => (<Child />);
|
||||
const wrapper = mountWithContexts(<Parent />);
|
||||
expect(wrapper.find('Parent')).toMatchSnapshot();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Applications from '../../src/pages/Applications';
|
||||
|
||||
describe('<Applications />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Applications />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Applications />);
|
||||
pageWrapper = mountWithContexts(<Applications />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import AuthSettings from '../../src/pages/AuthSettings';
|
||||
|
||||
describe('<AuthSettings />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<AuthSettings />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<AuthSettings />);
|
||||
pageWrapper = mountWithContexts(<AuthSettings />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import CredentialTypes from '../../src/pages/CredentialTypes';
|
||||
|
||||
describe('<CredentialTypes />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<CredentialTypes />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<CredentialTypes />);
|
||||
pageWrapper = mountWithContexts(<CredentialTypes />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Credentials from '../../src/pages/Credentials';
|
||||
|
||||
describe('<Credentials />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Credentials />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Credentials />);
|
||||
pageWrapper = mountWithContexts(<Credentials />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Dashboard from '../../src/pages/Dashboard';
|
||||
|
||||
describe('<Dashboard />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Dashboard />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Dashboard />);
|
||||
pageWrapper = mountWithContexts(<Dashboard />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import InstanceGroups from '../../src/pages/InstanceGroups';
|
||||
|
||||
describe('<InstanceGroups />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<InstanceGroups />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<InstanceGroups />);
|
||||
pageWrapper = mountWithContexts(<InstanceGroups />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Inventories from '../../src/pages/Inventories';
|
||||
|
||||
describe('<Inventories />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Inventories />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Inventories />);
|
||||
pageWrapper = mountWithContexts(<Inventories />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import InventoryScripts from '../../src/pages/InventoryScripts';
|
||||
|
||||
describe('<InventoryScripts />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<InventoryScripts />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<InventoryScripts />);
|
||||
pageWrapper = mountWithContexts(<InventoryScripts />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Jobs from '../../src/pages/Jobs';
|
||||
|
||||
describe('<Jobs />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Jobs />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Jobs />);
|
||||
pageWrapper = mountWithContexts(<Jobs />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import JobsSettings from '../../src/pages/JobsSettings';
|
||||
|
||||
describe('<JobsSettings />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<JobsSettings />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<JobsSettings />);
|
||||
pageWrapper = mountWithContexts(<JobsSettings />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import License from '../../src/pages/License';
|
||||
|
||||
describe('<License />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<License />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<License />);
|
||||
pageWrapper = mountWithContexts(<License />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import React from 'react';
|
||||
import { MemoryRouter } from 'react-router-dom';
|
||||
import { mount } from 'enzyme';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import { asyncFlush } from '../../jest.setup';
|
||||
import { _AWXLogin } from '../../src/pages/Login';
|
||||
import AWXLogin from '../../src/pages/Login';
|
||||
import APIClient from '../../src/api';
|
||||
|
||||
describe('<Login />', () => {
|
||||
@@ -18,6 +16,12 @@ describe('<Login />', () => {
|
||||
|
||||
const api = new APIClient({});
|
||||
|
||||
const mountLogin = () => {
|
||||
loginWrapper = mountWithContexts(<AWXLogin />, { context: { network: {
|
||||
api, handleHttpError: () => {}
|
||||
} } });
|
||||
};
|
||||
|
||||
const findChildren = () => {
|
||||
awxLogin = loginWrapper.find('AWXLogin');
|
||||
loginPage = loginWrapper.find('LoginPage');
|
||||
@@ -28,22 +32,13 @@ describe('<Login />', () => {
|
||||
loginHeaderLogo = loginPage.find('img');
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
loginWrapper = mount(
|
||||
<MemoryRouter>
|
||||
<I18nProvider>
|
||||
<_AWXLogin api={api} clearRootDialogMessage={() => {}} handleHttpError={() => {}} />
|
||||
</I18nProvider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
findChildren();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
loginWrapper.unmount();
|
||||
});
|
||||
|
||||
test('initially renders without crashing', () => {
|
||||
mountLogin();
|
||||
findChildren();
|
||||
expect(loginWrapper.length).toBe(1);
|
||||
expect(loginPage.length).toBe(1);
|
||||
expect(loginForm.length).toBe(1);
|
||||
@@ -58,13 +53,7 @@ describe('<Login />', () => {
|
||||
});
|
||||
|
||||
test('custom logo renders Brand component with correct src and alt', () => {
|
||||
loginWrapper = mount(
|
||||
<MemoryRouter>
|
||||
<I18nProvider>
|
||||
<_AWXLogin api={api} logo="images/foo.jpg" alt="Foo Application" />
|
||||
</I18nProvider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
loginWrapper = mountWithContexts(<AWXLogin logo="images/foo.jpg" alt="Foo Application" />);
|
||||
findChildren();
|
||||
expect(loginHeaderLogo.length).toBe(1);
|
||||
expect(loginHeaderLogo.props().src).toBe('data:image/jpeg;images/foo.jpg');
|
||||
@@ -72,13 +61,7 @@ describe('<Login />', () => {
|
||||
});
|
||||
|
||||
test('default logo renders Brand component with correct src and alt', () => {
|
||||
loginWrapper = mount(
|
||||
<MemoryRouter>
|
||||
<I18nProvider>
|
||||
<_AWXLogin api={api} />
|
||||
</I18nProvider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
mountLogin();
|
||||
findChildren();
|
||||
expect(loginHeaderLogo.length).toBe(1);
|
||||
expect(loginHeaderLogo.props().src).toBe('tower-logo-header.svg');
|
||||
@@ -86,6 +69,8 @@ describe('<Login />', () => {
|
||||
});
|
||||
|
||||
test('state maps to un/pw input value props', () => {
|
||||
mountLogin();
|
||||
findChildren();
|
||||
awxLogin.setState({ username: 'un', password: 'pw' });
|
||||
expect(awxLogin.state().username).toBe('un');
|
||||
expect(awxLogin.state().password).toBe('pw');
|
||||
@@ -95,6 +80,8 @@ describe('<Login />', () => {
|
||||
});
|
||||
|
||||
test('updating un/pw clears out error', () => {
|
||||
mountLogin();
|
||||
findChildren();
|
||||
awxLogin.setState({ isInputValid: false });
|
||||
expect(loginWrapper.find('.pf-c-form__helper-text.pf-m-error').length).toBe(1);
|
||||
usernameInput.instance().value = 'uname';
|
||||
@@ -113,6 +100,8 @@ describe('<Login />', () => {
|
||||
|
||||
test('api.login not called when loading', () => {
|
||||
api.login = jest.fn().mockImplementation(() => Promise.resolve({}));
|
||||
mountLogin();
|
||||
findChildren();
|
||||
expect(awxLogin.state().isLoading).toBe(false);
|
||||
awxLogin.setState({ isLoading: true });
|
||||
submitButton.simulate('click');
|
||||
@@ -121,6 +110,8 @@ describe('<Login />', () => {
|
||||
|
||||
test('submit calls api.login successfully', async () => {
|
||||
api.login = jest.fn().mockImplementation(() => Promise.resolve({}));
|
||||
mountLogin();
|
||||
findChildren();
|
||||
expect(awxLogin.state().isLoading).toBe(false);
|
||||
awxLogin.setState({ username: 'unamee', password: 'pwordd' });
|
||||
submitButton.simulate('click');
|
||||
@@ -137,6 +128,8 @@ describe('<Login />', () => {
|
||||
err.response = { status: 401, message: 'problem' };
|
||||
return Promise.reject(err);
|
||||
});
|
||||
mountLogin();
|
||||
findChildren();
|
||||
expect(awxLogin.state().isLoading).toBe(false);
|
||||
expect(awxLogin.state().isInputValid).toBe(true);
|
||||
awxLogin.setState({ username: 'unamee', password: 'pwordd' });
|
||||
@@ -155,6 +148,8 @@ describe('<Login />', () => {
|
||||
err.response = { status: 500, message: 'problem' };
|
||||
return Promise.reject(err);
|
||||
});
|
||||
mountLogin();
|
||||
findChildren();
|
||||
expect(awxLogin.state().isLoading).toBe(false);
|
||||
awxLogin.setState({ username: 'unamee', password: 'pwordd' });
|
||||
submitButton.simulate('click');
|
||||
@@ -166,6 +161,8 @@ describe('<Login />', () => {
|
||||
});
|
||||
|
||||
test('render Redirect to / when already authenticated', () => {
|
||||
mountLogin();
|
||||
findChildren();
|
||||
awxLogin.setState({ isAuthenticated: true });
|
||||
const redirectElem = loginWrapper.find('Redirect');
|
||||
expect(redirectElem.length).toBe(1);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import ManagementJobs from '../../src/pages/ManagementJobs';
|
||||
|
||||
describe('<ManagementJobs />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<ManagementJobs />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<ManagementJobs />);
|
||||
pageWrapper = mountWithContexts(<ManagementJobs />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import NotificationTemplates from '../../src/pages/NotificationTemplates';
|
||||
|
||||
describe('<NotificationTemplates />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<NotificationTemplates />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<NotificationTemplates />);
|
||||
pageWrapper = mountWithContexts(<NotificationTemplates />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
<DeleteRoleConfirmationModal
|
||||
i18n={"/i18n/"}
|
||||
onCancel={[Function]}
|
||||
onConfirm={[Function]}
|
||||
role={
|
||||
@@ -16,10 +17,6 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
}
|
||||
username="jane"
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<_default
|
||||
actions={
|
||||
Array [
|
||||
@@ -57,7 +54,7 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
}
|
||||
isOpen={true}
|
||||
onClose={[Function]}
|
||||
title="Remove Team Access"
|
||||
title="Remove {0} Access"
|
||||
variant="danger"
|
||||
>
|
||||
<Modal
|
||||
@@ -102,7 +99,7 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
isOpen={true}
|
||||
isSmall={false}
|
||||
onClose={[Function]}
|
||||
title="Remove Team Access"
|
||||
title="Remove {0} Access"
|
||||
width={null}
|
||||
>
|
||||
<Portal
|
||||
@@ -119,7 +116,7 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
>
|
||||
<div
|
||||
aria-describedby="pf-modal-0"
|
||||
aria-label="Remove Team Access"
|
||||
aria-label="Remove {0} Access"
|
||||
aria-modal="true"
|
||||
class="pf-c-modal-box awx-c-modal at-c-alertModal at-c-alertModal--danger"
|
||||
role="dialog"
|
||||
@@ -148,13 +145,17 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
class="pf-c-title pf-m-2xl"
|
||||
>
|
||||
|
||||
Remove Team Access
|
||||
Remove {0} Access
|
||||
|
||||
</h3>
|
||||
<div
|
||||
class="pf-c-modal-box__body"
|
||||
id="pf-modal-0"
|
||||
>
|
||||
Are you sure you want to remove {0} access from {1}? Doing so affects all members of the team.
|
||||
<br />
|
||||
<br />
|
||||
If you {0} want to remove access for this particular user, please remove them from the team.
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
class="at-c-alertModal__icon"
|
||||
@@ -240,7 +241,7 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
isOpen={true}
|
||||
isSmall={false}
|
||||
onClose={[Function]}
|
||||
title="Remove Team Access"
|
||||
title="Remove {0} Access"
|
||||
width={null}
|
||||
>
|
||||
<Backdrop
|
||||
@@ -281,11 +282,11 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
"width": null,
|
||||
}
|
||||
}
|
||||
title="Remove Team Access"
|
||||
title="Remove {0} Access"
|
||||
>
|
||||
<div
|
||||
aria-describedby="pf-modal-0"
|
||||
aria-label="Remove Team Access"
|
||||
aria-label="Remove {0} Access"
|
||||
aria-modal="true"
|
||||
className="pf-c-modal-box awx-c-modal at-c-alertModal at-c-alertModal--danger"
|
||||
role="dialog"
|
||||
@@ -362,7 +363,7 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
className="pf-c-title pf-m-2xl"
|
||||
>
|
||||
|
||||
Remove Team Access
|
||||
Remove {0} Access
|
||||
|
||||
</h3>
|
||||
</Title>
|
||||
@@ -375,55 +376,10 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
className="pf-c-modal-box__body"
|
||||
id="pf-modal-0"
|
||||
>
|
||||
<WithI18n
|
||||
components={
|
||||
Array [
|
||||
<b />,
|
||||
<b />,
|
||||
<br />,
|
||||
<br />,
|
||||
<b />,
|
||||
<i />,
|
||||
]
|
||||
}
|
||||
id="Are you sure you want to remove<0> {0} </0>access from<1> {1}</1>? Doing so affects all members of the team.<2/><3/>If you<4><5> only </5></4>want to remove access for this particular user, please remove them from the team."
|
||||
values={
|
||||
Object {
|
||||
"0": "Member",
|
||||
"1": "The Team",
|
||||
}
|
||||
}
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<Trans
|
||||
components={
|
||||
Array [
|
||||
<b />,
|
||||
<b />,
|
||||
<br />,
|
||||
<br />,
|
||||
<b />,
|
||||
<i />,
|
||||
]
|
||||
}
|
||||
i18n={"/i18n/"}
|
||||
id="Are you sure you want to remove<0> {0} </0>access from<1> {1}</1>? Doing so affects all members of the team.<2/><3/>If you<4><5> only </5></4>want to remove access for this particular user, please remove them from the team."
|
||||
values={
|
||||
Object {
|
||||
"0": "Member",
|
||||
"1": "The Team",
|
||||
}
|
||||
}
|
||||
>
|
||||
<Render
|
||||
value={null}
|
||||
/>
|
||||
</Trans>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
Are you sure you want to remove {0} access from {1}? Doing so affects all members of the team.
|
||||
<br />
|
||||
<br />
|
||||
If you {0} want to remove access for this particular user, please remove them from the team.
|
||||
<ExclamationCircleIcon
|
||||
className="at-c-alertModal__icon"
|
||||
color="currentColor"
|
||||
@@ -527,6 +483,5 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
|
||||
</Portal>
|
||||
</Modal>
|
||||
</_default>
|
||||
</I18n>
|
||||
</DeleteRoleConfirmationModal>
|
||||
`;
|
||||
|
||||
@@ -29,12 +29,9 @@ exports[`<OrganizationAccessItem /> initially renders succesfully 1`] = `
|
||||
"username": "jane",
|
||||
}
|
||||
}
|
||||
i18n={"/i18n/"}
|
||||
onRoleDelete={[Function]}
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<DataListItem
|
||||
aria-labelledby="access-list-item"
|
||||
className=""
|
||||
@@ -434,6 +431,5 @@ exports[`<OrganizationAccessItem /> initially renders succesfully 1`] = `
|
||||
</DataListItemRow>
|
||||
</li>
|
||||
</DataListItem>
|
||||
</I18n>
|
||||
</OrganizationAccessItem>
|
||||
`;
|
||||
|
||||
@@ -5,6 +5,7 @@ exports[`<OrganizationAccess /> initially renders succesfully 1`] = `
|
||||
api={"/api/"}
|
||||
handleHttpError={[Function]}
|
||||
history={"/history/"}
|
||||
i18n={"/i18n/"}
|
||||
location={
|
||||
Object {
|
||||
"hash": "",
|
||||
|
||||
@@ -56,8 +56,69 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
"url": "",
|
||||
}
|
||||
}
|
||||
>
|
||||
<WithI18n
|
||||
itemCount={2}
|
||||
itemName="notification"
|
||||
items={
|
||||
Array [
|
||||
Object {
|
||||
"id": 1,
|
||||
"name": "Notification one",
|
||||
"notification_type": "email",
|
||||
"url": "/api/v2/notification_templates/1/",
|
||||
},
|
||||
Object {
|
||||
"id": 2,
|
||||
"name": "Notification two",
|
||||
"notification_type": "email",
|
||||
"url": "/api/v2/notification_templates/2/",
|
||||
},
|
||||
]
|
||||
}
|
||||
qsConfig={
|
||||
Object {
|
||||
"defaultParams": Object {
|
||||
"order_by": "name",
|
||||
"page": 1,
|
||||
"page_size": 5,
|
||||
},
|
||||
"integerFields": Array [
|
||||
"page",
|
||||
"page_size",
|
||||
],
|
||||
"namespace": "notification",
|
||||
}
|
||||
}
|
||||
renderItem={[Function]}
|
||||
toolbarColumns={
|
||||
Array [
|
||||
Object {
|
||||
"isSortable": true,
|
||||
"key": "name",
|
||||
"name": "Name",
|
||||
},
|
||||
Object {
|
||||
"isNumeric": true,
|
||||
"isSortable": true,
|
||||
"key": "modified",
|
||||
"name": "Modified",
|
||||
},
|
||||
Object {
|
||||
"isNumeric": true,
|
||||
"isSortable": true,
|
||||
"key": "created",
|
||||
"name": "Created",
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<withRouter(PaginatedDataList)
|
||||
i18n={"/i18n/"}
|
||||
itemCount={2}
|
||||
itemName="notification"
|
||||
items={
|
||||
@@ -118,6 +179,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
additionalControls={Array []}
|
||||
alignToolbarLeft={false}
|
||||
history={"/history/"}
|
||||
i18n={"/i18n/"}
|
||||
isAllSelected={false}
|
||||
itemCount={2}
|
||||
itemName="notification"
|
||||
@@ -194,6 +256,37 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<WithI18n
|
||||
additionalControls={Array []}
|
||||
columns={
|
||||
Array [
|
||||
Object {
|
||||
"isSortable": true,
|
||||
"key": "name",
|
||||
"name": "Name",
|
||||
},
|
||||
Object {
|
||||
"isNumeric": true,
|
||||
"isSortable": true,
|
||||
"key": "modified",
|
||||
"name": "Modified",
|
||||
},
|
||||
Object {
|
||||
"isNumeric": true,
|
||||
"isSortable": true,
|
||||
"key": "created",
|
||||
"name": "Created",
|
||||
},
|
||||
]
|
||||
}
|
||||
isAllSelected={false}
|
||||
onSearch={[Function]}
|
||||
onSelectAll={null}
|
||||
onSort={[Function]}
|
||||
showSelectAll={false}
|
||||
sortOrder="ascending"
|
||||
sortedColumnKey="name"
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
@@ -222,6 +315,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
},
|
||||
]
|
||||
}
|
||||
i18n={"/i18n/"}
|
||||
isAllSelected={false}
|
||||
isCompact={false}
|
||||
noLeftMargin={false}
|
||||
@@ -233,10 +327,6 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
showSelectAll={false}
|
||||
sortOrder="ascending"
|
||||
sortedColumnKey="name"
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<DataListToolbar__AWXToolbar>
|
||||
<StyledComponent
|
||||
@@ -367,7 +457,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
<div
|
||||
className="pf-l-toolbar__item sc-bwzfXH iBEPfq"
|
||||
>
|
||||
<Search
|
||||
<WithI18n
|
||||
columns={
|
||||
Array [
|
||||
Object {
|
||||
@@ -395,6 +485,32 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<Search
|
||||
columns={
|
||||
Array [
|
||||
Object {
|
||||
"isSortable": true,
|
||||
"key": "name",
|
||||
"name": "Name",
|
||||
},
|
||||
Object {
|
||||
"isNumeric": true,
|
||||
"isSortable": true,
|
||||
"key": "modified",
|
||||
"name": "Modified",
|
||||
},
|
||||
Object {
|
||||
"isNumeric": true,
|
||||
"isSortable": true,
|
||||
"key": "created",
|
||||
"name": "Created",
|
||||
},
|
||||
]
|
||||
}
|
||||
i18n={"/i18n/"}
|
||||
onSearch={[Function]}
|
||||
sortedColumnKey="name"
|
||||
>
|
||||
<div
|
||||
className="pf-c-input-group"
|
||||
@@ -868,8 +984,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
</StyledComponent>
|
||||
</Search__Button>
|
||||
</div>
|
||||
</I18n>
|
||||
</Search>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
</div>
|
||||
</ToolbarItem>
|
||||
</StyledComponent>
|
||||
@@ -933,7 +1050,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
<div
|
||||
className="pf-l-toolbar__item"
|
||||
>
|
||||
<Sort
|
||||
<WithI18n
|
||||
columns={
|
||||
Array [
|
||||
Object {
|
||||
@@ -962,6 +1079,33 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<Sort
|
||||
columns={
|
||||
Array [
|
||||
Object {
|
||||
"isSortable": true,
|
||||
"key": "name",
|
||||
"name": "Name",
|
||||
},
|
||||
Object {
|
||||
"isNumeric": true,
|
||||
"isSortable": true,
|
||||
"key": "modified",
|
||||
"name": "Modified",
|
||||
},
|
||||
Object {
|
||||
"isNumeric": true,
|
||||
"isSortable": true,
|
||||
"key": "created",
|
||||
"name": "Created",
|
||||
},
|
||||
]
|
||||
}
|
||||
i18n={"/i18n/"}
|
||||
onSort={[Function]}
|
||||
sortOrder="ascending"
|
||||
sortedColumnKey="name"
|
||||
>
|
||||
<Sort__Dropdown
|
||||
dropdownItems={
|
||||
@@ -1405,8 +1549,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
</Button>
|
||||
</StyledComponent>
|
||||
</Styled(Button)>
|
||||
</I18n>
|
||||
</Sort>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
</div>
|
||||
</ToolbarItem>
|
||||
<DataListToolbar__AdditionalControlsWrapper>
|
||||
@@ -1450,8 +1595,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
</div>
|
||||
</StyledComponent>
|
||||
</DataListToolbar__AWXToolbar>
|
||||
</I18n>
|
||||
</DataListToolbar>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
<DataList
|
||||
aria-label="{0} List"
|
||||
className=""
|
||||
@@ -1461,7 +1607,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
className="pf-c-data-list"
|
||||
role="list"
|
||||
>
|
||||
<NotificationListItem
|
||||
<WithI18n
|
||||
canToggleNotifications={true}
|
||||
detailUrl="/notifications/1"
|
||||
errorTurnedOn={false}
|
||||
@@ -1480,6 +1626,22 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<NotificationListItem
|
||||
canToggleNotifications={true}
|
||||
detailUrl="/notifications/1"
|
||||
errorTurnedOn={false}
|
||||
i18n={"/i18n/"}
|
||||
notification={
|
||||
Object {
|
||||
"id": 1,
|
||||
"name": "Notification one",
|
||||
"notification_type": "email",
|
||||
"url": "/api/v2/notification_templates/1/",
|
||||
}
|
||||
}
|
||||
successTurnedOn={true}
|
||||
toggleNotification={[Function]}
|
||||
>
|
||||
<DataListItem
|
||||
aria-labelledby="items-list-item-1"
|
||||
@@ -1913,13 +2075,99 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
</NotificationListItem__DataListCell>
|
||||
</div>
|
||||
</DataListItemCells>
|
||||
<NotificationListItem__Switch
|
||||
aria-label="Toggle notification failure"
|
||||
id="notification-1-error-toggle"
|
||||
isChecked={false}
|
||||
isDisabled={false}
|
||||
key=".1"
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-1"
|
||||
>
|
||||
<StyledComponent
|
||||
aria-label="Toggle notification failure"
|
||||
forwardedComponent={
|
||||
Object {
|
||||
"$$typeof": Symbol(react.forward_ref),
|
||||
"attrs": Array [],
|
||||
"componentStyle": ComponentStyle {
|
||||
"componentId": "NotificationListItem__Switch-j7c411-1",
|
||||
"isStatic": true,
|
||||
"lastClassName": "ceuHGn",
|
||||
"rules": Array [
|
||||
"display:flex;flex-wrap:no-wrap;",
|
||||
],
|
||||
},
|
||||
"displayName": "NotificationListItem__Switch",
|
||||
"foldedComponentIds": Array [],
|
||||
"render": [Function],
|
||||
"styledComponentId": "NotificationListItem__Switch-j7c411-1",
|
||||
"target": [Function],
|
||||
"toString": [Function],
|
||||
"warnTooManyClasses": [Function],
|
||||
"withComponent": [Function],
|
||||
}
|
||||
}
|
||||
forwardedRef={null}
|
||||
id="notification-1-error-toggle"
|
||||
isChecked={false}
|
||||
isDisabled={false}
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-1"
|
||||
>
|
||||
<Switch
|
||||
aria-label="Toggle notification failure"
|
||||
className="NotificationListItem__Switch-j7c411-1 ceuHGn"
|
||||
id="notification-1-error-toggle"
|
||||
isChecked={false}
|
||||
isDisabled={false}
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-1"
|
||||
>
|
||||
<label
|
||||
className="pf-c-switch NotificationListItem__Switch-j7c411-1 ceuHGn"
|
||||
htmlFor="notification-1-error-toggle"
|
||||
>
|
||||
<input
|
||||
aria-label="Toggle notification failure"
|
||||
checked={false}
|
||||
className="pf-c-switch__input"
|
||||
disabled={false}
|
||||
id="notification-1-error-toggle"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-1"
|
||||
type="checkbox"
|
||||
/>
|
||||
<span
|
||||
className="pf-c-switch__toggle"
|
||||
/>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
className="pf-c-switch__label pf-m-on"
|
||||
>
|
||||
Failure
|
||||
</span>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
className="pf-c-switch__label pf-m-off"
|
||||
>
|
||||
Failure
|
||||
</span>
|
||||
</label>
|
||||
</Switch>
|
||||
</StyledComponent>
|
||||
</NotificationListItem__Switch>
|
||||
</div>
|
||||
</DataListItemRow>
|
||||
</li>
|
||||
</DataListItem>
|
||||
</I18n>
|
||||
</NotificationListItem>
|
||||
<NotificationListItem
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
<WithI18n
|
||||
canToggleNotifications={true}
|
||||
detailUrl="/notifications/2"
|
||||
errorTurnedOn={true}
|
||||
@@ -1938,6 +2186,22 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<NotificationListItem
|
||||
canToggleNotifications={true}
|
||||
detailUrl="/notifications/2"
|
||||
errorTurnedOn={true}
|
||||
i18n={"/i18n/"}
|
||||
notification={
|
||||
Object {
|
||||
"id": 2,
|
||||
"name": "Notification two",
|
||||
"notification_type": "email",
|
||||
"url": "/api/v2/notification_templates/2/",
|
||||
}
|
||||
}
|
||||
successTurnedOn={false}
|
||||
toggleNotification={[Function]}
|
||||
>
|
||||
<DataListItem
|
||||
aria-labelledby="items-list-item-2"
|
||||
@@ -2371,16 +2635,114 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
</NotificationListItem__DataListCell>
|
||||
</div>
|
||||
</DataListItemCells>
|
||||
<NotificationListItem__Switch
|
||||
aria-label="Toggle notification failure"
|
||||
id="notification-2-error-toggle"
|
||||
isChecked={true}
|
||||
isDisabled={false}
|
||||
key=".1"
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-2"
|
||||
>
|
||||
<StyledComponent
|
||||
aria-label="Toggle notification failure"
|
||||
forwardedComponent={
|
||||
Object {
|
||||
"$$typeof": Symbol(react.forward_ref),
|
||||
"attrs": Array [],
|
||||
"componentStyle": ComponentStyle {
|
||||
"componentId": "NotificationListItem__Switch-j7c411-1",
|
||||
"isStatic": true,
|
||||
"lastClassName": "ceuHGn",
|
||||
"rules": Array [
|
||||
"display:flex;flex-wrap:no-wrap;",
|
||||
],
|
||||
},
|
||||
"displayName": "NotificationListItem__Switch",
|
||||
"foldedComponentIds": Array [],
|
||||
"render": [Function],
|
||||
"styledComponentId": "NotificationListItem__Switch-j7c411-1",
|
||||
"target": [Function],
|
||||
"toString": [Function],
|
||||
"warnTooManyClasses": [Function],
|
||||
"withComponent": [Function],
|
||||
}
|
||||
}
|
||||
forwardedRef={null}
|
||||
id="notification-2-error-toggle"
|
||||
isChecked={true}
|
||||
isDisabled={false}
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-2"
|
||||
>
|
||||
<Switch
|
||||
aria-label="Toggle notification failure"
|
||||
className="NotificationListItem__Switch-j7c411-1 ceuHGn"
|
||||
id="notification-2-error-toggle"
|
||||
isChecked={true}
|
||||
isDisabled={false}
|
||||
label="Failure"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-2"
|
||||
>
|
||||
<label
|
||||
className="pf-c-switch NotificationListItem__Switch-j7c411-1 ceuHGn"
|
||||
htmlFor="notification-2-error-toggle"
|
||||
>
|
||||
<input
|
||||
aria-label="Toggle notification failure"
|
||||
checked={true}
|
||||
className="pf-c-switch__input"
|
||||
disabled={false}
|
||||
id="notification-2-error-toggle"
|
||||
onChange={[Function]}
|
||||
rowid="items-list-item-2"
|
||||
type="checkbox"
|
||||
/>
|
||||
<span
|
||||
className="pf-c-switch__toggle"
|
||||
/>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
className="pf-c-switch__label pf-m-on"
|
||||
>
|
||||
Failure
|
||||
</span>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
className="pf-c-switch__label pf-m-off"
|
||||
>
|
||||
Failure
|
||||
</span>
|
||||
</label>
|
||||
</Switch>
|
||||
</StyledComponent>
|
||||
</NotificationListItem__Switch>
|
||||
</div>
|
||||
</DataListItemRow>
|
||||
</li>
|
||||
</DataListItem>
|
||||
</I18n>
|
||||
</NotificationListItem>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
</ul>
|
||||
</DataList>
|
||||
<WithI18n
|
||||
count={2}
|
||||
onSetPage={[Function]}
|
||||
page={1}
|
||||
pageCount={1}
|
||||
page_size={5}
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<Pagination
|
||||
count={2}
|
||||
i18n={"/i18n/"}
|
||||
onSetPage={[Function]}
|
||||
page={1}
|
||||
pageCount={1}
|
||||
@@ -2394,36 +2756,14 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
}
|
||||
page_size={5}
|
||||
showPageSizeOptions={true}
|
||||
style={null}
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<div
|
||||
className="awx-pagination"
|
||||
style={null}
|
||||
>
|
||||
<div
|
||||
className="awx-pagination__page-size-selection"
|
||||
>
|
||||
<WithI18n
|
||||
id="Items Per Page"
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<Trans
|
||||
i18n={"/i18n/"}
|
||||
id="Items Per Page"
|
||||
>
|
||||
<Render
|
||||
value={null}
|
||||
/>
|
||||
</Trans>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
Items Per Page
|
||||
<Dropdown
|
||||
className=""
|
||||
direction="up"
|
||||
@@ -2633,46 +2973,18 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
|
||||
<div
|
||||
className="awx-pagination__item-count"
|
||||
>
|
||||
<WithI18n
|
||||
id="Items {itemMin} – {itemMax} of {count}"
|
||||
values={
|
||||
Object {
|
||||
"count": 2,
|
||||
"itemMax": 2,
|
||||
"itemMin": 1,
|
||||
}
|
||||
}
|
||||
>
|
||||
<I18n
|
||||
update={true}
|
||||
withHash={true}
|
||||
>
|
||||
<Trans
|
||||
i18n={"/i18n/"}
|
||||
id="Items {itemMin} – {itemMax} of {count}"
|
||||
values={
|
||||
Object {
|
||||
"count": 2,
|
||||
"itemMax": 2,
|
||||
"itemMin": 1,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Render
|
||||
value={null}
|
||||
/>
|
||||
</Trans>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
Items {itemMin} – {itemMax} of {count}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</I18n>
|
||||
</Pagination>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
</PaginatedDataList>
|
||||
</Route>
|
||||
</withRouter(PaginatedDataList)>
|
||||
</I18n>
|
||||
</WithI18n>
|
||||
</OrganizationNotifications>
|
||||
</Route>
|
||||
</withRouter(OrganizationNotifications)>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Portal from '../../src/pages/Portal';
|
||||
|
||||
describe('<Portal />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Portal />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Portal />);
|
||||
pageWrapper = mountWithContexts(<Portal />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Projects from '../../src/pages/Projects';
|
||||
|
||||
describe('<Projects />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Projects />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Projects />);
|
||||
pageWrapper = mountWithContexts(<Projects />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Schedules from '../../src/pages/Schedules';
|
||||
|
||||
describe('<Schedules />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Schedules />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Schedules />);
|
||||
pageWrapper = mountWithContexts(<Schedules />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import SystemSettings from '../../src/pages/SystemSettings';
|
||||
|
||||
describe('<SystemSettings />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<SystemSettings />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<SystemSettings />);
|
||||
pageWrapper = mountWithContexts(<SystemSettings />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Teams from '../../src/pages/Teams';
|
||||
|
||||
describe('<Teams />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Teams />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Teams />);
|
||||
pageWrapper = mountWithContexts(<Teams />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Templates from '../../src/pages/Templates';
|
||||
|
||||
describe('<Templates />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Templates />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Templates />);
|
||||
pageWrapper = mountWithContexts(<Templates />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import UISettings from '../../src/pages/UISettings';
|
||||
|
||||
describe('<UISettings />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<UISettings />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<UISettings />);
|
||||
pageWrapper = mountWithContexts(<UISettings />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import { mountWithContexts } from '../enzymeHelpers';
|
||||
import Users from '../../src/pages/Users';
|
||||
|
||||
describe('<Users />', () => {
|
||||
@@ -8,7 +8,7 @@ describe('<Users />', () => {
|
||||
let title;
|
||||
|
||||
beforeEach(() => {
|
||||
pageWrapper = mount(<Users />);
|
||||
pageWrapper = mountWithContexts(<Users />);
|
||||
pageSections = pageWrapper.find('PageSection');
|
||||
title = pageWrapper.find('Title');
|
||||
});
|
||||
|
||||
@@ -1,34 +1,36 @@
|
||||
import { required, maxLength } from '../../src/util/validators';
|
||||
|
||||
const i18n = { _: val => val };
|
||||
|
||||
describe('validators', () => {
|
||||
test('required returns undefined if value given', () => {
|
||||
expect(required()('some value')).toBeUndefined();
|
||||
expect(required('oops')('some value')).toBeUndefined();
|
||||
expect(required(null, i18n)('some value')).toBeUndefined();
|
||||
expect(required('oops', i18n)('some value')).toBeUndefined();
|
||||
});
|
||||
|
||||
test('required returns default message if value missing', () => {
|
||||
expect(required()('')).toEqual('This field must not be blank');
|
||||
expect(required(null, i18n)('')).toEqual({ id: 'This field must not be blank' });
|
||||
});
|
||||
|
||||
test('required returns custom message if value missing', () => {
|
||||
expect(required('oops')('')).toEqual('oops');
|
||||
expect(required('oops', i18n)('')).toEqual('oops');
|
||||
});
|
||||
|
||||
test('required interprets white space as empty value', () => {
|
||||
expect(required()(' ')).toEqual('This field must not be blank');
|
||||
expect(required()('\t')).toEqual('This field must not be blank');
|
||||
expect(required(null, i18n)(' ')).toEqual({ id: 'This field must not be blank' });
|
||||
expect(required(null, i18n)('\t')).toEqual({ id: 'This field must not be blank' });
|
||||
});
|
||||
|
||||
test('maxLength accepts value below max', () => {
|
||||
expect(maxLength(10)('snazzy')).toBeUndefined();
|
||||
expect(maxLength(10, i18n)('snazzy')).toBeUndefined();
|
||||
});
|
||||
|
||||
test('maxLength accepts value equal to max', () => {
|
||||
expect(maxLength(10)('abracadbra')).toBeUndefined();
|
||||
expect(maxLength(10, i18n)('abracadbra')).toBeUndefined();
|
||||
});
|
||||
|
||||
test('maxLength rejects value above max', () => {
|
||||
expect(maxLength(8)('abracadbra'))
|
||||
.toEqual('This field must not exceed 8 characters');
|
||||
expect(maxLength(8, i18n)('abracadbra'))
|
||||
.toEqual({ id: 'This field must not exceed {max} characters', values: { max: 8 } });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
|
||||
import { withI18n } from '@lingui/react';
|
||||
import { t } from '@lingui/macro';
|
||||
import { Wizard } from '@patternfly/react-core';
|
||||
import { withNetwork } from '../../contexts/Network';
|
||||
import SelectResourceStep from './SelectResourceStep';
|
||||
import SelectRoleStep from './SelectRoleStep';
|
||||
import SelectableCard from './SelectableCard';
|
||||
@@ -249,4 +250,5 @@ AddResourceRole.defaultProps = {
|
||||
roles: {}
|
||||
};
|
||||
|
||||
export default withI18n()(AddResourceRole);
|
||||
export { AddResourceRole as _AddResourceRole };
|
||||
export default withI18n()(withNetwork(AddResourceRole));
|
||||
|
||||
@@ -58,4 +58,5 @@ AnsibleSelect.propTypes = {
|
||||
value: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export { AnsibleSelect as _AnsibleSelect };
|
||||
export default withI18n()(AnsibleSelect);
|
||||
|
||||
@@ -113,7 +113,7 @@ class PaginatedDataList extends React.Component {
|
||||
const { error } = this.state;
|
||||
const [orderBy, sortOrder] = this.getSortOrder();
|
||||
const queryParams = parseNamespacedQueryString(qsConfig, location.search);
|
||||
const columns = toolbarColumns || [{ name: i18n._(t`Name`), key: 'name', isSortable: true }];
|
||||
const columns = toolbarColumns.length ? toolbarColumns : [{ name: i18n._(t`Name`), key: 'name', isSortable: true }];
|
||||
return (
|
||||
<Fragment>
|
||||
{error && (
|
||||
@@ -141,7 +141,7 @@ class PaginatedDataList extends React.Component {
|
||||
<DataListToolbar
|
||||
sortedColumnKey={orderBy}
|
||||
sortOrder={sortOrder}
|
||||
columns={toolbarColumns}
|
||||
columns={columns}
|
||||
onSearch={() => { }}
|
||||
onSort={this.handleSort}
|
||||
showSelectAll={showSelectAll}
|
||||
|
||||
@@ -187,13 +187,15 @@ class Pagination extends Component {
|
||||
className="awx-pagination__page-input-form"
|
||||
onSubmit={this.onSubmit}
|
||||
>
|
||||
{i18n._(t`Page ${(<TextInput
|
||||
{i18n._(t`Page `)}
|
||||
<TextInput
|
||||
className="awx-pagination__page-input"
|
||||
aria-label={i18n._(t`Page Number`)}
|
||||
value={value}
|
||||
type="text"
|
||||
onChange={this.onPageChange}
|
||||
/>)} of ${pageCount}`)}
|
||||
/>
|
||||
{i18n._(t` of ${pageCount}`)}
|
||||
</form>
|
||||
<div className="pf-c-input-group">
|
||||
<Button
|
||||
|
||||
@@ -94,7 +94,7 @@ class OrganizationListItem extends React.Component {
|
||||
</Badge>
|
||||
</ListGroup>
|
||||
</DataListCell>,
|
||||
<DataListCell>
|
||||
<DataListCell key="teams">
|
||||
<ListGroup>
|
||||
{i18n._(t`Teams`)}
|
||||
<Badge isRead>
|
||||
|
||||
@@ -188,7 +188,6 @@ class OrganizationAccess extends React.Component {
|
||||
<AddResourceRole
|
||||
onClose={this.toggleAddModal}
|
||||
onSave={this.handleSuccessfulRoleAdd}
|
||||
api={api}
|
||||
roles={organization.summary_fields.object_roles}
|
||||
/>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user