diff --git a/awx/ui_next/src/components/ExecutionEnvironmentDetail/ExecutionEnvironmentDetail.jsx b/awx/ui_next/src/components/ExecutionEnvironmentDetail/ExecutionEnvironmentDetail.jsx
index 415a855d9f..720595e013 100644
--- a/awx/ui_next/src/components/ExecutionEnvironmentDetail/ExecutionEnvironmentDetail.jsx
+++ b/awx/ui_next/src/components/ExecutionEnvironmentDetail/ExecutionEnvironmentDetail.jsx
@@ -17,9 +17,10 @@ const ExclamationTriangleIcon = styled(PFExclamationTriangleIcon)`
`;
function ExecutionEnvironmentDetail({
- virtualEnvironment,
executionEnvironment,
isDefaultEnvironment,
+ virtualEnvironment,
+ verifyMissingVirtualEnv,
}) {
const label = isDefaultEnvironment
? t`Default Execution Environment`
@@ -40,7 +41,7 @@ function ExecutionEnvironmentDetail({
/>
);
}
- if (virtualEnvironment && !executionEnvironment) {
+ if (verifyMissingVirtualEnv && virtualEnvironment && !executionEnvironment) {
return (
);
}
+ if (
+ !verifyMissingVirtualEnv &&
+ !virtualEnvironment &&
+ !executionEnvironment
+ ) {
+ return (
+
+ {t`Missing resource`}
+
+
+
+
+
+ >
+ }
+ dataCy="execution-environment-detail"
+ />
+ );
+ }
+
return null;
}
@@ -68,12 +94,14 @@ ExecutionEnvironmentDetail.propTypes = {
executionEnvironment: ExecutionEnvironment,
isDefaultEnvironment: bool,
virtualEnvironment: string,
+ verifyMissingVirtualEnv: bool,
};
ExecutionEnvironmentDetail.defaultProps = {
isDefaultEnvironment: false,
executionEnvironment: null,
virtualEnvironment: '',
+ verifyMissingVirtualEnv: true,
};
export default ExecutionEnvironmentDetail;
diff --git a/awx/ui_next/src/components/ExecutionEnvironmentDetail/ExecutionEnvironmentDetail.test.jsx b/awx/ui_next/src/components/ExecutionEnvironmentDetail/ExecutionEnvironmentDetail.test.jsx
index 136114b0f3..b98a8e324d 100644
--- a/awx/ui_next/src/components/ExecutionEnvironmentDetail/ExecutionEnvironmentDetail.test.jsx
+++ b/awx/ui_next/src/components/ExecutionEnvironmentDetail/ExecutionEnvironmentDetail.test.jsx
@@ -61,4 +61,19 @@ describe('', () => {
`Custom virtual environment ${virtualEnvironment} must be replaced by an execution environment.`
);
});
+
+ test('should display warning deleted execution environment', async () => {
+ const wrapper = mountWithContexts(
+
+ );
+ const executionEnvironment = wrapper.find('ExecutionEnvironmentDetail');
+ expect(executionEnvironment).toHaveLength(1);
+ expect(executionEnvironment.find('dt').text()).toEqual(
+ 'Execution Environment'
+ );
+ expect(executionEnvironment.find('dd').text()).toEqual('Missing resource');
+ expect(wrapper.find('Tooltip').prop('content')).toEqual(
+ `Execution environment is missing or deleted.`
+ );
+ });
});
diff --git a/awx/ui_next/src/components/JobList/JobListItem.jsx b/awx/ui_next/src/components/JobList/JobListItem.jsx
index a9f7304abb..ade6f62c20 100644
--- a/awx/ui_next/src/components/JobList/JobListItem.jsx
+++ b/awx/ui_next/src/components/JobList/JobListItem.jsx
@@ -203,8 +203,8 @@ function JobListItem({
/>
)}
{credentials && credentials.length > 0 && (
{instanceGroup && !instanceGroup?.is_container_group && (
diff --git a/awx/ui_next/src/screens/Job/JobDetail/JobDetail.test.jsx b/awx/ui_next/src/screens/Job/JobDetail/JobDetail.test.jsx
index b35fc08958..3b8c31405b 100644
--- a/awx/ui_next/src/screens/Job/JobDetail/JobDetail.test.jsx
+++ b/awx/ui_next/src/screens/Job/JobDetail/JobDetail.test.jsx
@@ -71,12 +71,8 @@ describe('', () => {
assertDetail('Machine Credential', 'SSH: Machine cred');
assertDetail('Source Control Branch', 'main');
- const executionEnvironment = wrapper.find('ExecutionEnvironmentDetail');
- expect(executionEnvironment).toHaveLength(1);
- expect(executionEnvironment.find('dt').text()).toEqual(
- 'Execution Environment'
- );
- expect(executionEnvironment.find('dd').text()).toEqual(
+ assertDetail(
+ 'Execution Environment',
mockJobData.summary_fields.execution_environment.name
);