import { describe, expect, it } from 'vitest'; import { CountryCode } from './CountryCode'; describe('CountryCode', () => { it('should create a country code', () => { const code = CountryCode.create('US'); expect(code.toString()).toBe('US'); }); it('should uppercase the code', () => { const code = CountryCode.create('us'); expect(code.toString()).toBe('US'); }); it('should accept 3 letter code', () => { const code = CountryCode.create('USA'); expect(code.toString()).toBe('USA'); }); it('should throw on empty code', () => { expect(() => CountryCode.create('')).toThrow('Country code is required'); }); it('should throw on invalid length', () => { expect(() => CountryCode.create('U')).toThrow('Country must be a valid ISO code (2-3 letters)'); }); it('should throw on 4 letters', () => { expect(() => CountryCode.create('USAA')).toThrow('Country must be a valid ISO code (2-3 letters)'); }); it('should throw on non-letters', () => { expect(() => CountryCode.create('U1')).toThrow('Country must be a valid ISO code (2-3 letters)'); }); it('should equal same code', () => { const c1 = CountryCode.create('US'); const c2 = CountryCode.create('US'); expect(c1.equals(c2)).toBe(true); }); it('should not equal different code', () => { const c1 = CountryCode.create('US'); const c2 = CountryCode.create('CA'); expect(c1.equals(c2)).toBe(false); }); });