diff --git a/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.jsx b/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.jsx
index b3134cb5279f..f4e36b981f48 100644
--- a/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.jsx
+++ b/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.jsx
@@ -48,10 +48,10 @@ function ExecutionEnvironmentLookup({
return {};
}
const { data } = await ProjectsAPI.readDetail(projectId);
- return data;
+ return { data };
}, [projectId]),
{
- project: null,
+ project: {},
}
);
@@ -75,15 +75,21 @@ function ExecutionEnvironmentLookup({
const globallyAvailableParams = globallyAvailable
? { or__organization__isnull: 'True' }
: {};
- const organizationIdParams =
- organizationId || project?.organization
- ? { or__organization__id: organizationId }
+ const organizationIdParams = organizationId
+ ? { or__organization__id: organizationId }
+ : {};
+ const projectIdParams =
+ projectId && project?.data?.organization
+ ? {
+ or__organization__id: project.data.organization,
+ }
: {};
const [{ data }, actionsResponse] = await Promise.all([
ExecutionEnvironmentsAPI.read(
mergeParams(params, {
...globallyAvailableParams,
...organizationIdParams,
+ ...projectIdParams,
})
),
ExecutionEnvironmentsAPI.readOptions(),
@@ -98,7 +104,7 @@ function ExecutionEnvironmentLookup({
actionsResponse.data.actions?.GET || {}
).filter(key => actionsResponse.data.actions?.GET[key].filterable),
};
- }, [location, globallyAvailable, organizationId, project]),
+ }, [location, globallyAvailable, organizationId, projectId, project]),
{
executionEnvironments: [],
count: 0,
@@ -174,7 +180,7 @@ function ExecutionEnvironmentLookup({
label={renderLabel(isGlobalDefaultEnvironment, isDefaultEnvironment)}
labelIcon={popoverContent && }
>
- {tooltip ? (
+ {tooltip && isDisabled ? (
{renderLookup()}
) : (
renderLookup()
diff --git a/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.test.jsx b/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.test.jsx
index 709385436677..858a3385acff 100644
--- a/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.test.jsx
+++ b/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.test.jsx
@@ -32,17 +32,7 @@ describe('ExecutionEnvironmentLookup', () => {
ExecutionEnvironmentsAPI.read.mockResolvedValue(
mockedExecutionEnvironments
);
- ProjectsAPI.read.mockResolvedValue({
- data: {
- count: 1,
- results: [
- {
- id: 1,
- name: 'Fuz',
- },
- ],
- },
- });
+ ProjectsAPI.readDetail.mockResolvedValue({ data: { organization: 39 } });
});
afterEach(() => {
@@ -97,4 +87,45 @@ describe('ExecutionEnvironmentLookup', () => {
wrapper.find('FormGroup[label="Execution Environment"]').length
).toBe(1);
});
+
+ test('should call api with organization id', async () => {
+ await act(async () => {
+ wrapper = mountWithContexts(
+ {}}
+ organizationId={1}
+ globallyAvailable
+ />
+ );
+ });
+ expect(ExecutionEnvironmentsAPI.read).toHaveBeenCalledWith({
+ or__organization__id: 1,
+ or__organization__isnull: 'True',
+ order_by: 'name',
+ page: 1,
+ page_size: 5,
+ });
+ });
+
+ test('should call api with organization id from the related project', async () => {
+ await act(async () => {
+ wrapper = mountWithContexts(
+ {}}
+ projectId={12}
+ globallyAvailable
+ />
+ );
+ });
+ expect(ProjectsAPI.readDetail).toHaveBeenCalledWith(12);
+ expect(ExecutionEnvironmentsAPI.read).toHaveBeenCalledWith({
+ or__organization__id: 39,
+ or__organization__isnull: 'True',
+ order_by: 'name',
+ page: 1,
+ page_size: 5,
+ });
+ });
});
diff --git a/awx/ui_next/src/screens/Template/shared/JobTemplateForm.jsx b/awx/ui_next/src/screens/Template/shared/JobTemplateForm.jsx
index 99c12258e6cd..b7d7ef8a2e71 100644
--- a/awx/ui_next/src/screens/Template/shared/JobTemplateForm.jsx
+++ b/awx/ui_next/src/screens/Template/shared/JobTemplateForm.jsx
@@ -296,7 +296,7 @@ function JobTemplateForm({
t`Select a project before editing the execution environment.`
)}
globallyAvailable
- isDisabled={!projectField.value}
+ isDisabled={!projectField.value?.id}
projectId={projectField.value?.id}
/>