From 0e25c6857dc0fb4cdcacfe388d182744a7849594 Mon Sep 17 00:00:00 2001 From: Ivan Ortega Alba Date: Thu, 6 Mar 2025 09:36:29 +0100 Subject: [PATCH] QueryOptions: Handle invalid time shift values (#101670) --- .../scene/PanelTimeRange.test.tsx | 25 +++++++++++++++++++ .../dashboard-scene/scene/PanelTimeRange.tsx | 5 ++++ 2 files changed, 30 insertions(+) diff --git a/public/app/features/dashboard-scene/scene/PanelTimeRange.test.tsx b/public/app/features/dashboard-scene/scene/PanelTimeRange.test.tsx index 7d8f9b4baa5..a4b7cdd944c 100644 --- a/public/app/features/dashboard-scene/scene/PanelTimeRange.test.tsx +++ b/public/app/features/dashboard-scene/scene/PanelTimeRange.test.tsx @@ -111,6 +111,31 @@ describe('PanelTimeRange', () => { expect(panelTime.state.value.from.format('Z')).toBe('+00:00'); // UTC expect(panelTime.state.value.to.format('Z')).toBe('+00:00'); // UTC }); + + it('should handle invalid time reference in timeShift', () => { + const panelTime = new PanelTimeRange({ timeShift: 'now-1d' }); + + buildAndActivateSceneFor(panelTime); + + expect(panelTime.state.timeInfo).toBe('invalid timeshift'); + // Should not be affected by invalid timeShift + expect(panelTime.state.from).toBe('now-6h'); + expect(panelTime.state.to).toBe('now'); + }); + + it('should handle invalid time reference in timeShift combined with timeFrom', () => { + const panelTime = new PanelTimeRange({ + timeFrom: 'now-2h', + timeShift: 'now-1d', + }); + + buildAndActivateSceneFor(panelTime); + + expect(panelTime.state.timeInfo).toBe('invalid timeshift'); + // Should not be affected by invalid timeShift + expect(panelTime.state.from).toBe('now-2h'); + expect(panelTime.state.to).toBe('now'); + }); }); function buildAndActivateSceneFor(panelTime: PanelTimeRange) { diff --git a/public/app/features/dashboard-scene/scene/PanelTimeRange.tsx b/public/app/features/dashboard-scene/scene/PanelTimeRange.tsx index 61bcfe3b353..6c5fac6d443 100644 --- a/public/app/features/dashboard-scene/scene/PanelTimeRange.tsx +++ b/public/app/features/dashboard-scene/scene/PanelTimeRange.tsx @@ -105,6 +105,11 @@ export class PanelTimeRange extends SceneTimeRangeTransformerBase