xpeditis2.0/apps/backend/src/domain/value-objects/email.vo.spec.ts
David-Henri ARNAUD 1044900e98 feature phase
2025-10-08 16:56:27 +02:00

71 lines
2.2 KiB
TypeScript

/**
* Email Value Object Unit Tests
*/
import { Email } from './email.vo';
describe('Email Value Object', () => {
describe('create', () => {
it('should create email with valid format', () => {
const email = Email.create('user@example.com');
expect(email.getValue()).toBe('user@example.com');
});
it('should normalize email to lowercase', () => {
const email = Email.create('User@Example.COM');
expect(email.getValue()).toBe('user@example.com');
});
it('should trim whitespace', () => {
const email = Email.create(' user@example.com ');
expect(email.getValue()).toBe('user@example.com');
});
it('should throw error for empty email', () => {
expect(() => Email.create('')).toThrow('Email cannot be empty.');
});
it('should throw error for invalid format', () => {
expect(() => Email.create('invalid-email')).toThrow('Invalid email format');
expect(() => Email.create('@example.com')).toThrow('Invalid email format');
expect(() => Email.create('user@')).toThrow('Invalid email format');
expect(() => Email.create('user@.com')).toThrow('Invalid email format');
});
});
describe('getDomain', () => {
it('should return email domain', () => {
const email = Email.create('user@example.com');
expect(email.getDomain()).toBe('example.com');
});
});
describe('getLocalPart', () => {
it('should return email local part', () => {
const email = Email.create('user@example.com');
expect(email.getLocalPart()).toBe('user');
});
});
describe('equals', () => {
it('should return true for same email', () => {
const email1 = Email.create('user@example.com');
const email2 = Email.create('user@example.com');
expect(email1.equals(email2)).toBe(true);
});
it('should return false for different emails', () => {
const email1 = Email.create('user1@example.com');
const email2 = Email.create('user2@example.com');
expect(email1.equals(email2)).toBe(false);
});
});
describe('toString', () => {
it('should return email as string', () => {
const email = Email.create('user@example.com');
expect(email.toString()).toBe('user@example.com');
});
});
});