UNPKG

kubricate

Version:

A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.

67 lines (66 loc) 2.15 kB
"use strict"; var _vitest = /*#__PURE__*/require("vitest"); var _mergeUtils = /*#__PURE__*/require("./merge-utils.js"); (0, _vitest.describe)('createMergeHandler', () => { const merge = (0, _mergeUtils.createMergeHandler)(); const baseEffect = (storeName, rawData) => ({ providerName: 'InMemory', type: 'custom', value: { storeName, rawData } }); (0, _vitest.it)('should merge effects with different storeNames separately', () => { const effects = [baseEffect('secret-a', { KEY1: 'VAL1' }), baseEffect('secret-b', { KEY2: 'VAL2' })]; const result = merge(effects); (0, _vitest.expect)(result).toHaveLength(2); (0, _vitest.expect)(result[0].value.rawData).toEqual({ KEY1: 'VAL1' }); (0, _vitest.expect)(result[1].value.rawData).toEqual({ KEY2: 'VAL2' }); }); (0, _vitest.it)('should merge effects with same storeName and different keys', () => { const effects = [baseEffect('shared-secret', { FOO: 'BAR' }), baseEffect('shared-secret', { BAZ: 'QUX' })]; const result = merge(effects); (0, _vitest.expect)(result).toHaveLength(1); (0, _vitest.expect)(result[0].value.rawData).toEqual({ FOO: 'BAR', BAZ: 'QUX' }); }); (0, _vitest.it)('should throw on duplicate keys within same storeName', () => { const effects = [baseEffect('dup-secret', { KEY: 'VAL1' }), baseEffect('dup-secret', { KEY: 'VAL2' })]; (0, _vitest.expect)(() => merge(effects)).toThrowError('[conflict:in-memory] Conflict detected: key "KEY" already exists in Secret "dup-secret"'); }); (0, _vitest.it)('should skip effects not of type "custom"', () => { const nonCustom = { providerName: 'InMemory', type: 'something-else', value: {} }; const result = merge([nonCustom, baseEffect('valid', { K: 'V' })]); (0, _vitest.expect)(result).toHaveLength(1); (0, _vitest.expect)(result[0].value.storeName).toBe('valid'); (0, _vitest.expect)(result[0].value.rawData).toEqual({ K: 'V' }); }); }); //# sourceMappingURL=merge-utils.test.js.map