predictype
Version:
PredicType is a library of pre-built and tested predicates for TypeScript, covering various data types and operations.
43 lines (42 loc) • 2.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const objectAttributes_js_1 = require("./objectAttributes.js");
(0, vitest_1.describe)('objectAttributes', () => {
(0, vitest_1.it)('should return true for writable', () => {
const obj = { foo: 42 };
(0, vitest_1.expect)((0, objectAttributes_js_1.objectAttributes)(obj, 'attr_is_writable', 'foo')).toBe(true);
});
(0, vitest_1.it)('should return true for enumerable', () => {
const obj = { foo: 1 };
(0, vitest_1.expect)((0, objectAttributes_js_1.objectAttributes)(obj, 'attr_is_enumerable', 'foo')).toBe(true);
});
(0, vitest_1.it)('should return true for configurable', () => {
const obj = { foo: 1 };
(0, vitest_1.expect)((0, objectAttributes_js_1.objectAttributes)(obj, 'attr_is_configurable', 'foo')).toBe(true);
});
(0, vitest_1.it)('should return true for accessor on accessor property', () => {
const obj = {};
Object.defineProperty(obj, 'bar', { get: () => 1 });
(0, vitest_1.expect)((0, objectAttributes_js_1.objectAttributes)(obj, 'attr_is_accessor', 'bar')).toBe(true);
});
(0, vitest_1.it)('should return false for accessor on data property', () => {
const obj = { foo: 1 };
(0, vitest_1.expect)((0, objectAttributes_js_1.objectAttributes)(obj, 'attr_is_accessor', 'foo')).toBe(false);
});
(0, vitest_1.it)('should return true for data_property', () => {
const obj = { foo: 1 };
(0, vitest_1.expect)((0, objectAttributes_js_1.objectAttributes)(obj, 'attr_is_data_property', 'foo')).toBe(true);
});
(0, vitest_1.it)('should return false for writable on non-writable', () => {
const obj = {};
const sym = Symbol('bar');
Object.defineProperty(obj, sym, { value: 1, writable: false });
(0, vitest_1.expect)((0, objectAttributes_js_1.objectAttributes)(obj, 'attr_is_writable', sym)).toBe(false);
});
(0, vitest_1.it)('should throw for unknown operator', () => {
const obj = { foo: 1 };
// @ts-expect-error
(0, vitest_1.expect)(() => (0, objectAttributes_js_1.objectAttributes)(obj, 'invalid_operator', 'foo')).toThrow('Unknown ObjectAttributes operation: invalid_operator');
});
});
;