71 lines
2.2 KiB
TypeScript
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');
|
|
});
|
|
});
|
|
});
|