diff --git a/awx/ui_next/src/components/CopyButton/CopyButton.jsx b/awx/ui_next/src/components/CopyButton/CopyButton.jsx
index 30927f22c5..2856c69c0c 100644
--- a/awx/ui_next/src/components/CopyButton/CopyButton.jsx
+++ b/awx/ui_next/src/components/CopyButton/CopyButton.jsx
@@ -3,7 +3,7 @@ import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import PropTypes from 'prop-types';
-import { Button, Tooltip } from '@patternfly/react-core';
+import { Button } from '@patternfly/react-core';
import { CopyIcon } from '@patternfly/react-icons';
import useRequest, { useDismissableError } from '../../util/useRequest';
import AlertModal from '../AlertModal';
@@ -15,7 +15,7 @@ function CopyButton({
isDisabled,
onCopyStart,
onCopyFinish,
- helperText,
+ errorMessage,
i18n,
}) {
const { isLoading, error: copyError, request: copyItemToAPI } = useRequest(
@@ -33,17 +33,15 @@ function CopyButton({
return (
<>
-
-
-
+
- {helperText.errorMessage}
+ {errorMessage}
>
@@ -62,10 +60,7 @@ CopyButton.propTypes = {
copyItem: PropTypes.func.isRequired,
onCopyStart: PropTypes.func.isRequired,
onCopyFinish: PropTypes.func.isRequired,
- helperText: PropTypes.shape({
- tooltip: PropTypes.string.isRequired,
- errorMessage: PropTypes.string.isRequired,
- }).isRequired,
+ errorMessage: PropTypes.string.isRequired,
isDisabled: PropTypes.bool,
};
diff --git a/awx/ui_next/src/components/CopyButton/CopyButton.test.jsx b/awx/ui_next/src/components/CopyButton/CopyButton.test.jsx
index f81c0eab1d..894431bc2d 100644
--- a/awx/ui_next/src/components/CopyButton/CopyButton.test.jsx
+++ b/awx/ui_next/src/components/CopyButton/CopyButton.test.jsx
@@ -1,36 +1,44 @@
import React from 'react';
+import { act } from 'react-dom/test-utils';
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
import CopyButton from './CopyButton';
jest.mock('../../api');
+let wrapper;
+
describe('', () => {
- test('shold mount properly', () => {
- const wrapper = mountWithContexts(
- {}}
- onCopyFinish={() => {}}
- copyItem={() => {}}
- helperText={{
- tooltip: `Copy Template`,
- errorMessage: `Failed to copy template.`,
- }}
- />
- );
+ afterEach(() => {
+ wrapper.unmount();
+ });
+ test('should mount properly', async () => {
+ await act(async () => {
+ wrapper = mountWithContexts(
+ {}}
+ onCopyFinish={() => {}}
+ copyItem={() => {}}
+ errorMessage="Failed to copy template."
+ />
+ );
+ });
expect(wrapper.find('CopyButton').length).toBe(1);
});
- test('should render proper tooltip', () => {
- const wrapper = mountWithContexts(
- {}}
- onCopyFinish={() => {}}
- copyItem={() => {}}
- helperText={{
- tooltip: `Copy Template`,
- errorMessage: `Failed to copy template.`,
- }}
- />
- );
- expect(wrapper.find('Tooltip').prop('content')).toBe('Copy Template');
+ test('should call the correct function on button click', async () => {
+ const copyItem = jest.fn();
+ await act(async () => {
+ wrapper = mountWithContexts(
+ {}}
+ onCopyFinish={() => {}}
+ copyItem={copyItem}
+ errorMessage="Failed to copy template."
+ />
+ );
+ });
+ await act(async () => {
+ wrapper.find('button').simulate('click');
+ });
+ expect(copyItem).toHaveBeenCalledTimes(1);
});
});
diff --git a/awx/ui_next/src/components/PaginatedTable/ActionItem.jsx b/awx/ui_next/src/components/PaginatedTable/ActionItem.jsx
index a6c5e2b239..f9c423fee3 100644
--- a/awx/ui_next/src/components/PaginatedTable/ActionItem.jsx
+++ b/awx/ui_next/src/components/PaginatedTable/ActionItem.jsx
@@ -14,7 +14,7 @@ export default function ActionItem({ column, tooltip, visible, children }) {
`}
>
- {children}
+ {children}
);
diff --git a/awx/ui_next/src/components/PaginatedTable/ActionItem.test.jsx b/awx/ui_next/src/components/PaginatedTable/ActionItem.test.jsx
index 202e556e83..d38653802f 100644
--- a/awx/ui_next/src/components/PaginatedTable/ActionItem.test.jsx
+++ b/awx/ui_next/src/components/PaginatedTable/ActionItem.test.jsx
@@ -12,7 +12,7 @@ describe('', () => {
const tooltip = wrapper.find('Tooltip');
expect(tooltip.prop('content')).toEqual('a tooltip');
- expect(tooltip.prop('children')).toEqual('foo');
+ expect(tooltip.prop('children')).toEqual(foo
);
});
test('should render null if not visible', async () => {
diff --git a/awx/ui_next/src/components/TemplateList/TemplateListItem.jsx b/awx/ui_next/src/components/TemplateList/TemplateListItem.jsx
index dc53622737..5638b8d123 100644
--- a/awx/ui_next/src/components/TemplateList/TemplateListItem.jsx
+++ b/awx/ui_next/src/components/TemplateList/TemplateListItem.jsx
@@ -177,13 +177,13 @@ function TemplateListItem({
-
+
-
+
diff --git a/awx/ui_next/src/screens/Inventory/InventoryList/InventoryListItem.jsx b/awx/ui_next/src/screens/Inventory/InventoryList/InventoryListItem.jsx
index 099fd78767..2b2f660efd 100644
--- a/awx/ui_next/src/screens/Inventory/InventoryList/InventoryListItem.jsx
+++ b/awx/ui_next/src/screens/Inventory/InventoryList/InventoryListItem.jsx
@@ -28,7 +28,7 @@ function InventoryListItem({
isSelected: bool.isRequired,
onSelect: func.isRequired,
};
- const [isDisabled, setIsDisabled] = useState(false);
+ const [isCopying, setIsCopying] = useState(false);
const copyInventory = useCallback(async () => {
await InventoriesAPI.copy(inventory.id, {
@@ -38,11 +38,11 @@ function InventoryListItem({
}, [inventory.id, inventory.name, fetchInventories]);
const handleCopyStart = useCallback(() => {
- setIsDisabled(true);
+ setIsCopying(true);
}, []);
const handleCopyFinish = useCallback(() => {
- setIsDisabled(false);
+ setIsCopying(false);
}, []);
const labelId = `check-action-${inventory.id}`;
@@ -115,7 +115,7 @@ function InventoryListItem({
tooltip={i18n._(t`Edit Inventory`)}
>
-
+