diff --git a/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentDetails/ExecutionEnvironmentDetails.jsx b/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentDetails/ExecutionEnvironmentDetails.jsx index 68b9f9879d..e777003c92 100644 --- a/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentDetails/ExecutionEnvironmentDetails.jsx +++ b/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentDetails/ExecutionEnvironmentDetails.jsx @@ -26,6 +26,7 @@ function ExecutionEnvironmentDetails({ executionEnvironment, i18n }) { pull, organization, summary_fields, + managed_by_tower: managedByTower, } = executionEnvironment; const { @@ -103,25 +104,27 @@ function ExecutionEnvironmentDetails({ executionEnvironment, i18n }) { dataCy="execution-environment-modified" /> - - - - {i18n._(t`Delete`)} - - + {!managedByTower && ( + + + + {i18n._(t`Delete`)} + + + )} {error && ( ', () => { expect(dates).toHaveLength(2); expect(dates.at(0).prop('date')).toEqual(executionEnvironment.created); expect(dates.at(1).prop('date')).toEqual(executionEnvironment.modified); + const editButton = wrapper.find('Button[aria-label="edit"]'); + expect(editButton.text()).toEqual('Edit'); + expect(editButton.prop('to')).toBe('/execution_environments/17/edit'); + + const deleteButton = wrapper.find('Button[aria-label="Delete"]'); + expect(deleteButton.text()).toEqual('Delete'); }); test('should render organization detail', async () => { @@ -135,4 +141,38 @@ describe('', () => { expect(ExecutionEnvironmentsAPI.destroy).toHaveBeenCalledTimes(1); expect(history.location.pathname).toBe('/execution_environments'); }); + + test('should not render action buttons to ee managed by tower', async () => { + await act(async () => { + wrapper = mountWithContexts( + + ); + }); + wrapper.update(); + + expect(wrapper.find('Detail[label="Image"]').prop('value')).toEqual( + executionEnvironment.image + ); + expect(wrapper.find('Detail[label="Description"]').prop('value')).toEqual( + 'Foo' + ); + expect(wrapper.find('Detail[label="Organization"]').prop('value')).toEqual( + 'Globally Available' + ); + expect( + wrapper.find('Detail[label="Credential"]').prop('value').props.children + ).toEqual(executionEnvironment.summary_fields.credential.name); + const dates = wrapper.find('UserDateDetail'); + expect(dates).toHaveLength(2); + expect(dates.at(0).prop('date')).toEqual(executionEnvironment.created); + expect(dates.at(1).prop('date')).toEqual(executionEnvironment.modified); + expect(wrapper.find('Button[aria-label="edit"]')).toHaveLength(0); + + expect(wrapper.find('Button[aria-label="Delete"]')).toHaveLength(0); + }); }); diff --git a/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentList/ExecutionEnvironmentListItem.test.jsx b/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentList/ExecutionEnvironmentListItem.test.jsx index c32cb7ab4f..0df9bfcf31 100644 --- a/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentList/ExecutionEnvironmentListItem.test.jsx +++ b/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentList/ExecutionEnvironmentListItem.test.jsx @@ -23,6 +23,7 @@ describe('', () => { summary_fields: { user_capabilities: { edit: true, copy: true, delete: true }, }, + managed_by_tower: false, }; test('should mount successfully', async () => { @@ -144,4 +145,46 @@ describe('', () => { ); expect(wrapper.find('CopyButton').length).toBe(0); }); + + test('should not render the pencil action for ee managed by tower', async () => { + await act(async () => { + wrapper = mountWithContexts( + + + {}} + /> + +
+ ); + }); + expect( + wrapper + .find('Td') + .at(1) + .text() + ).toBe(executionEnvironment.name); + expect( + wrapper + .find('Td') + .at(2) + .text() + ).toBe(executionEnvironment.image); + + expect( + wrapper + .find('Td') + .at(3) + .text() + ).toBe('Globally Available'); + + expect(wrapper.find('PencilAltIcon').exists()).toBeFalsy(); + }); });