diff --git a/awx/ui/src/screens/InstanceGroup/InstanceGroup.js b/awx/ui/src/screens/InstanceGroup/InstanceGroup.js index 67793759e4..b17d6f3bc6 100644 --- a/awx/ui/src/screens/InstanceGroup/InstanceGroup.js +++ b/awx/ui/src/screens/InstanceGroup/InstanceGroup.js @@ -31,24 +31,29 @@ function InstanceGroup({ setBreadcrumb }) { isLoading, error: contentError, request: fetchInstanceGroups, - result: { instanceGroup, defaultControlPlane }, + result: { instanceGroup, defaultControlPlane, defaultExecution }, } = useRequest( useCallback(async () => { const [ { data }, { - data: { DEFAULT_CONTROL_PLANE_QUEUE_NAME }, + data: { + DEFAULT_CONTROL_PLANE_QUEUE_NAME, + DEFAULT_EXECUTION_QUEUE_NAME, + }, }, ] = await Promise.all([ InstanceGroupsAPI.readDetail(id), SettingsAPI.readAll(), ]); + return { instanceGroup: data, defaultControlPlane: DEFAULT_CONTROL_PLANE_QUEUE_NAME, + defaultExecution: DEFAULT_EXECUTION_QUEUE_NAME, }; }, [id]), - { instanceGroup: null, defaultControlPlane: '' } + { instanceGroup: null, defaultControlPlane: '', defaultExecution: '' } ); useEffect(() => { @@ -130,11 +135,13 @@ function InstanceGroup({ setBreadcrumb }) { diff --git a/awx/ui/src/screens/InstanceGroup/InstanceGroupDetails/InstanceGroupDetails.js b/awx/ui/src/screens/InstanceGroup/InstanceGroupDetails/InstanceGroupDetails.js index c427146c3a..ce80faeabe 100644 --- a/awx/ui/src/screens/InstanceGroup/InstanceGroupDetails/InstanceGroupDetails.js +++ b/awx/ui/src/screens/InstanceGroup/InstanceGroupDetails/InstanceGroupDetails.js @@ -23,7 +23,11 @@ const Unavailable = styled.span` color: var(--pf-global--danger-color--200); `; -function InstanceGroupDetails({ instanceGroup, defaultControlPlane }) { +function InstanceGroupDetails({ + instanceGroup, + defaultControlPlane, + defaultExecution, +}) { const { id, name } = instanceGroup; const history = useHistory(); @@ -42,7 +46,8 @@ function InstanceGroupDetails({ instanceGroup, defaultControlPlane }) { const { error, dismissError } = useDismissableError(deleteError); const deleteDetailsRequests = relatedResourceDeleteRequests.instanceGroup(instanceGroup); - + const isDefaultInstanceGroup = + name === defaultControlPlane || name === defaultExecution; return ( @@ -110,7 +115,7 @@ function InstanceGroupDetails({ instanceGroup, defaultControlPlane }) { {t`Edit`} )} - {name !== defaultControlPlane && + {!isDefaultInstanceGroup && instanceGroup.summary_fields.user_capabilities && instanceGroup.summary_fields.user_capabilities.delete && ( - + {isDisabled ? ( + + + + ) : ( + + )} ', () => { wrapper.find('button[aria-label="Cancel"]').invoke('onClick')(); expect(onCancel).toBeCalled(); }); + + test('Name field should be disabled, default', async () => { + let defaultInstanceGroupWrapper; + await act(async () => { + defaultInstanceGroupWrapper = mountWithContexts( + + ); + }); + expect( + defaultInstanceGroupWrapper + .find('TextInput[name="name"]') + .prop('isDisabled') + ).toBe(true); + }); + + test('Name field should be disabled, controlplane', async () => { + let defaultInstanceGroupWrapper; + await act(async () => { + defaultInstanceGroupWrapper = mountWithContexts( + + ); + }); + expect( + defaultInstanceGroupWrapper + .find('TextInput[name="name"]') + .prop('isDisabled') + ).toBe(true); + }); });