calcom/test/lib/slots.test.ts
Alex Johansson f63aa5d550
add linting in CI + fix lint errors (#473)
* run `yarn lint --fix`

* Revert "Revert "add linting to ci""

This reverts commit 0bbbbee4be.

* Fixed some errors

* remove unused code - not sure why this was here?

* assert env var

* more type fixes

* fix typings og gcal callback - needs testing

* rename `md5.ts` to `md5.js`

it is js.

* fix types

* fix types

* fix lint errors

* fix last lint error

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2021-08-19 14:27:01 +02:00

57 lines
1.7 KiB
TypeScript

import getSlots from "@lib/slots";
import { expect, it } from "@jest/globals";
import MockDate from "mockdate";
import dayjs from "dayjs";
import utc from "dayjs/plugin/utc";
import timezone from "dayjs/plugin/timezone";
dayjs.extend(utc);
dayjs.extend(timezone);
MockDate.set("2021-06-20T11:59:59Z");
it("can fit 24 hourly slots for an empty day", async () => {
// 24h in a day.
expect(
getSlots({
inviteeDate: dayjs().add(1, "day"),
frequency: 60,
workingHours: [{ days: [...Array(7).keys()], startTime: 0, endTime: 1440 }],
organizerTimeZone: "Europe/London",
})
).toHaveLength(24);
});
it("only shows future booking slots on the same day", async () => {
// The mock date is 1s to midday, so 12 slots should be open given 0 booking notice.
expect(
getSlots({
inviteeDate: dayjs(),
frequency: 60,
workingHours: [{ days: [...Array(7).keys()], startTime: 0, endTime: 1440 }],
organizerTimeZone: "GMT",
})
).toHaveLength(12);
});
it("can cut off dates that due to invitee timezone differences fall on the next day", async () => {
expect(
getSlots({
inviteeDate: dayjs().tz("Europe/Amsterdam").startOf("day"), // time translation +01:00
frequency: 60,
workingHours: [{ days: [0], startTime: 1380, endTime: 1440 }],
organizerTimeZone: "Europe/London",
})
).toHaveLength(0);
});
it("can cut off dates that due to invitee timezone differences fall on the previous day", async () => {
expect(
getSlots({
inviteeDate: dayjs().startOf("day"), // time translation -01:00
frequency: 60,
workingHours: [{ days: [0], startTime: 0, endTime: 60 }],
organizerTimeZone: "Europe/London",
})
).toHaveLength(0);
});