mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
75 lines
2.9 KiB
JavaScript
75 lines
2.9 KiB
JavaScript
import { describe, expect, it } from "bun:test";
|
|
|
|
describe("DOMException in Node.js environment", () => {
|
|
it("exists globally", () => {
|
|
expect(typeof DOMException).toBe("function");
|
|
});
|
|
|
|
it("creates instance with message and name", () => {
|
|
const error = new DOMException("Error message", "TestError");
|
|
expect(error).toBeInstanceOf(DOMException);
|
|
expect(error.message).toBe("Error message");
|
|
expect(error.name).toBe("TestError");
|
|
expect(error instanceof Error).toBe(true);
|
|
});
|
|
|
|
it("uses default name when only message is provided", () => {
|
|
const error = new DOMException("Error message");
|
|
expect(error.message).toBe("Error message");
|
|
expect(error.name).toBe("Error");
|
|
});
|
|
|
|
it("creates instance with options object", () => {
|
|
const cause = { reason: "test reason" };
|
|
const error = new DOMException("Error with cause", { name: "CauseError", cause });
|
|
|
|
expect(error.message).toBe("Error with cause");
|
|
expect(error.name).toBe("CauseError");
|
|
expect(error.cause).toBe(cause);
|
|
});
|
|
|
|
it("has standard error constants", () => {
|
|
expect(DOMException.INDEX_SIZE_ERR).toBe(1);
|
|
expect(DOMException.DOMSTRING_SIZE_ERR).toBe(2);
|
|
expect(DOMException.HIERARCHY_REQUEST_ERR).toBe(3);
|
|
expect(DOMException.WRONG_DOCUMENT_ERR).toBe(4);
|
|
expect(DOMException.INVALID_CHARACTER_ERR).toBe(5);
|
|
expect(DOMException.NO_DATA_ALLOWED_ERR).toBe(6);
|
|
expect(DOMException.NO_MODIFICATION_ALLOWED_ERR).toBe(7);
|
|
expect(DOMException.NOT_FOUND_ERR).toBe(8);
|
|
expect(DOMException.NOT_SUPPORTED_ERR).toBe(9);
|
|
expect(DOMException.INUSE_ATTRIBUTE_ERR).toBe(10);
|
|
expect(DOMException.INVALID_STATE_ERR).toBe(11);
|
|
expect(DOMException.SYNTAX_ERR).toBe(12);
|
|
expect(DOMException.INVALID_MODIFICATION_ERR).toBe(13);
|
|
expect(DOMException.NAMESPACE_ERR).toBe(14);
|
|
expect(DOMException.INVALID_ACCESS_ERR).toBe(15);
|
|
expect(DOMException.VALIDATION_ERR).toBe(16);
|
|
expect(DOMException.TYPE_MISMATCH_ERR).toBe(17);
|
|
expect(DOMException.SECURITY_ERR).toBe(18);
|
|
expect(DOMException.NETWORK_ERR).toBe(19);
|
|
expect(DOMException.ABORT_ERR).toBe(20);
|
|
expect(DOMException.URL_MISMATCH_ERR).toBe(21);
|
|
expect(DOMException.QUOTA_EXCEEDED_ERR).toBe(22);
|
|
expect(DOMException.TIMEOUT_ERR).toBe(23);
|
|
expect(DOMException.INVALID_NODE_TYPE_ERR).toBe(24);
|
|
expect(DOMException.DATA_CLONE_ERR).toBe(25);
|
|
});
|
|
|
|
// TODO: missing stack trace on DOMException
|
|
it.failing("inherits prototype properties from Error", () => {
|
|
const error = new DOMException("Test error");
|
|
expect(error.toString()).toBe("Error: Test error");
|
|
expect(error.stack).toBeDefined();
|
|
});
|
|
|
|
it("has proper instance properties", () => {
|
|
const error = new DOMException("Test error", "TestName");
|
|
expect(error.code).toBe(0); // Default code for custom names
|
|
|
|
// Create an exception with known code
|
|
const abortError = new DOMException("Aborted", "AbortError");
|
|
expect(abortError.code).toBe(20); // ABORT_ERR
|
|
});
|
|
});
|