51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
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);
|
|
});
|
|
});
|