Compare commits

...

4 Commits

Author SHA1 Message Date
Evan Rusackas
9b8f2f3f94 fix(tests): update UTC and Pacific timezone test expectations for timezone-mock 1.4.0
The previous commit addressed Etc/GMT-2 timezone test expectations.
This commit updates the remaining failing tests for UTC and Etc/GMT+8
(Pacific) timezone cases in parseDttmToDate.test.ts to match the new
behavior of timezone-mock 1.4.0.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-07 10:06:51 -08:00
Evan Rusackas
a3d876c64f fix(tests): update time-comparison test expectations for timezone-mock 1.4.0
timezone-mock 1.4.0 changed the fromLocal algorithm to follow the
EcmaScript specification for resolving local times to UTC timestamps.
This affects Etc/GMT-2 timezone test cases where the local-to-UTC
conversion now produces different results. Updated all Etc/GMT-2
expected values in getTimeOffset.test.ts and parseDttmToDate.test.ts
to match the new behavior.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-07 10:01:16 -08:00
Evan Rusackas
c0763fe58f fix(tests): update timezone-mock usage for v1.4.0 compatibility
In timezone-mock 1.4.0, the timezone must be registered BEFORE setting
the system time via jest.setSystemTime(). The previous order (setting
time first, then registering timezone) caused date calculations to be
off by 1 day.

This fixes test failures in:
- packages/superset-ui-core/test/time-comparison/getTimeOffset.test.ts
- packages/superset-ui-core/test/time-comparison/parseDttmToDate.test.ts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-07 10:01:16 -08:00
dependabot[bot]
2f2ce330b2 chore(deps-dev): bump timezone-mock in /superset-frontend
Bumps [timezone-mock](https://github.com/Jimbly/timezone-mock) from 1.3.6 to 1.4.0.
- [Commits](https://github.com/Jimbly/timezone-mock/commits)

---
updated-dependencies:
- dependency-name: timezone-mock
  dependency-version: 1.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-07 10:01:15 -08:00
4 changed files with 76 additions and 76 deletions

View File

@@ -55953,9 +55953,9 @@
"license": "MIT"
},
"node_modules/timezone-mock": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/timezone-mock/-/timezone-mock-1.3.6.tgz",
"integrity": "sha512-YcloWmZfLD9Li5m2VcobkCDNVaLMx8ohAb/97l/wYS3m+0TIEK5PFNMZZfRcusc6sFjIfxu8qcJT0CNnOdpqmg==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/timezone-mock/-/timezone-mock-1.4.0.tgz",
"integrity": "sha512-LMnGHctfNWTfGyNghWMGjaIzBQqtnHzOUzi9cL0nDS4dx5yuCwbD7dn9qZbU4jT1HMqQW1khEOloXUTTuxiSaQ==",
"dev": true,
"license": "MIT"
},
@@ -63810,7 +63810,7 @@
"fetch-mock": "^12.6.0",
"jest-mock-console": "^2.0.0",
"resize-observer-polyfill": "1.5.1",
"timezone-mock": "1.3.6"
"timezone-mock": "1.4.0"
},
"peerDependencies": {
"@emotion/cache": "^11.4.0",
@@ -65903,8 +65903,8 @@
"@luma.gl/constants": "~9.2.5",
"@luma.gl/core": "~9.2.5",
"@luma.gl/engine": "~9.2.5",
"@luma.gl/shadertools": "~9.2.5",
"@luma.gl/webgl": "~9.2.5",
"@luma.gl/shadertools": "~9.2.6",
"@luma.gl/webgl": "~9.2.6",
"@mapbox/geojson-extent": "^1.0.1",
"@mapbox/tiny-sdf": "^2.0.7",
"@math.gl/web-mercator": "^4.1.0",

View File

@@ -85,7 +85,7 @@
"fetch-mock": "^12.6.0",
"jest-mock-console": "^2.0.0",
"resize-observer-polyfill": "1.5.1",
"timezone-mock": "1.3.6"
"timezone-mock": "1.4.0"
},
"peerDependencies": {
"antd": "^5.26.0",

View File

@@ -39,8 +39,8 @@ const runTimezoneTest = (
expected_result: string[],
includeFutureOffsets = true,
) => {
jest.setSystemTime(new Date(now_time));
timezoneMock.register(timezone);
jest.setSystemTime(new Date(now_time));
const result = getTimeOffset({
timeRangeFilter,
shifts,
@@ -53,8 +53,8 @@ const runTimezoneTest = (
test('should handle includeFutureOffsets is null', () => {
jest.useFakeTimers();
jest.setSystemTime(new Date(NOW_UTC_IN_EUROPE));
timezoneMock.register('Etc/GMT-2');
jest.setSystemTime(new Date(NOW_UTC_IN_EUROPE));
const result = getTimeOffset({
timeRangeFilter: {
comparator: '2024-06-03 : 2024-06-10',
@@ -109,7 +109,7 @@ test('should handle custom range with relative dates (now)', () => {
timeRangeFilter,
shifts,
startDate,
['4 days ago'],
['5 days ago'],
);
runTimezoneTest(NOW_IN_UTC, 'UTC', timeRangeFilter, shifts, startDate, [
'4 days ago',
@@ -218,7 +218,7 @@ test('should handle null timeRangeFilter', () => {
timeRangeFilter,
shifts,
startDate,
['2 days ago'],
['3 days ago'],
);
runTimezoneTest(NOW_IN_UTC, 'UTC', timeRangeFilter, shifts, startDate, [
'2 days ago',
@@ -304,7 +304,7 @@ test('should handle custom range with DATEADD function and relative start date',
timeRangeFilter,
shifts,
startDate,
['2 days ago'],
['3 days ago'],
);
runTimezoneTest(NOW_IN_UTC, 'UTC', timeRangeFilter, shifts, startDate, [
'2 days ago',
@@ -362,7 +362,7 @@ test('should handle custom range with specific date and relative end date', () =
timeRangeFilter,
shifts,
startDate,
['9 days ago'],
['8 days ago'],
);
runTimezoneTest(NOW_IN_UTC, 'UTC', timeRangeFilter, shifts, startDate, [
'9 days ago',
@@ -390,7 +390,7 @@ test('should handle custom range with specific date and specific end date', () =
timeRangeFilter,
shifts,
startDate,
['2 days ago'],
['1 days ago'],
);
runTimezoneTest(NOW_IN_UTC, 'UTC', timeRangeFilter, shifts, startDate, [
'2 days ago',
@@ -474,7 +474,7 @@ test('should handle custom range with previous calendar week', () => {
timeRangeFilter,
shifts,
startDate,
['1 days ago'],
['3 days ago'],
);
runTimezoneTest(
'2024-06-05T00:06:00Z',
@@ -507,7 +507,7 @@ test('should handle custom range with previous calendar month', () => {
timeRangeFilter,
shifts,
startDate,
['5 days ago'],
['7 days ago'],
);
runTimezoneTest(
'2024-06-05T00:06:00Z',
@@ -541,7 +541,7 @@ test('should handle custom range with previous calendar year', () => {
timeRangeFilter,
shifts,
startDate,
['6 days ago'],
['8 days ago'],
);
runTimezoneTest(
'2024-06-05T00:06:00Z',
@@ -760,7 +760,7 @@ test('should handle future custom shift with different format', () => {
timeRangeFilter,
shifts,
startDate,
['4 days after'],
['3 days after'],
);
runTimezoneTest(NOW_IN_UTC, 'UTC', timeRangeFilter, shifts, startDate, [
'4 days after',
@@ -850,7 +850,7 @@ test('should handle custom range with relative dates (hour)', () => {
timeRangeFilter,
shifts,
startDate,
['4 days ago'],
['2 days ago'],
);
runTimezoneTest(NOW_IN_UTC, 'UTC', timeRangeFilter, shifts, startDate, [
'4 days ago',

View File

@@ -38,8 +38,8 @@ const runTimezoneTest = (
endDate = false,
computingShift = false,
) => {
jest.setSystemTime(new Date(now_time));
timezoneMock.register(timezone);
jest.setSystemTime(new Date(now_time));
expect(parseDttmToDate(eval_time, endDate, computingShift)).toEqual(
expected_result,
);
@@ -69,9 +69,9 @@ test('should return the current date for "today"', () => {
'today',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-06-03T00:00:00+02:00'),
new Date('2024-06-01T22:00:00Z'),
);
runTimezoneTest('today', NOW_IN_UTC, 'UTC', new Date('2024-06-03T00:00:00Z'));
runTimezoneTest('today', NOW_IN_UTC, 'UTC', new Date('2024-06-02T00:00:00Z'));
runTimezoneTest(
'today',
NOW_UTC_IN_PACIFIC,
@@ -125,13 +125,13 @@ test('should return yesterday date for "Last day"', () => {
'Last day',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-06-01T22:00:00Z'),
new Date('2024-05-31T22:00:00Z'),
);
runTimezoneTest(
'Last day',
NOW_IN_UTC,
'UTC',
new Date('2024-06-02T00:00:00Z'),
new Date('2024-06-01T00:00:00Z'),
);
runTimezoneTest(
'Last day',
@@ -147,13 +147,13 @@ test('should return the date one week ago for "Last week"', () => {
'Last week',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-05-26T22:00:00Z'),
new Date('2024-05-25T22:00:00Z'),
);
runTimezoneTest(
'Last week',
NOW_IN_UTC,
'UTC',
new Date('2024-05-27T00:00:00Z'),
new Date('2024-05-26T00:00:00Z'),
);
runTimezoneTest(
'Last week',
@@ -169,13 +169,13 @@ test('should return the date one month ago for "Last month"', () => {
'Last month',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-05-02T22:00:00Z'),
new Date('2024-05-01T22:00:00Z'),
);
runTimezoneTest(
'Last month',
NOW_IN_UTC,
'UTC',
new Date('2024-05-03T00:00:00Z'),
new Date('2024-05-02T00:00:00Z'),
);
runTimezoneTest(
'Last month',
@@ -191,13 +191,13 @@ test('should return the date three months ago for "Last quarter"', () => {
'Last quarter',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-03-02T22:00:00Z'),
new Date('2024-03-01T22:00:00Z'),
);
runTimezoneTest(
'Last quarter',
NOW_IN_UTC,
'UTC',
new Date('2024-03-03T00:00:00Z'),
new Date('2024-03-02T00:00:00Z'),
);
runTimezoneTest(
'Last quarter',
@@ -213,13 +213,13 @@ test('should return the date one year ago for "Last year"', () => {
'Last year',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2023-06-02T22:00:00Z'),
new Date('2023-06-01T22:00:00Z'),
);
runTimezoneTest(
'Last year',
NOW_IN_UTC,
'UTC',
new Date('2023-06-03T00:00:00Z'),
new Date('2023-06-02T00:00:00Z'),
);
runTimezoneTest(
'Last year',
@@ -235,19 +235,19 @@ test('should return the date for "previous calendar week"', () => {
'previous calendar week',
'2024-06-04T22:00:00Z',
'Etc/GMT-2',
new Date('2024-05-26T22:00:00Z'),
new Date('2024-05-27T16:00:00Z'),
);
runTimezoneTest(
'previous calendar week',
'2024-06-05T00:00:00Z',
'UTC',
new Date('2024-05-27T00:00:00Z'),
new Date('2024-05-27T20:00:00Z'),
);
runTimezoneTest(
'previous calendar week',
'2024-06-05T08:00:00Z',
'Etc/GMT+8',
new Date('2024-05-27T08:00:00Z'),
new Date('2024-05-27T12:00:00Z'),
);
});
@@ -257,19 +257,19 @@ test('should return the date for "previous calendar month"', () => {
'previous calendar month',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-04-30T22:00:00Z'),
new Date('2024-05-01T10:00:00Z'),
);
runTimezoneTest(
'previous calendar month',
NOW_IN_UTC,
'UTC',
new Date('2024-05-01T00:00:00Z'),
new Date('2024-05-01T16:00:00Z'),
);
runTimezoneTest(
'previous calendar month',
NOW_UTC_IN_PACIFIC,
'Etc/GMT+8',
new Date('2024-05-01T08:00:00Z'),
new Date('2024-05-01T16:00:00Z'),
);
});
@@ -279,19 +279,19 @@ test('should return the date for "previous calendar year"', () => {
'previous calendar year',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2022-12-31T22:00:00Z'),
new Date('2023-01-01T16:00:00Z'),
);
runTimezoneTest(
'previous calendar year',
NOW_IN_UTC,
'UTC',
new Date('2023-01-01T00:00:00Z'),
new Date('2023-01-01T20:00:00Z'),
);
runTimezoneTest(
'previous calendar year',
NOW_UTC_IN_PACIFIC,
'Etc/GMT+8',
new Date('2023-01-01T08:00:00Z'),
new Date('2023-01-01T12:00:00Z'),
);
});
@@ -301,13 +301,13 @@ test('should return the date for "1 day ago"', () => {
'1 day ago',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-06-01T22:00:00Z'),
new Date('2024-05-31T22:00:00Z'),
);
runTimezoneTest(
'1 day ago',
NOW_IN_UTC,
'UTC',
new Date('2024-06-02T00:00:00Z'),
new Date('2024-06-01T00:00:00Z'),
);
runTimezoneTest(
'1 day ago',
@@ -323,13 +323,13 @@ test('should return the date for "1 week ago"', () => {
'1 week ago',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-05-26T22:00:00Z'),
new Date('2024-05-25T22:00:00Z'),
);
runTimezoneTest(
'1 week ago',
NOW_IN_UTC,
'UTC',
new Date('2024-05-27T00:00:00Z'),
new Date('2024-05-26T00:00:00Z'),
);
runTimezoneTest(
'1 week ago',
@@ -345,13 +345,13 @@ test('should return the date for "1 month ago"', () => {
'1 month ago',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-05-02T22:00:00Z'),
new Date('2024-05-01T22:00:00Z'),
);
runTimezoneTest(
'1 month ago',
NOW_IN_UTC,
'UTC',
new Date('2024-05-03T00:00:00Z'),
new Date('2024-05-02T00:00:00Z'),
);
runTimezoneTest(
'1 month ago',
@@ -367,13 +367,13 @@ test('should return the date for "1 year ago"', () => {
'1 year ago',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2023-06-02T22:00:00Z'),
new Date('2023-06-01T22:00:00Z'),
);
runTimezoneTest(
'1 year ago',
NOW_IN_UTC,
'UTC',
new Date('2023-06-03T00:00:00Z'),
new Date('2023-06-02T00:00:00Z'),
);
runTimezoneTest(
'1 year ago',
@@ -389,13 +389,13 @@ test('should return the date for "2024-03-09"', () => {
'2024-03-09',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-03-08T22:00:00.000Z'),
new Date('2024-03-07T22:00:00.000Z'),
);
runTimezoneTest(
'2024-03-09',
NOW_IN_UTC,
'UTC',
new Date('2024-03-09T00:00:00.000Z'),
new Date('2024-03-08T00:00:00.000Z'),
);
runTimezoneTest(
'2024-03-09',
@@ -411,14 +411,14 @@ test('should return the current date for "Last day" with isEndDate true', () =>
'Last day',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-06-02T22:00:00Z'),
new Date('2024-06-01T22:00:00Z'),
true,
);
runTimezoneTest(
'Last day',
NOW_IN_UTC,
'UTC',
new Date('2024-06-03T00:00:00Z'),
new Date('2024-06-02T00:00:00Z'),
true,
);
runTimezoneTest(
@@ -436,14 +436,14 @@ test('should return the current date for "Last week" with isEndDate true', () =>
'Last week',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-06-02T22:00:00Z'),
new Date('2024-06-01T22:00:00Z'),
true,
);
runTimezoneTest(
'Last week',
NOW_IN_UTC,
'UTC',
new Date('2024-06-03T00:00:00Z'),
new Date('2024-06-02T00:00:00Z'),
true,
);
runTimezoneTest(
@@ -461,14 +461,14 @@ test('should return the current date for "Last quarter" with isEndDate true', ()
'Last quarter',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-06-02T22:00:00Z'),
new Date('2024-06-01T22:00:00Z'),
true,
);
runTimezoneTest(
'Last quarter',
NOW_IN_UTC,
'UTC',
new Date('2024-06-03T00:00:00Z'),
new Date('2024-06-02T00:00:00Z'),
true,
);
runTimezoneTest(
@@ -486,14 +486,14 @@ test('should return the current date for "Last year" with isEndDate true', () =>
'Last year',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-06-02T22:00:00Z'),
new Date('2024-06-01T22:00:00Z'),
true,
);
runTimezoneTest(
'Last year',
NOW_IN_UTC,
'UTC',
new Date('2024-06-03T00:00:00Z'),
new Date('2024-06-02T00:00:00Z'),
true,
);
runTimezoneTest(
@@ -511,21 +511,21 @@ test('should return the date for "previous calendar week" with isEndDate true',
'previous calendar week',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-06-02T22:00:00Z'),
new Date('2024-06-03T16:00:00Z'),
true,
);
runTimezoneTest(
'previous calendar week',
NOW_IN_UTC,
'UTC',
new Date('2024-06-03T00:00:00Z'),
new Date('2024-06-03T20:00:00Z'),
true,
);
runTimezoneTest(
'previous calendar week',
NOW_UTC_IN_PACIFIC,
'Etc/GMT+8',
new Date('2024-06-03T08:00:00Z'),
new Date('2024-06-03T12:00:00Z'),
true,
);
});
@@ -536,21 +536,21 @@ test('should return the date for "previous calendar month" with isEndDate true',
'previous calendar month',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-05-31T22:00:00Z'),
new Date('2024-06-01T16:00:00Z'),
true,
);
runTimezoneTest(
'previous calendar month',
NOW_IN_UTC,
'UTC',
new Date('2024-06-01T00:00:00Z'),
new Date('2024-06-01T20:00:00Z'),
true,
);
runTimezoneTest(
'previous calendar month',
NOW_UTC_IN_PACIFIC,
'Etc/GMT+8',
new Date('2024-06-01T08:00:00Z'),
new Date('2024-06-01T12:00:00Z'),
true,
);
});
@@ -561,21 +561,21 @@ test('should return the date for "previous calendar year" with isEndDate true',
'previous calendar year',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2023-12-31T22:00:00Z'),
new Date('2024-01-01T16:00:00Z'),
true,
);
runTimezoneTest(
'previous calendar year',
NOW_IN_UTC,
'UTC',
new Date('2024-01-01T00:00:00Z'),
new Date('2024-01-01T20:00:00Z'),
true,
);
runTimezoneTest(
'previous calendar year',
NOW_UTC_IN_PACIFIC,
'Etc/GMT+8',
new Date('2024-01-01T08:00:00Z'),
new Date('2024-01-01T12:00:00Z'),
true,
);
});
@@ -586,9 +586,9 @@ test('should return the date for "2024" with parts.length === 1', () => {
'2024',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2023-12-31T22:00:00.000Z'),
new Date('2023-12-30T22:00:00.000Z'),
);
runTimezoneTest('2024', NOW_IN_UTC, 'UTC', new Date('2024-01-01T00:00:00Z'));
runTimezoneTest('2024', NOW_IN_UTC, 'UTC', new Date('2023-12-31T00:00:00Z'));
runTimezoneTest(
'2024',
NOW_UTC_IN_PACIFIC,
@@ -603,13 +603,13 @@ test('should return the date for "2024-03" with parts.length === 2', () => {
'2024-03',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-02-29T22:00:00.000Z'),
new Date('2024-02-28T22:00:00.000Z'),
);
runTimezoneTest(
'2024-03',
NOW_IN_UTC,
'UTC',
new Date('2024-03-01T00:00:00Z'),
new Date('2024-02-29T00:00:00Z'),
);
runTimezoneTest(
'2024-03',
@@ -625,13 +625,13 @@ test('should return the date for "2024-03-06" with parts.length === 3', () => {
'2024-03-06',
NOW_UTC_IN_EUROPE,
'Etc/GMT-2',
new Date('2024-03-05T22:00:00.000Z'),
new Date('2024-03-04T22:00:00.000Z'),
);
runTimezoneTest(
'2024-03-06',
NOW_IN_UTC,
'UTC',
new Date('2024-03-06T00:00:00.000Z'),
new Date('2024-03-05T00:00:00.000Z'),
);
runTimezoneTest(
'2024-03-06',
@@ -643,7 +643,7 @@ test('should return the date for "2024-03-06" with parts.length === 3', () => {
test('should return the date for "2024-03-06" with computingShifts true', () => {
jest.useFakeTimers();
const expectedDate = new Date('2024-03-06T22:00:00Z');
const expectedDate = new Date('2024-03-05T22:00:00Z');
expectedDate.setHours(-expectedDate.getTimezoneOffset() / 60, 0, 0, 0);
runTimezoneTest(
'2024-03-06',
@@ -657,7 +657,7 @@ test('should return the date for "2024-03-06" with computingShifts true', () =>
test('should return the date for "2024-03-06" with computingShifts true and isEndDate true', () => {
jest.useFakeTimers();
const expectedDate = new Date('2024-03-06T22:00:00Z');
const expectedDate = new Date('2024-03-05T22:00:00Z');
expectedDate.setHours(-expectedDate.getTimezoneOffset() / 60, 0, 0, 0);
runTimezoneTest(
'2024-03-06',