From 77b653174941db1bb5f1204fb0609dc853a4f0d8 Mon Sep 17 00:00:00 2001 From: Lukas Jezek Date: Fri, 3 Jul 2026 08:17:42 +0000 Subject: [PATCH] Fixes #39494 - Fix create report button is enabled when state is 'running' --- .../JobInvocationToolbarButtons.js | 12 +++---- .../__tests__/MainInformation.test.js | 35 +++++++++++++++++++ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/webpack/JobInvocationDetail/JobInvocationToolbarButtons.js b/webpack/JobInvocationDetail/JobInvocationToolbarButtons.js index 8c2d621fb..18fca9eea 100644 --- a/webpack/JobInvocationDetail/JobInvocationToolbarButtons.js +++ b/webpack/JobInvocationDetail/JobInvocationToolbarButtons.js @@ -19,7 +19,6 @@ import { enableRecurringLogic, } from './JobInvocationActions'; import { - STATUS, GET_REPORT_TEMPLATES, GET_REPORT_TEMPLATE_INPUTS, } from './JobInvocationConstants'; @@ -43,6 +42,11 @@ const JobInvocationToolbarButtons = ({ jobId, data }) => { const [isActionOpen, setIsActionOpen] = useState(false); const [reportTemplateJobId, setReportTemplateJobId] = useState(undefined); const [templateInputId, setTemplateInputId] = useState(undefined); + const isCreateReportDisabled = + !useHasPermission('generate_report_templates') || + task?.state === 'running' || + reportTemplateJobId === undefined || + templateInputId === undefined; const queryParams = new URLSearchParams({ [`report_template_report[input_values][${templateInputId}][value]`]: jobId, }); @@ -210,11 +214,7 @@ const JobInvocationToolbarButtons = ({ jobId, data }) => { `/templates/report_templates/${reportTemplateJobId}/generate?${queryParams.toString()}` )} variant="secondary" - isDisabled={ - !useHasPermission('generate_report_templates') || - task?.state === STATUS.PENDING || - templateInputId === undefined - } + isDisabled={isCreateReportDisabled} > {__(`Create report`)} diff --git a/webpack/JobInvocationDetail/__tests__/MainInformation.test.js b/webpack/JobInvocationDetail/__tests__/MainInformation.test.js index d30172220..5895177c0 100644 --- a/webpack/JobInvocationDetail/__tests__/MainInformation.test.js +++ b/webpack/JobInvocationDetail/__tests__/MainInformation.test.js @@ -198,6 +198,41 @@ describe('JobInvocationDetailPage', () => { ).toEqual(`/legacy/job_invocations/${jobId}`); }); + it('disables Create report when the job task state is running', async () => { + const jobId = jobInvocationData.id; + const store = mockStore({ + ...initialState, + JOB_INVOCATION_KEY: { + response: { + ...jobInvocationData, + task: { ...jobInvocationData.task, state: 'running' }, + }, + }, + CURRENT_PERMISSIONS: { + response: { + results: [{ name: 'generate_report_templates' }], + }, + status: 'RESOLVED', + }, + }); + + render( + + + + ); + + const createReportButton = screen.getByRole('link', { + name: 'Create report', + }); + + expect(createReportButton).toHaveAttribute('aria-disabled', 'true'); + expect(createReportButton).toHaveClass('pf-m-disabled'); + }); + it('shows scheduled date', async () => { const store = mockStore(initialStateScheduled); render(