Files
claude-code/src/utils/__tests__/uuid.test.ts
2026-05-01 21:39:30 +08:00

52 lines
1.7 KiB
TypeScript

import { describe, expect, test } from 'bun:test'
import { validateUuid, createAgentId } from '../uuid'
describe('validateUuid', () => {
test('validates correct UUID', () => {
const result = validateUuid('550e8400-e29b-41d4-a716-446655440000')
expect(result).toBe('550e8400-e29b-41d4-a716-446655440000')
})
test('validates uppercase UUID', () => {
const result = validateUuid('550E8400-E29B-41D4-A716-446655440000')
expect(result).toBe('550E8400-E29B-41D4-A716-446655440000')
})
test('returns null for non-string', () => {
expect(validateUuid(123)).toBeNull()
expect(validateUuid(null)).toBeNull()
expect(validateUuid(undefined)).toBeNull()
})
test('returns null for invalid UUID format', () => {
expect(validateUuid('not-a-uuid')).toBeNull()
expect(validateUuid('550e8400-e29b-41d4-a716')).toBeNull()
expect(validateUuid('550e8400e29b41d4a716446655440000')).toBeNull()
})
test('returns null for empty string', () => {
expect(validateUuid('')).toBeNull()
})
test('returns null for UUID with invalid chars', () => {
expect(validateUuid('550e8400-e29b-41d4-a716-44665544000g')).toBeNull()
})
test('returns null for UUID with leading/trailing whitespace', () => {
expect(validateUuid(' 550e8400-e29b-41d4-a716-446655440000')).toBeNull()
expect(validateUuid('550e8400-e29b-41d4-a716-446655440000 ')).toBeNull()
})
})
describe('createAgentId', () => {
test('generates id without label in correct format', () => {
const id = createAgentId()
expect(id).toMatch(/^a[0-9a-f]{16}$/)
})
test('generates id with label in correct format', () => {
const id = createAgentId('compact')
expect(id).toMatch(/^acompact-[0-9a-f]{16}$/)
})
})