84 lines
2.5 KiB
TypeScript
84 lines
2.5 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
});
|