fix: missing date overrides in negative tz (#15251)

* fix check for past date overrides

* add test

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
This commit is contained in:
Carina Wollendorfer
2024-05-29 23:35:43 +00:00
committed by GitHub
co-authored by CarinaWolli
parent 817a3decb7
commit d4f3726875
3 changed files with 29 additions and 2 deletions
+23
View File
@@ -88,6 +88,29 @@ test.describe("Availablity", () => {
await expect(await page.getByTitle(deleteButtonTitle).isVisible()).toBe(false);
});
test("Can create date override on current day in a negative timezone", async ({ page }) => {
await page.getByTestId("schedules").first().click();
// set time zone to New York
await page
.locator("#availability-form div")
.filter({ hasText: "TimezoneEurope/London" })
.locator("svg")
.click();
await page.locator("[id=timeZone-lg-viewport]").fill("New");
await page.getByTestId("select-option-America/New_York").click();
// Add override for today
await page.getByTestId("add-override").click();
await page.locator('[id="modal-title"]').waitFor();
await page.locator('[data-testid="day"][data-disabled="false"]').first().click();
await page.getByTestId("add-override-submit-btn").click();
await page.getByTestId("dialog-rejection").click();
await page.locator('[form="availability-form"][type="submit"]').click();
await page.reload();
await expect(page.locator('[data-testid="date-overrides-list"] > li')).toHaveCount(1);
});
test("Schedule listing", async ({ page }) => {
await test.step("Can add a new schedule", async () => {
await page.getByTestId("new-schedule").click();
@@ -194,6 +194,7 @@ export function AvailabilityEditSheetForm(props: Props & { data: Data; isPending
id="timezone"
isDisabled={!hasEditPermission || !data.hasDefaultSchedule}
value={watchTimezone ?? "Europe/London"}
data-testid="timezone-select"
onChange={(event) => {
if (event) form.setValue("timeZone", event.value, { shouldDirty: true });
}}
@@ -37,8 +37,11 @@ export function transformAvailabilityForClient(schedule: ScheduleWithAvailabilit
export function transformDateOverridesForClient(schedule: ScheduleWithAvailabilities, timeZone: string) {
return schedule.availability.reduce((acc, override) => {
// only iff future date override
if (!override.date || dayjs.tz(override.date, timeZone).isBefore(dayjs(), "day")) {
// only if future date override
const currentUtcOffset = dayjs().tz(timeZone).utcOffset();
const currentTimeInTz = dayjs().utc().add(currentUtcOffset, "minute");
if (!override.date || dayjs(override.date).isBefore(currentTimeInTz, "day")) {
return acc;
}
const newValue = {