Files
calendar/apps/web/test/lib/getTimezone.test.ts
T
b1cd3e940e feat: Add Eastern and Eastern Pacific time zones #16880 (#16974)
* add eastern and eastern pacific timezones

* fixed issue while running tests.

* fix: Find Braz..il instead of Brasil

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2024-10-10 16:26:17 +00:00

170 lines
4.6 KiB
TypeScript

import { expect, beforeEach, afterEach, it, vi, describe } from "vitest";
import { filterByCities, addCitiesToDropdown, handleOptionLabel } from "@calcom/lib/timezone";
const cityData = [
{
city: "San Francisco",
timezone: "America/Argentina/Cordoba",
},
{
city: "Sao Francisco do Sul",
timezone: "America/Sao_Paulo",
},
{
city: "San Francisco de Macoris",
timezone: "America/Santo_Domingo",
},
{
city: "San Francisco Gotera",
timezone: "America/El_Salvador",
},
{
city: "San Francisco",
timezone: "America/Los_Angeles",
},
{
city: "Eastern Time - US & Canada",
timezone: "America/New_York",
},
{
city: "Pacific Time - US & Canada",
timezone: "America/Los_Angeles",
},
{
city: "Central Time - US & Canada",
timezone: "America/Chicago",
},
{
city: "Mountain Time - US & Canada",
timezone: "America/Denver",
},
{
city: "Atlantic Time - Canada",
timezone: "America/Halifax",
},
{
city: "Eastern European Time",
timezone: "Europe/Bucharest",
},
{
city: "Central European Time",
timezone: "Europe/Berlin",
},
{
city: "Western European Time",
timezone: "Europe/London",
},
{
city: "Australian Eastern Time",
timezone: "Australia/Sydney",
},
{
city: "Japan Standard Time",
timezone: "Asia/Tokyo",
},
{
city: "India Standard Time",
timezone: "Asia/Kolkata",
},
{
city: "Gulf Standard Time",
timezone: "Asia/Dubai",
},
{
city: "South Africa Standard Time",
timezone: "Africa/Johannesburg",
},
{
city: "Brazil Time",
timezone: "America/Sao_Paulo",
},
{
city: "Hawaii-Aleutian Standard Time",
timezone: "Pacific/Honolulu",
},
];
const option = {
value: "America/Los_Angeles",
label: "(GMT-8:00) San Francisco",
offset: -8,
abbrev: "PST",
altName: "Pacific Standard Time",
};
describe("getTimezone", () => {
beforeEach(() => {
vi.useFakeTimers().setSystemTime(new Date("2020-01-01"));
});
afterEach(() => {
vi.runOnlyPendingTimers();
vi.useRealTimers();
});
it("should return empty array for an empty string", () => {
expect(filterByCities("", cityData)).toMatchInlineSnapshot(`[]`);
});
it("should filter cities for a valid city name", () => {
expect(filterByCities("San Francisco", cityData)).toMatchInlineSnapshot(`
[
{
"city": "San Francisco",
"timezone": "America/Argentina/Cordoba",
},
{
"city": "San Francisco de Macoris",
"timezone": "America/Santo_Domingo",
},
{
"city": "San Francisco Gotera",
"timezone": "America/El_Salvador",
},
{
"city": "San Francisco",
"timezone": "America/Los_Angeles",
},
]
`);
});
it("should return appropriate timezone(s) for a given city name array", () => {
expect(addCitiesToDropdown(cityData)).toMatchInlineSnapshot(`
{
"Africa/Johannesburg": "South Africa Standard Time",
"America/Argentina/Cordoba": "San Francisco",
"America/Chicago": "Central Time - US & Canada",
"America/Denver": "Mountain Time - US & Canada",
"America/El_Salvador": "San Francisco Gotera",
"America/Halifax": "Atlantic Time - Canada",
"America/Los_Angeles": "Pacific Time - US & Canada",
"America/New_York": "Eastern Time - US & Canada",
"America/Santo_Domingo": "San Francisco de Macoris",
"America/Sao_Paulo": "Brazil Time",
"Asia/Dubai": "Gulf Standard Time",
"Asia/Kolkata": "India Standard Time",
"Asia/Tokyo": "Japan Standard Time",
"Australia/Sydney": "Australian Eastern Time",
"Europe/Berlin": "Central European Time",
"Europe/Bucharest": "Eastern European Time",
"Europe/London": "Western European Time",
"Pacific/Honolulu": "Hawaii-Aleutian Standard Time",
}
`);
});
it("should render city name as option label if cityData is not empty", () => {
expect(handleOptionLabel(option, cityData)).toMatchInlineSnapshot(`"San Francisco GMT -8:00"`);
vi.setSystemTime(new Date("2020-06-01"));
expect(handleOptionLabel(option, cityData)).toMatchInlineSnapshot(`"San Francisco GMT -7:00"`);
});
it("should return timezone as option label if cityData is empty", () => {
expect(handleOptionLabel(option, [])).toMatchInlineSnapshot(`"America/Los Angeles GMT -8:00"`);
vi.setSystemTime(new Date("2020-06-01"));
expect(handleOptionLabel(option, [])).toMatchInlineSnapshot(`"America/Los Angeles GMT -7:00"`);
});
});