UNPKG

@deploystack/docker-to-iac

Version:

Translate docker run and docker compose file to Infrastructure as Code

72 lines (71 loc) 4.36 kB
"use strict"; 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'); }); });