* 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>
170 lines
4.6 KiB
TypeScript
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"`);
|
|
});
|
|
});
|