@ -5,7 +5,7 @@ import { dateTime, makeTimeRange, TimeRange } from '@grafana/data';
import { selectors as e2eSelectors } from '@grafana/e2e-selectors' ;
import { selectors as e2eSelectors } from '@grafana/e2e-selectors' ;
import { TimeRangeProvider } from './TimeRangeContext' ;
import { TimeRangeProvider } from './TimeRangeContext' ;
import { TimeRangePicker } from './TimeRangePicker' ;
import { TimePickerTooltip , Time RangePicker } from './TimeRangePicker' ;
const selectors = e2eSelectors . components . TimePicker ;
const selectors = e2eSelectors . components . TimePicker ;
@ -113,3 +113,56 @@ it('does not submit wrapping forms', async () => {
expect ( onSubmit ) . not . toHaveBeenCalled ( ) ;
expect ( onSubmit ) . not . toHaveBeenCalled ( ) ;
} ) ;
} ) ;
describe ( 'TimePickerTooltip' , ( ) = > {
beforeAll ( ( ) = > {
const mockIntl = {
resolvedOptions : ( ) = > ( {
timeZone : 'America/New_York' ,
} ) ,
} ;
jest . spyOn ( Intl , 'DateTimeFormat' ) . mockImplementation ( ( ) = > mockIntl as Intl . DateTimeFormat ) ;
} ) ;
afterAll ( ( ) = > {
jest . restoreAllMocks ( ) ;
} ) ;
const timeRange : TimeRange = {
from : dateTime ( '2024-01-01T00:00:00Z' ) ,
to : dateTime ( '2024-01-02T00:00:00Z' ) ,
raw : {
from : dateTime ( '2024-01-01T00:00:00Z' ) ,
to : dateTime ( '2024-01-02T00:00:00Z' ) ,
} ,
} ;
it ( 'renders time range with UTC timezone' , ( ) = > {
render ( < TimePickerTooltip timeRange = { timeRange } timeZone = "utc" / > ) ;
expect ( screen . getByText ( /2024-01-01 00:00:00/ ) ) . toBeInTheDocument ( ) ;
expect ( screen . getByText ( 'to' ) ) . toBeInTheDocument ( ) ;
expect ( screen . getByText ( /2024-01-02 00:00:00/ ) ) . toBeInTheDocument ( ) ;
expect ( screen . getByTestId ( 'time-picker-tooltip-timezone' ) ) . toHaveTextContent ( 'UTC, GMT' ) ;
} ) ;
it ( 'renders time range without timezone if timezone is not passed in' , ( ) = > {
render ( < TimePickerTooltip timeRange = { timeRange } / > ) ;
expect ( screen . queryByTestId ( 'time-picker-tooltip-timezone' ) ) . not . toBeInTheDocument ( ) ;
} ) ;
it ( 'renders time range with browser timezone' , ( ) = > {
render ( < TimePickerTooltip timeRange = { timeRange } timeZone = "browser" / > ) ;
expect ( screen . getByText ( 'Local browser time' ) ) . toBeInTheDocument ( ) ;
expect ( screen . getByTestId ( 'time-picker-tooltip-timezone' ) ) . toHaveTextContent ( 'United States, EDT' ) ; // this was mocked at the beginning, in beforeAll block
} ) ;
it ( 'renders time range with specific timezone' , ( ) = > {
render ( < TimePickerTooltip timeRange = { timeRange } timeZone = "Africa/Accra" / > ) ;
expect ( screen . getByText ( 'Ghana, GMT' ) ) . toBeInTheDocument ( ) ;
} ) ;
} ) ;