diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/TimeZone/TimeZone.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/TimeZone/TimeZone.js new file mode 100644 index 0000000000..7a468c2075 --- /dev/null +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/TimeZone/TimeZone.js @@ -0,0 +1,35 @@ +describe("errors", () => { + test("called without new", () => { + expect(() => { + Temporal.TimeZone(); + }).toThrowWithMessage(TypeError, "Temporal.TimeZone constructor must be called with 'new'"); + }); + + test("Invalid time zone name", () => { + expect(() => { + new Temporal.TimeZone("foo"); + }).toThrowWithMessage(RangeError, "Invalid time zone name"); + }); +}); + +describe("normal behavior", () => { + test("length is 1", () => { + expect(Temporal.TimeZone).toHaveLength(1); + }); + + test("basic functionality", () => { + const timeZone = new Temporal.TimeZone("UTC"); + expect(timeZone.id).toBe("UTC"); + expect(typeof timeZone).toBe("object"); + expect(timeZone).toBeInstanceOf(Temporal.TimeZone); + expect(Object.getPrototypeOf(timeZone)).toBe(Temporal.TimeZone.prototype); + }); + + test("canonicalizes time zone name", () => { + expect(new Temporal.TimeZone("Utc").id).toBe("UTC"); + expect(new Temporal.TimeZone("utc").id).toBe("UTC"); + expect(new Temporal.TimeZone("uTC").id).toBe("UTC"); + }); + + // TODO: Add tests for time numeric zone offset once that's implemented +});