Add simplified Open Practice flow and reorganize
This commit is contained in:
@@ -3,10 +3,12 @@ import assert from "node:assert/strict";
|
||||
|
||||
import {
|
||||
applyBumpsForRace,
|
||||
buildOpenPracticeBundle,
|
||||
buildRaceFormatConfigFromForm,
|
||||
buildRaceSessionsFromWizard,
|
||||
generateFinalsForRace,
|
||||
generateQualifyingForRace,
|
||||
normalizeEvent,
|
||||
reseedUpcomingQualifying,
|
||||
} from "../src/event_race_logic.js";
|
||||
import {
|
||||
@@ -91,6 +93,46 @@ test("race format form normalizes limits and preserves participants and teams",
|
||||
assert.deepEqual(config.teams, [{ id: "team_1", name: "Red" }]);
|
||||
});
|
||||
|
||||
test("open practice bundle is untimed, unrestricted, and independent of race presets", () => {
|
||||
const uid = createUid();
|
||||
const bundle = buildOpenPracticeBundle(
|
||||
{ name: "Friday Practice", date: "2026-08-24" },
|
||||
{
|
||||
uid,
|
||||
normalizeEvent: (event) => ({ ...event, raceConfig: { presetId: "club_qualifying", driverIds: ["old"] } }),
|
||||
buildRaceSession: (eventId, name, type, durationMin, overrides) => ({ eventId, name, type, durationMin, ...overrides }),
|
||||
}
|
||||
);
|
||||
|
||||
assert.equal(bundle.event.name, "Friday Practice");
|
||||
assert.equal(bundle.event.classId, "");
|
||||
assert.equal(bundle.event.mode, "race");
|
||||
assert.equal(bundle.event.raceConfig.presetId, "custom");
|
||||
assert.equal(bundle.event.raceConfig.practiceOnly, true);
|
||||
assert.equal(bundle.event.raceConfig.participantsConfigured, false);
|
||||
assert.deepEqual(bundle.event.raceConfig.driverIds, []);
|
||||
assert.equal(bundle.session.eventId, bundle.event.id);
|
||||
assert.equal(bundle.session.type, "open_practice");
|
||||
assert.equal(bundle.session.startMode, "mass");
|
||||
assert.equal(bundle.session.followUpSec, 0);
|
||||
assert.deepEqual(bundle.session.driverIds, []);
|
||||
assert.equal(isUntimedSession(bundle.session), true);
|
||||
});
|
||||
|
||||
test("event normalization preserves the practice-only marker", () => {
|
||||
const event = normalizeEvent(
|
||||
{ id: "event_1", raceConfig: { practiceOnly: true } },
|
||||
{
|
||||
normalizeBrandingConfig: (branding) => branding || {},
|
||||
normalizeStartMode,
|
||||
normalizeRaceTeam: (team) => team,
|
||||
}
|
||||
);
|
||||
|
||||
assert.equal(event.raceConfig.practiceOnly, true);
|
||||
assert.equal(event.raceConfig.presetId, "custom");
|
||||
});
|
||||
|
||||
test("race wizard creates configured practice, qualifying, and endurance sessions", () => {
|
||||
const event = {
|
||||
id: "event_1",
|
||||
|
||||
Reference in New Issue
Block a user