import { describe, it, expect } from 'vitest'; import { League } from './League'; describe('League', () => { it('should create a league', () => { const league = League.create({ id: 'league1', name: 'Test League', description: 'A test league', ownerId: 'owner1', }); expect(league.id.toString()).toBe('league1'); expect(league.name.toString()).toBe('Test League'); expect(league.description.toString()).toBe('A test league'); expect(league.ownerId.toString()).toBe('owner1'); }); it('should throw on invalid id', () => { expect(() => League.create({ id: '', name: 'Test League', description: 'A test league', ownerId: 'owner1', })).toThrow('League ID cannot be empty'); }); it('should throw on invalid name', () => { expect(() => League.create({ id: 'league1', name: '', description: 'A test league', ownerId: 'owner1', })).toThrow('League name cannot be empty'); }); it('should throw on name too long', () => { const longName = 'a'.repeat(101); expect(() => League.create({ id: 'league1', name: longName, description: 'A test league', ownerId: 'owner1', })).toThrow('League name cannot exceed 100 characters'); }); it('should throw on invalid description', () => { expect(() => League.create({ id: 'league1', name: 'Test League', description: '', ownerId: 'owner1', })).toThrow('League description cannot be empty'); }); it('should throw on description too long', () => { const longDesc = 'a'.repeat(501); expect(() => League.create({ id: 'league1', name: 'Test League', description: longDesc, ownerId: 'owner1', })).toThrow('League description cannot exceed 500 characters'); }); it('should throw on invalid ownerId', () => { expect(() => League.create({ id: 'league1', name: 'Test League', description: 'A test league', ownerId: '', })).toThrow('League owner ID cannot be empty'); }); it('should create with social links', () => { const league = League.create({ id: 'league1', name: 'Test League', description: 'A test league', ownerId: 'owner1', socialLinks: { discordUrl: 'https://discord.gg/test', }, }); expect(league.socialLinks?.discordUrl).toBe('https://discord.gg/test'); }); it('should throw on invalid social links', () => { expect(() => League.create({ id: 'league1', name: 'Test League', description: 'A test league', ownerId: 'owner1', socialLinks: { discordUrl: 'invalid-url', }, })).toThrow('Invalid Discord URL'); }); it('should update league', () => { const league = League.create({ id: 'league1', name: 'Test League', description: 'A test league', ownerId: 'owner1', }); const updated = league.update({ name: 'Updated League', }); expect(updated.name.toString()).toBe('Updated League'); expect(updated.id).toBe(league.id); }); });