From e7608563350a4d130309d4bc5c416f70358d31fd Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Tue, 3 Feb 2026 07:58:11 +0000 Subject: [PATCH] Add tests, templates, and Gitea Actions workflows --- .tests/unit/file-utils.test.ts | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .tests/unit/file-utils.test.ts diff --git a/.tests/unit/file-utils.test.ts b/.tests/unit/file-utils.test.ts new file mode 100644 index 0000000..2e71ff3 --- /dev/null +++ b/.tests/unit/file-utils.test.ts @@ -0,0 +1,50 @@ +import { sanitizeAgentName, isValidAgentName } from '../../src/utils/file-utils'; + +describe('sanitizeAgentName', () => { + it('should convert to lowercase', () => { + expect(sanitizeAgentName('CLAUDE')).toBe('claude'); + expect(sanitizeAgentName('MyAgent')).toBe('myagent'); + }); + + it('should replace spaces with hyphens', () => { + expect(sanitizeAgentName('my agent')).toBe('my-agent'); + }); + + it('should replace special characters with hyphens', () => { + expect(sanitizeAgentName('my@agent')).toBe('my-agent'); + expect(sanitizeAgentName('my#agent')).toBe('my-agent'); + }); + + it('should collapse multiple hyphens', () => { + expect(sanitizeAgentName('my--agent')).toBe('my-agent'); + expect(sanitizeAgentName('my@@@agent')).toBe('my-agent'); + }); + + it('should trim leading and trailing hyphens', () => { + expect(sanitizeAgentName('-my-agent-')).toBe('my-agent'); + }); + + it('should handle complex names', () => { + expect(sanitizeAgentName('Claude-Code v2.0')).toBe('claude-code-v2-0'); + }); +}); + +describe('isValidAgentName', () => { + it('should accept valid names', () => { + expect(isValidAgentName('claude')).toBe(true); + expect(isValidAgentName('my-agent')).toBe(true); + expect(isValidAgentName('agent-123')).toBe(true); + expect(isValidAgentName('a1b2c3')).toBe(true); + }); + + it('should reject empty and numeric-only names', () => { + expect(isValidAgentName('')).toBe(false); + expect(isValidAgentName('123')).toBe(false); + }); + + it('should accept names that become valid after sanitization', () => { + expect(isValidAgentName('my agent')).toBe(true); + expect(isValidAgentName('my@agent')).toBe(true); + expect(isValidAgentName('My Agent')).toBe(true); + }); +});