→ {overridenDestination.name}
- ) : destination ? (
+ ) : destination && overridenDestination !== null ? (
| {
).toBeFalsy();
});
- it("ignores -1 override (used to indicate no progression)", () => {
+ it("destinationBracketIdx = -1 eliminates the team", () => {
const tournament = new Tournament({
...SWIM_OR_SINK_167([
{
@@ -252,7 +252,7 @@ describe("Bracket progression override", () => {
11,
);
expect(tournament.brackets[2].participantTournamentTeamIds).toHaveLength(
- 11,
+ 10,
);
expect(tournament.brackets[3].participantTournamentTeamIds).toHaveLength(
11,
diff --git a/app/features/tournament-bracket/core/Tournament.ts b/app/features/tournament-bracket/core/Tournament.ts
index 5ca24db5b..51dfadda9 100644
--- a/app/features/tournament-bracket/core/Tournament.ts
+++ b/app/features/tournament-bracket/core/Tournament.ts
@@ -274,27 +274,31 @@ export class Tournament {
allRelevantMatchesFinished = false;
}
- const excludedOverridenTeams = sourcedTeams.filter(
+ // exclude teams that would be going to this bracket according
+ // to the bracket progression rules, but have been overridden
+ // by the TO to go somewhere else or get eliminated (in the case of destinationBracketIdx = -1)
+ const withOverriddenTeamsExcluded = sourcedTeams.filter(
(teamId) =>
!this.ctx.bracketProgressionOverrides.some(
(override) =>
override.sourceBracketIdx === source.bracketIdx &&
override.tournamentTeamId === teamId &&
- // "no progression" override
- override.destinationBracketIdx !== -1 &&
- // redundant override
override.destinationBracketIdx !== bracketIdx,
),
);
- teams.push(...excludedOverridenTeams);
+ teams.push(...withOverriddenTeamsExcluded);
}
const teamsFromOverride: { id: number; sourceBracketIdx: number }[] = [];
for (const source of sources) {
for (const override of this.ctx.bracketProgressionOverrides) {
- if (override.sourceBracketIdx !== source.bracketIdx) continue;
- if (override.destinationBracketIdx !== bracketIdx) continue;
+ if (
+ override.sourceBracketIdx !== source.bracketIdx ||
+ override.destinationBracketIdx !== bracketIdx
+ ) {
+ continue;
+ }
teamsFromOverride.push({
id: override.tournamentTeamId,
|