From 1b4d0df7a73f2dbefb845b87fee8f2c58d5a4519 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Wed, 14 Feb 2024 23:52:17 +0200 Subject: [PATCH] Fix seeding not applied Closes #1665 --- app/features/tournament-bracket/core/Bracket.ts | 7 +++++++ app/features/tournament-bracket/core/Tournament.ts | 9 +++------ .../tournament-bracket/routes/to.$id.brackets.tsx | 13 ++++++------- e2e/tournament-bracket.spec.ts | 12 ++++++------ 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/app/features/tournament-bracket/core/Bracket.ts b/app/features/tournament-bracket/core/Bracket.ts index 868da6432..96e4617ee 100644 --- a/app/features/tournament-bracket/core/Bracket.ts +++ b/app/features/tournament-bracket/core/Bracket.ts @@ -25,6 +25,10 @@ interface CreateBracketArgs { bracketIdx: number; placements: number[]; }[]; + seeding?: { + id: number; + name: string; + }[]; } export interface Standing { @@ -52,6 +56,7 @@ export abstract class Bracket { tournament; sources; createdAt; + seeding; constructor({ id, @@ -63,6 +68,7 @@ export abstract class Bracket { tournament, sources, createdAt, + seeding, }: Omit) { this.id = id; this.preview = preview; @@ -73,6 +79,7 @@ export abstract class Bracket { this.tournament = tournament; this.sources = sources; this.createdAt = createdAt; + this.seeding = seeding; this.createdSimulation(); } diff --git a/app/features/tournament-bracket/core/Tournament.ts b/app/features/tournament-bracket/core/Tournament.ts index 7d7ccc1ce..66033ee74 100644 --- a/app/features/tournament-bracket/core/Tournament.ts +++ b/app/features/tournament-bracket/core/Tournament.ts @@ -144,18 +144,14 @@ export class Tournament { }); if (checkedInTeams.length >= TOURNAMENT.ENOUGH_TEAMS_TO_START) { - const seeding = checkedInTeams.map((team) => ({ - name: team.name, - id: team.id, - })); manager.create({ tournamentId: this.ctx.id, name, type, seeding: type === "round_robin" - ? seeding - : fillWithNullTillPowerOfTwo(seeding), + ? checkedInTeams + : fillWithNullTillPowerOfTwo(checkedInTeams), settings: this.bracketSettings(type, checkedInTeams.length), }); } @@ -164,6 +160,7 @@ export class Tournament { Bracket.create({ id: -1 * bracketIdx, tournament: this, + seeding: checkedInTeams, preview: true, name, data: manager.get.tournamentData(this.ctx.id), diff --git a/app/features/tournament-bracket/routes/to.$id.brackets.tsx b/app/features/tournament-bracket/routes/to.$id.brackets.tsx index 562ef93da..eb2d85204 100644 --- a/app/features/tournament-bracket/routes/to.$id.brackets.tsx +++ b/app/features/tournament-bracket/routes/to.$id.brackets.tsx @@ -90,22 +90,21 @@ export const action: ActionFunction = async ({ params, request }) => { const bracket = tournament.bracketByIdx(data.bracketIdx); invariant(bracket, "Bracket not found"); + const seeding = bracket.seeding; + invariant(seeding, "Seeding not found"); + validate(bracket.canBeStarted, "Bracket is not ready to be started"); sql.transaction(() => { - const participants = bracket.data.participant.map((p) => p.name); const stage = manager.create({ tournamentId, name: bracket.name, type: bracket.type, seeding: bracket.type === "round_robin" - ? participants - : fillWithNullTillPowerOfTwo(participants), - settings: tournament.bracketSettings( - bracket.type, - participants.length, - ), + ? seeding + : fillWithNullTillPowerOfTwo(seeding), + settings: tournament.bracketSettings(bracket.type, seeding.length), }); const matches = findAllMatchesByStageId(stage.id); diff --git a/e2e/tournament-bracket.spec.ts b/e2e/tournament-bracket.spec.ts index ec9376cce..080b41196 100644 --- a/e2e/tournament-bracket.spec.ts +++ b/e2e/tournament-bracket.spec.ts @@ -126,8 +126,8 @@ test.describe("Tournament bracket", () => { }); // 1) - await page.locator('[data-match-id="5"]').click(); - await reportResult({ page, amountOfMapsToReport: tournamentId }); + await navigateToMatch(page, 6); + await reportResult({ page, amountOfMapsToReport: 2 }); await backToBracket(page); // 2) @@ -136,7 +136,7 @@ test.describe("Tournament bracket", () => { page, url: tournamentBracketsPage({ tournamentId }), }); - await navigateToMatch(page, 6); + await navigateToMatch(page, 5); await reportResult({ page, amountOfMapsToReport: 2 }); await backToBracket(page); @@ -150,7 +150,7 @@ test.describe("Tournament bracket", () => { await backToBracket(page); // 4) - await navigateToMatch(page, 5); + await navigateToMatch(page, 6); await isNotVisible(page.getByTestId("reopen-match-button")); await backToBracket(page); @@ -161,7 +161,7 @@ test.describe("Tournament bracket", () => { await backToBracket(page); // 6) - await navigateToMatch(page, 5); + await navigateToMatch(page, 6); await page.getByTestId("reopen-match-button").click(); await expectScore(page, [1, 0]); @@ -171,7 +171,7 @@ test.describe("Tournament bracket", () => { page, url: tournamentBracketsPage({ tournamentId }), }); - await navigateToMatch(page, 5); + await navigateToMatch(page, 6); await page.getByTestId("undo-score-button").click(); await expectScore(page, [0, 0]); await reportResult({