kubricate
Version:
A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.
67 lines (66 loc) • 2.15 kB
JavaScript
;
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