wip league admin tools
This commit is contained in:
38
core/racing/domain/value-objects/RaceName.test.ts
Normal file
38
core/racing/domain/value-objects/RaceName.test.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { RaceName } from './RaceName';
|
||||
|
||||
describe('RaceName', () => {
|
||||
it('creates a valid name and exposes stable value/toString', () => {
|
||||
const name = RaceName.fromString('Valid Race Name');
|
||||
expect(name.value).toBe('Valid Race Name');
|
||||
expect(name.toString()).toBe('Valid Race Name');
|
||||
});
|
||||
|
||||
it('trims leading/trailing whitespace', () => {
|
||||
const name = RaceName.fromString(' Valid Race Name ');
|
||||
expect(name.value).toBe('Valid Race Name');
|
||||
});
|
||||
|
||||
it('rejects empty/blank values', () => {
|
||||
expect(() => RaceName.fromString('')).toThrow('Race name cannot be empty');
|
||||
expect(() => RaceName.fromString(' ')).toThrow('Race name cannot be empty');
|
||||
});
|
||||
|
||||
it('rejects names shorter than 3 characters (after trim)', () => {
|
||||
expect(() => RaceName.fromString('ab')).toThrow('Race name must be at least 3 characters long');
|
||||
expect(() => RaceName.fromString(' ab ')).toThrow('Race name must be at least 3 characters long');
|
||||
});
|
||||
|
||||
it('rejects names longer than 100 characters (after trim)', () => {
|
||||
expect(() => RaceName.fromString('a'.repeat(101))).toThrow('Race name must not exceed 100 characters');
|
||||
expect(() => RaceName.fromString(` ${'a'.repeat(101)} `)).toThrow('Race name must not exceed 100 characters');
|
||||
});
|
||||
|
||||
it('equals compares by normalized value', () => {
|
||||
const a = RaceName.fromString(' Test Race ');
|
||||
const b = RaceName.fromString('Test Race');
|
||||
const c = RaceName.fromString('Different');
|
||||
expect(a.equals(b)).toBe(true);
|
||||
expect(a.equals(c)).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user