kubricate
Version:
A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.
66 lines (64 loc) • 2.25 kB
JavaScript
"use strict";
var _vitest = /*#__PURE__*/require("vitest");
var _core = /*#__PURE__*/require("@kubricate/core");
var _Stack = /*#__PURE__*/require("./Stack.js");
/* eslint-disable @typescript-eslint/no-explicit-any */
(0, _vitest.describe)('Stack', () => {
(0, _vitest.it)('should call builder and set composer on .from()', () => {
const mockComposer = {};
const builder = _vitest.vi.fn().mockReturnValue(mockComposer);
const stack = new _Stack.Stack(builder);
const result = stack.from({
project: 'example'
});
(0, _vitest.expect)(builder).toHaveBeenCalledWith({
project: 'example'
});
(0, _vitest.expect)(stack._composer).toBe(mockComposer);
(0, _vitest.expect)(result).toBe(stack);
});
(0, _vitest.it)('should set stack name when used with createStack()', () => {
const mockComposer = {};
const builder = _vitest.vi.fn().mockReturnValue(mockComposer);
const stack = (0, _Stack.createStack)('my-stack', builder).from({
foo: 'bar'
});
(0, _vitest.expect)(stack._name).toBe('my-stack');
(0, _vitest.expect)(stack._composer).toBe(mockComposer);
(0, _vitest.expect)(builder).toHaveBeenCalledWith({
foo: 'bar'
});
});
(0, _vitest.it)('should build from a StackTemplate using fromTemplate()', () => {
const template = (0, _core.defineStackTemplate)('hello', input => ({
ns: {
apiVersion: 'v1',
kind: 'Namespace',
metadata: {
name: input.name
}
}
}));
const stack = _Stack.Stack.fromTemplate(template, {
name: 'my-ns'
});
const built = stack.build();
(0, _vitest.expect)(stack._name).toBe('hello');
(0, _vitest.expect)(built.ns.metadata?.name).toBe('my-ns');
});
(0, _vitest.it)('should build from static resource using fromStatic()', () => {
const stack = _Stack.Stack.fromStatic('static-stack', {
configMap: {
apiVersion: 'v1',
kind: 'ConfigMap',
metadata: {
name: 'my-config'
}
}
});
const built = stack.build();
(0, _vitest.expect)(stack._name).toBe('static-stack');
(0, _vitest.expect)(built.configMap.metadata?.name).toBe('my-config');
});
});
//# sourceMappingURL=Stack.test.js.map