feat: add useBalancedRanking flag to round config schema

Defaults to true so existing rounds preserve current behavior; toggled
per-round from the ranking dashboard side panel.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matt
2026-04-27 13:19:15 +02:00
parent 6f3e8885e0
commit 0680a5d601
2 changed files with 42 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
import { afterAll, beforeAll, describe, expect, it } from 'vitest'
import { prisma, createCaller } from '../setup'
import {
createTestUser, createTestProgram, createTestCompetition, createTestRound,
cleanupTestData, uid,
} from '../helpers'
import { roundRouter } from '../../src/server/routers/round'
describe('Round.configJson.useBalancedRanking', () => {
let programId: string
let admin: { id: string; email: string; role: 'SUPER_ADMIN' }
const userIds: string[] = []
beforeAll(async () => {
const program = await createTestProgram({ name: `bal-toggle-${uid()}` })
programId = program.id
const adminUser = await createTestUser('SUPER_ADMIN')
userIds.push(adminUser.id)
admin = { id: adminUser.id, email: adminUser.email, role: 'SUPER_ADMIN' }
})
afterAll(async () => {
await cleanupTestData(programId, userIds)
})
it('persists useBalancedRanking via round.update', async () => {
const competition = await createTestCompetition(programId)
const round = await createTestRound(competition.id)
const caller = createCaller(roundRouter, admin)
await caller.update({
id: round.id,
configJson: { useBalancedRanking: false },
})
const reloaded = await prisma.round.findUniqueOrThrow({ where: { id: round.id } })
expect((reloaded.configJson as Record<string, unknown>).useBalancedRanking).toBe(false)
})
})