import { AvatarId } from './AvatarId'; describe('AvatarId', () => { describe('create', () => { it('creates from valid string', () => { const avatarId = AvatarId.create('avatar-123'); expect(avatarId.toString()).toBe('avatar-123'); }); it('trims whitespace', () => { const avatarId = AvatarId.create(' avatar-123 '); expect(avatarId.toString()).toBe('avatar-123'); }); it('throws error when empty', () => { expect(() => AvatarId.create('')).toThrow('Avatar ID cannot be empty'); }); it('throws error when only whitespace', () => { expect(() => AvatarId.create(' ')).toThrow('Avatar ID cannot be empty'); }); it('throws error when null', () => { expect(() => AvatarId.create(null as any)).toThrow('Avatar ID cannot be empty'); }); it('throws error when undefined', () => { expect(() => AvatarId.create(undefined as any)).toThrow('Avatar ID cannot be empty'); }); }); describe('toString', () => { it('returns the string value', () => { const avatarId = AvatarId.create('avatar-123'); expect(avatarId.toString()).toBe('avatar-123'); }); }); describe('equals', () => { it('returns true for equal avatar IDs', () => { const avatarId1 = AvatarId.create('avatar-123'); const avatarId2 = AvatarId.create('avatar-123'); expect(avatarId1.equals(avatarId2)).toBe(true); }); it('returns false for different avatar IDs', () => { const avatarId1 = AvatarId.create('avatar-123'); const avatarId2 = AvatarId.create('avatar-456'); expect(avatarId1.equals(avatarId2)).toBe(false); }); it('returns false for different case', () => { const avatarId1 = AvatarId.create('avatar-123'); const avatarId2 = AvatarId.create('AVATAR-123'); expect(avatarId1.equals(avatarId2)).toBe(false); }); }); describe('value object equality', () => { it('implements value-based equality', () => { const avatarId1 = AvatarId.create('avatar-123'); const avatarId2 = AvatarId.create('avatar-123'); const avatarId3 = AvatarId.create('avatar-456'); expect(avatarId1.equals(avatarId2)).toBe(true); expect(avatarId1.equals(avatarId3)).toBe(false); }); it('maintains equality after toString', () => { const avatarId1 = AvatarId.create('avatar-123'); const avatarId2 = AvatarId.create('avatar-123'); expect(avatarId1.toString()).toBe(avatarId2.toString()); expect(avatarId1.equals(avatarId2)).toBe(true); }); }); });