predictype
Version:
PredicType is a library of pre-built and tested predicates for TypeScript, covering various data types and operations.
28 lines (27 loc) • 1.67 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const objectKeyMembership_js_1 = require("./objectKeyMembership.js");
(0, vitest_1.describe)('objectKeyMembership', () => {
(0, vitest_1.it)('should return true for key_in when at least one key matches', () => {
const obj = { foo: 1, bar: 2 };
(0, vitest_1.expect)((0, objectKeyMembership_js_1.objectKeyMembership)(obj, 'in', ['foo', 'baz'])).toBe(true);
(0, vitest_1.expect)((0, objectKeyMembership_js_1.objectKeyMembership)(obj, 'in', ['baz'])).toBe(false);
});
(0, vitest_1.it)('should return true for not_in when no keys match', () => {
const obj = { foo: 1, bar: 2 };
(0, vitest_1.expect)((0, objectKeyMembership_js_1.objectKeyMembership)(obj, 'not_in', ['baz'])).toBe(true);
(0, vitest_1.expect)((0, objectKeyMembership_js_1.objectKeyMembership)(obj, 'not_in', ['foo', 'baz'])).toBe(false);
});
(0, vitest_1.it)('should work with symbol keys', () => {
const sym = Symbol('s');
const obj = { [sym]: 1 };
(0, vitest_1.expect)((0, objectKeyMembership_js_1.objectKeyMembership)(obj, 'in', [sym])).toBe(true);
(0, vitest_1.expect)((0, objectKeyMembership_js_1.objectKeyMembership)(obj, 'not_in', [sym])).toBe(false);
});
(0, vitest_1.it)('should throw for unknown operator', () => {
const obj = { foo: 1 };
// @ts-expect-error
(0, vitest_1.expect)(() => (0, objectKeyMembership_js_1.objectKeyMembership)(obj, 'invalid_operator', ['foo'])).toThrow('Unknown ObjectKeyMembership operation: invalid_operator');
});
});
;