UNPKG

superjson-temporal

Version:

SuperJSON serializers/deserializers for Temporal types.

40 lines (36 loc) 1.68 kB
import { describe, expect, test } from "bun:test"; import { default as SuperJSON } from "superjson"; import { Temporal } from "temporal-polyfill"; import { registerSuperJSONTemporal } from "./register-super-json-temporal.js"; describe("registerSuperJSONTemporal", () => { test("should register the serializers/deserializers for Temporal types", () => { registerSuperJSONTemporal(SuperJSON); const zonedDateTime = Temporal.ZonedDateTime.from( "2022-01-28T19:53+01:00[Europe/Berlin]", ); const obj = { zonedDateTime, plainDate: zonedDateTime.toPlainDate(), plainDateTime: zonedDateTime.toPlainDateTime(), plainMonthDay: zonedDateTime.toPlainDate().toPlainMonthDay(), plainYearMonth: zonedDateTime.toPlainDate().toPlainYearMonth(), plainTime: zonedDateTime.toPlainTime(), duration: zonedDateTime.toPlainDateTime().since({ year: 2021, month: 1, day: 28, }), instant: zonedDateTime.toInstant(), }; type ObjType = typeof obj; const newObj = SuperJSON.parse<ObjType>(SuperJSON.stringify(obj)); expect(newObj.zonedDateTime.equals(obj.zonedDateTime)).toEqual(true); expect(newObj.plainDateTime.equals(obj.plainDateTime)).toEqual(true); expect(newObj.plainMonthDay.equals(obj.plainMonthDay)).toEqual(true); expect(newObj.plainYearMonth.equals(obj.plainYearMonth)).toEqual(true); expect(newObj.plainTime.equals(obj.plainTime)).toEqual(true); expect(newObj.plainDate.equals(obj.plainDate)).toEqual(true); expect(newObj.instant.equals(obj.instant)).toEqual(true); expect(newObj.duration.toString()).toEqual(obj.duration.toString()); }); });