refactor
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { ChampionshipStanding } from './ChampionshipStanding';
|
||||
import type { ParticipantRef } from '../../types/ParticipantRef';
|
||||
|
||||
describe('ChampionshipStanding', () => {
|
||||
const participant: ParticipantRef = { type: 'driver', id: 'driver1' };
|
||||
|
||||
it('should create a championship standing', () => {
|
||||
const standing = ChampionshipStanding.create({
|
||||
seasonId: 'season1',
|
||||
championshipId: 'champ1',
|
||||
participant,
|
||||
totalPoints: 100,
|
||||
resultsCounted: 5,
|
||||
resultsDropped: 1,
|
||||
position: 1,
|
||||
});
|
||||
|
||||
expect(standing.id).toBe('season1-champ1-driver1');
|
||||
expect(standing.seasonId).toBe('season1');
|
||||
expect(standing.championshipId).toBe('champ1');
|
||||
expect(standing.participant).toBe(participant);
|
||||
expect(standing.totalPoints.toNumber()).toBe(100);
|
||||
expect(standing.resultsCounted.toNumber()).toBe(5);
|
||||
expect(standing.resultsDropped.toNumber()).toBe(1);
|
||||
expect(standing.position.toNumber()).toBe(1);
|
||||
});
|
||||
|
||||
it('should update position', () => {
|
||||
const standing = ChampionshipStanding.create({
|
||||
seasonId: 'season1',
|
||||
championshipId: 'champ1',
|
||||
participant,
|
||||
totalPoints: 100,
|
||||
resultsCounted: 5,
|
||||
resultsDropped: 1,
|
||||
position: 1,
|
||||
});
|
||||
|
||||
const updated = standing.withPosition(2);
|
||||
expect(updated.position.toNumber()).toBe(2);
|
||||
expect(updated.id).toBe('season1-champ1-driver1');
|
||||
expect(updated.totalPoints.toNumber()).toBe(100);
|
||||
});
|
||||
|
||||
it('should throw on invalid seasonId', () => {
|
||||
expect(() => ChampionshipStanding.create({
|
||||
seasonId: '',
|
||||
championshipId: 'champ1',
|
||||
participant,
|
||||
totalPoints: 100,
|
||||
resultsCounted: 5,
|
||||
resultsDropped: 1,
|
||||
position: 1,
|
||||
})).toThrow('Season ID is required');
|
||||
});
|
||||
|
||||
it('should throw on invalid championshipId', () => {
|
||||
expect(() => ChampionshipStanding.create({
|
||||
seasonId: 'season1',
|
||||
championshipId: '',
|
||||
participant,
|
||||
totalPoints: 100,
|
||||
resultsCounted: 5,
|
||||
resultsDropped: 1,
|
||||
position: 1,
|
||||
})).toThrow('Championship ID is required');
|
||||
});
|
||||
|
||||
it('should throw on invalid participant', () => {
|
||||
expect(() => ChampionshipStanding.create({
|
||||
seasonId: 'season1',
|
||||
championshipId: 'champ1',
|
||||
participant: { type: 'driver', id: '' },
|
||||
totalPoints: 100,
|
||||
resultsCounted: 5,
|
||||
resultsDropped: 1,
|
||||
position: 1,
|
||||
})).toThrow('Participant is required');
|
||||
});
|
||||
|
||||
it('should throw on negative points', () => {
|
||||
expect(() => ChampionshipStanding.create({
|
||||
seasonId: 'season1',
|
||||
championshipId: 'champ1',
|
||||
participant,
|
||||
totalPoints: -1,
|
||||
resultsCounted: 5,
|
||||
resultsDropped: 1,
|
||||
position: 1,
|
||||
})).toThrow('Points cannot be negative');
|
||||
});
|
||||
|
||||
it('should throw on invalid position', () => {
|
||||
expect(() => ChampionshipStanding.create({
|
||||
seasonId: 'season1',
|
||||
championshipId: 'champ1',
|
||||
participant,
|
||||
totalPoints: 100,
|
||||
resultsCounted: 5,
|
||||
resultsDropped: 1,
|
||||
position: 0,
|
||||
})).toThrow('Position must be a positive integer');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user