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:
co-authored by
CarinaWolli
parent
817a3decb7
commit
d4f3726875
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user