diff --git a/awx/ui_next/src/screens/Host/HostList/HostListItem.jsx b/awx/ui_next/src/screens/Host/HostList/HostListItem.jsx index 3652f2e52b..21c238fb23 100644 --- a/awx/ui_next/src/screens/Host/HostList/HostListItem.jsx +++ b/awx/ui_next/src/screens/Host/HostList/HostListItem.jsx @@ -27,97 +27,78 @@ const DataListAction = styled(_DataListAction)` grid-template-columns: min-content 40px; `; -class HostListItem extends React.Component { - static propTypes = { - host: Host.isRequired, - detailUrl: string.isRequired, - isSelected: bool.isRequired, - onSelect: func.isRequired, - }; +function HostListItem({ i18n, host, isSelected, onSelect, detailUrl }) { + const labelId = `check-action-${host.id}`; + const recentPlaybookJobs = host.summary_fields.recent_jobs.map(job => ({ + ...job, + type: 'job', + })); - render() { - const { host, isSelected, onSelect, detailUrl, i18n } = this.props; - - const recentPlaybookJobs = host.summary_fields.recent_jobs.map(job => ({ - ...job, - type: 'job', - })); - - const labelId = `check-action-${host.id}`; - return ( - - - - - - {host.name} - - , - - - , - - {host.summary_fields.inventory && ( - - {i18n._(t`Inventory`)} - - {host.summary_fields.inventory.name} - - - )} - , - - - , - - {host.summary_fields.user_capabilities.edit && ( - - - - )} - , - ]} - /> - - - {host.summary_fields.user_capabilities.edit && ( - - - - )} - - - - ); - } + return ( + + + + + + {host.name} + + , + + + , + + {host.summary_fields.inventory && ( + + {i18n._(t`Inventory`)} + + {host.summary_fields.inventory.name} + + + )} + , + ]} + /> + + + {host.summary_fields.user_capabilities.edit && ( + + + + )} + + + + ); } + +HostListItem.propTypes = { + host: Host.isRequired, + detailUrl: string.isRequired, + isSelected: bool.isRequired, + onSelect: func.isRequired, +}; + export default withI18n()(HostListItem); diff --git a/awx/ui_next/src/screens/Host/HostList/HostListItem.test.jsx b/awx/ui_next/src/screens/Host/HostList/HostListItem.test.jsx index 3605a62546..c4958e11c2 100644 --- a/awx/ui_next/src/screens/Host/HostList/HostListItem.test.jsx +++ b/awx/ui_next/src/screens/Host/HostList/HostListItem.test.jsx @@ -3,7 +3,7 @@ import { mountWithContexts } from '@testUtils/enzymeHelpers'; import HostsListItem from './HostListItem'; -let onToggleHost; +const onToggleHost = jest.fn(); const mockHost = { id: 1, @@ -23,16 +23,10 @@ const mockHost = { }; describe('', () => { + let wrapper; + beforeEach(() => { - onToggleHost = jest.fn(); - }); - - afterEach(() => { - jest.clearAllMocks(); - }); - - test('edit button shown to users with edit capabilities', () => { - const wrapper = mountWithContexts( + wrapper = mountWithContexts( ', () => { onToggleHost={onToggleHost} /> ); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + test('edit button shown to users with edit capabilities', () => { expect(wrapper.find('PencilAltIcon').exists()).toBeTruthy(); }); test('edit button hidden from users without edit capabilities', () => { const copyMockHost = Object.assign({}, mockHost); copyMockHost.summary_fields.user_capabilities.edit = false; - const wrapper = mountWithContexts( + wrapper = mountWithContexts( ', () => { ); expect(wrapper.find('PencilAltIcon').exists()).toBeFalsy(); }); + + test('should display host toggle', () => { + expect(wrapper.find('HostToggle').length).toBe(1); + }); });