brackt/app/lib/__tests__
Claude 516b4e7131 Fix group-stage match times being stored as local-wall-time-as-UTC
The admin group-stage schedule form submitted the raw datetime-local
string, which the server parsed with new Date() in the server's timezone
(UTC), so an admin's local wall-clock time was stored as if it were UTC.
Downstream displays then correctly converted UTC->local, shifting times
by the admin's UTC offset (e.g. 7 PM PDT showed as 12 PM).

Mirror the existing playoff "add-game" form: convert local->UTC on the
client via localDateTimeToUtcIso into a hidden field on submit, and
render the stored UTC value back into the input in the browser's local
timezone via a client-only effect (avoids SSR hydration mismatch).

Adds utcIsoToLocalDateTime helper (inverse of localDateTimeToUtcIso)
with unit tests covering nullish/invalid input and a tz-independent
round-trip.

Note: matches saved before this fix must be re-saved once in admin to
correct their stored values.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0125nZohVD2Cpoq3Q9f4jeds
2026-06-18 02:19:31 +00:00
..
cloudinary-url.test.ts Add Cloudinary-backed avatar system (#385) 2026-05-06 14:47:37 -07:00
cloudinary.server.test.ts Add Cloudinary sports icon uploads (#393) 2026-05-07 16:07:34 -07:00
date-utils.test.ts Fix group-stage match times being stored as local-wall-time-as-UTC 2026-06-18 02:19:31 +00:00
draft-eligibility.test.ts Show why a participant is ineligible to draft (#378) 2026-05-04 21:54:14 -07:00
draft-order.test.ts Fix draft order initialization for teams added mid-season (#449) 2026-05-19 18:22:47 -07:00
draft-timer.test.ts Extract chess clock presets to shared constant (#432) 2026-05-15 14:02:49 -07:00
email.server.test.ts Add branded dark-themed HTML email template (#402) 2026-05-10 11:18:57 -07:00
flag-generator.test.ts Add Cloudinary-backed avatar system (#385) 2026-05-06 14:47:37 -07:00
normalize-team-name.test.ts Add regular season standings for NBA/NHL (fixes #89) (#192) 2026-03-21 00:12:01 -07:00
overnight-pause.test.ts Add overnight pause for draft timers (#335) 2026-04-26 22:31:52 -07:00
parse-results-text.test.ts feat: batch qualifying results entry (#290) 2026-04-12 14:52:22 -07:00
season-helpers.server.test.ts feat: add recharts library and implement PointProgressionChart component for historical views 2025-11-14 21:18:34 -08:00
sport-icon-url.test.ts Harden sport icon cleanup (#397) 2026-05-08 21:19:09 -07:00
standings-display.test.ts Show tied ranks with T prefix across standings and Discord (#239) 2026-03-27 20:45:15 -07:00
unmatched-team-reconciliation.test.ts Improve unmatched team reconciliation UX (#425) 2026-05-14 16:45:02 -07:00
utils.test.ts Fix oxlint warnings: no-shadow, consistent-function-scoping, no-non-null-assertion, and others (#196) 2026-03-21 10:59:51 -07:00