diff --git a/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.jsx b/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.jsx index b3134cb5279f..c860ab97c861 100644 --- a/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.jsx +++ b/awx/ui_next/src/components/Lookup/ExecutionEnvironmentLookup.jsx @@ -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?.organization + ? { + or__organization__id: project.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} />