@deploystack/docker-to-iac
Version:
Translate docker run and docker compose file to Infrastructure as Code
72 lines (71 loc) • 4.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const digitalOceanParserServiceName_1 = require("../../../src/utils/digitalOceanParserServiceName");
(0, vitest_1.describe)('digitalOceanParserServiceName', () => {
(0, vitest_1.test)('should format simple service name correctly', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('myservice');
(0, vitest_1.expect)(result).toBe('myservice');
});
(0, vitest_1.test)('should convert uppercase to lowercase', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('MyService');
(0, vitest_1.expect)(result).toBe('myservice');
});
(0, vitest_1.test)('should replace underscores with hyphens', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('my_service');
(0, vitest_1.expect)(result).toBe('my-service');
});
(0, vitest_1.test)('should remove special characters', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('my@service!');
(0, vitest_1.expect)(result).toBe('myservice');
});
(0, vitest_1.test)('should ensure service name starts with a letter', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('123service');
(0, vitest_1.expect)(result).toBe('svc-123service');
});
(0, vitest_1.test)('should handle array input', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)(['my', 'service']);
(0, vitest_1.expect)(result).toBe('my-service');
});
(0, vitest_1.test)('should handle undefined input', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)(undefined);
(0, vitest_1.expect)(result).toBe('service');
});
(0, vitest_1.test)('should remove consecutive hyphens', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('my--service');
(0, vitest_1.expect)(result).toBe('my-service');
});
(0, vitest_1.test)('should remove trailing hyphens', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('service-');
// Actual implementation removes trailing hyphens without adding '0'
(0, vitest_1.expect)(result).toBe('service');
});
(0, vitest_1.test)('should ensure service name ends with alphanumeric', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('service-&');
// Actual implementation removes special characters first, resulting in 'service'
(0, vitest_1.expect)(result).toBe('service');
});
(0, vitest_1.test)('should truncate long service names to 32 characters', () => {
const longName = 'this-is-a-very-long-service-name-that-needs-truncation';
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)(longName);
(0, vitest_1.expect)(result.length).toBeLessThanOrEqual(32);
});
(0, vitest_1.test)('should ensure truncated name still ends with alphanumeric', () => {
const longName = 'this-is-a-very-long-service-name-that-ends-with-';
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)(longName);
(0, vitest_1.expect)(result.length).toBeLessThanOrEqual(32);
(0, vitest_1.expect)(result).toMatch(/[a-z0-9]$/);
});
(0, vitest_1.test)('should pad very short names', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('a');
(0, vitest_1.expect)(result).toBe('service-1');
});
(0, vitest_1.test)('should handle spaces in service names', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('my service name');
(0, vitest_1.expect)(result).toBe('myservicename');
});
(0, vitest_1.test)('should handle mixed special characters and spacing', () => {
const result = (0, digitalOceanParserServiceName_1.digitalOceanParserServiceName)('My Service!@#$%^&*(Name 123');
(0, vitest_1.expect)(result).toBe('myservicename123');
});
});