UNPKG

polen

Version:

A framework for delightful GraphQL developer portals

75 lines 2.45 kB
import { Ts } from '@wollybeard/kit'; import { objFilter, ObjOmit, ObjPick, objPolicyFilter } from './kit-temp.js'; // Test 1: objPolicyFilter with allow mode { const result = objPolicyFilter(`allow`, testObj, [`a`, `c`]); Ts.assertEqual()(result); } // Test 2: objPolicyFilter with deny mode { const result = objPolicyFilter(`deny`, testObj, [`a`, `c`]); Ts.assertEqual()(result); } // Test 3: objFilter returns Partial<T> { const result = objFilter(testObj, (key, value) => value !== `hello`); Ts.assertEqual()(result); // All properties are optional Ts.assertSub()(undefined); Ts.assertSub()(undefined); Ts.assertSub()(undefined); Ts.assertSub()(undefined); } // Test 4: ObjPick type inference { const result = ObjPick(testObj, [`a`, `c`]); Ts.assertEqual()(result); } // Test 5: ObjOmit type inference { const result = ObjOmit(testObj, [`a`, `c`]); Ts.assertEqual()(result); } // Test 6: ObjPolicyFilter type-level function { } // Test 7: Edge cases { // Empty object const empty = {}; const allowEmpty = objPolicyFilter(`allow`, empty, []); const denyEmpty = objPolicyFilter(`deny`, empty, []); const filterEmpty = objFilter(empty, () => true); Ts.assertEqual()(allowEmpty); Ts.assertEqual()(denyEmpty); Ts.assertEqual()(filterEmpty); // Single property object const single = { a: 1 }; const allowSingle = objPolicyFilter(`allow`, single, [`a`]); const denySingle = objPolicyFilter(`deny`, single, [`a`]); const filterSingle = objFilter(single, () => true); Ts.assertEqual()(allowSingle); Ts.assertEqual()(denySingle); Ts.assertEqual()(filterSingle); } // Test 8: Complex nested object { const complexObj = {}; const picked = objPolicyFilter(`allow`, complexObj, [`nested`, `optional`]); Ts.assertEqual()(picked); const omitted = objPolicyFilter(`deny`, complexObj, [`nested`, `optional`]); Ts.assertEqual()(omitted); const filtered = objFilter(complexObj, (key) => key !== `array`); Ts.assertEqual()(filtered); } // Test 9: Keys parameter type inference { // With const assertion const keys1 = [`a`, `c`]; const result1 = objPolicyFilter(`allow`, testObj, keys1); Ts.assertEqual()(result1); // Without const assertion (wider type) const keys2 = [`a`, `c`]; const result2 = objPolicyFilter(`allow`, testObj, keys2); } //# sourceMappingURL=kit-temp.test-d.js.map