superjson-temporal
Version:
SuperJSON serializers/deserializers for Temporal types.
34 lines • 1.81 kB
JavaScript
import { default as SuperJSON } from "superjson";
import { Temporal } from "temporal-polyfill";
import { describe, expect, it } from "vitest";
import { registerSuperJSONTemporal } from "./registerSuperJSONTemporal.js";
describe("registerSuperJSONTemporal", () => {
it("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(),
};
const newObj = SuperJSON.parse(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());
});
});
//# sourceMappingURL=registerSuperJSONTemporal.test.js.map