@@ -2,15 +2,20 @@ import * as v from "valibot";
22import { type Attempt , AttemptSchema } from "./attempt" ;
33import { describe , expect , test } from "vitest" ;
44import type { AttemptEntity } from "../../database/schemas/attempt-entity" ;
5+ import { DateTime } from "../utils/date-time" ;
56import type { SplitEntity } from "../../database/schemas/split-entity" ;
67
78const parse = ( attemptEntity : AttemptEntity ) : Attempt => {
89 return v . parse ( AttemptSchema , attemptEntity ) ;
910} ;
1011
12+ const date = new Date ( ) ;
13+ const timestamp = date . getTime ( ) ;
14+ const timezoneOffsetMs = date . getTimezoneOffset ( ) * 60 * 1000 ;
15+
1116describe ( "attemptSchema" , ( ) => {
1217 const attemptEntity : AttemptEntity = {
13- timestamp : 1_767_455_414_145 ,
18+ timestamp : timestamp ,
1419 player : "Noname" ,
1520 track : "A track" ,
1621 laps : 3 ,
@@ -39,8 +44,8 @@ describe("attemptSchema", () => {
3944 const attempt = parse ( attemptEntity ) ;
4045 expect ( attempt . time ) . toBeUndefined ( ) ;
4146 expect ( attempt . coins ) . toBeUndefined ( ) ;
42- expect ( attempt . date ) . toBe ( "2026.01.03" ) ;
43- expect ( attempt . datetime ) . toBe ( "16:50:14" ) ;
47+ expect ( attempt . date ) . toBe ( DateTime . formatDate ( timestamp ) ) ;
48+ expect ( attempt . datetime ) . toBe ( DateTime . formatTime ( timestamp ) ) ;
4449 expect ( attempt . laps ) . toStrictEqual ( [ 1 , 2 , 3 ] ) ;
4550 expect ( attempt . splits ) . toHaveLength ( 0 ) ;
4651 expect ( attempt . raw ) . toStrictEqual ( attemptEntity ) ;
@@ -58,8 +63,8 @@ describe("attemptSchema", () => {
5863 accumulatedCoins : 3 ,
5964 time : "1:00.000" ,
6065 accumulatedTime : "1:00.000" ,
61- parsedTime : - 3_540_000 ,
62- parsedAccumulatedTime : - 3_540_000 ,
66+ parsedTime : 60_000 + timezoneOffsetMs ,
67+ parsedAccumulatedTime : 60_000 + timezoneOffsetMs ,
6368 raw : split_1 ,
6469 } ) ;
6570 } ) ;
@@ -76,26 +81,26 @@ describe("attemptSchema", () => {
7681 accumulatedCoins : 3 ,
7782 time : "1:00.000" ,
7883 accumulatedTime : "1:00.000" ,
79- parsedTime : - 3_540_000 ,
80- parsedAccumulatedTime : - 3_540_000 ,
84+ parsedTime : 60_000 + timezoneOffsetMs ,
85+ parsedAccumulatedTime : 60_000 + timezoneOffsetMs ,
8186 raw : split_1 ,
8287 } ) ;
8388 expect ( attempt . splits . at ( 1 ) ) . toStrictEqual ( {
8489 coins : - 2 ,
8590 accumulatedCoins : 1 ,
8691 time : "1:00.000" ,
8792 accumulatedTime : "2:00.000" ,
88- parsedTime : - 3_540_000 ,
89- parsedAccumulatedTime : - 7_080_000 ,
93+ parsedTime : 60_000 + timezoneOffsetMs ,
94+ parsedAccumulatedTime : 2 * ( 60_000 + timezoneOffsetMs ) ,
9095 raw : split_2 ,
9196 } ) ;
9297 expect ( attempt . splits . at ( 2 ) ) . toStrictEqual ( {
9398 coins : 1 ,
9499 accumulatedCoins : 2 ,
95100 time : "1:00.000" ,
96101 accumulatedTime : "3:00.000" ,
97- parsedTime : - 3_540_000 ,
98- parsedAccumulatedTime : - 10_620_000 ,
102+ parsedTime : 60_000 + timezoneOffsetMs ,
103+ parsedAccumulatedTime : 3 * ( 60_000 + timezoneOffsetMs ) ,
99104 raw : split_3 ,
100105 } ) ;
101106 } ) ;
0 commit comments