'playoff' som ny tiebreak_winner_method-verdi -- rangeres som 'none' (appen kan ikke avgjøre et omspill selv), men regelen vises proaktivt i Oppsett og som banner på leaderboardet. HCP: la til handicap_index_ snapshot i TournamentParticipantUpdate + inline redigering i Deltakere-lista, uten å røre allerede frosne runde-verdier. Migrasjon 086 lagt til, men IKKE anvendt mot ekte teecup_db ennå.
70 lines
2.8 KiB
Python
70 lines
2.8 KiB
Python
"""
|
|
Retting av en spillers handicap-indeks DIREKTE i en turnering
|
|
(2026-08-18). Bruker: "Hvordan ... justerer hcp på spillere?" -- å
|
|
redigere spilleren i org-spillerpoolen (ADR-085) rører aldri en
|
|
allerede satt `tournament_participant.handicap_index_snapshot` (samme
|
|
"frosset snapshot"-filosofi som lagturneringers team_roster), så det
|
|
manglet en direkte vei til å rette EN SPESIFIKK deltakers indeks i
|
|
turneringen den faktisk gjelder for.
|
|
"""
|
|
|
|
from app.routers.individual_tournaments import (
|
|
TournamentParticipantUpdate,
|
|
update_tournament_participant,
|
|
)
|
|
|
|
from tests.conftest import (
|
|
create_org,
|
|
create_course,
|
|
create_player,
|
|
create_tee,
|
|
create_tournament,
|
|
create_tournament_participant,
|
|
create_tournament_round,
|
|
create_tournament_round_participant,
|
|
)
|
|
|
|
import app.db as app_db
|
|
|
|
|
|
async def test_update_handicap_snapshot(pool):
|
|
org_id = await create_org()
|
|
tournament_id = await create_tournament(org_id)
|
|
player_id = await create_player(org_id, display_name="Spiller")
|
|
tp_id = await create_tournament_participant(org_id, tournament_id, player_id)
|
|
|
|
async with app_db.org_connection(org_id) as conn:
|
|
await conn.execute(
|
|
"UPDATE tournament_participant SET handicap_index_snapshot = 24.0 WHERE id = $1", tp_id
|
|
)
|
|
|
|
updated = await update_tournament_participant(
|
|
tournament_id, tp_id, TournamentParticipantUpdate(handicap_index_snapshot=11.5), organization_id=org_id
|
|
)
|
|
assert updated.handicap_index_snapshot == 11.5
|
|
|
|
|
|
async def test_updating_snapshot_does_not_retroactively_change_already_frozen_round_handicap(pool):
|
|
"""Samme "frosset snapshot"-prinsipp som PlayerUpdate allerede
|
|
dokumenterer for team_roster -- en rettelse i tournament_participant
|
|
skal ALDRI skrive over et allerede satt tournament_round_participant.
|
|
course_handicap/playing_handicap for en runde deltakeren allerede er
|
|
satt opp i."""
|
|
org_id = await create_org()
|
|
tournament_id = await create_tournament(org_id)
|
|
course_id = await create_course(org_id)
|
|
tee_id = await create_tee(org_id, course_id)
|
|
round_id = await create_tournament_round(org_id, tournament_id, course_id)
|
|
player_id = await create_player(org_id, display_name="Spiller")
|
|
tp_id = await create_tournament_participant(org_id, tournament_id, player_id)
|
|
rp_id = await create_tournament_round_participant(org_id, round_id, tp_id, tee_id, course_handicap=10)
|
|
|
|
await update_tournament_participant(
|
|
tournament_id, tp_id, TournamentParticipantUpdate(handicap_index_snapshot=2.0), organization_id=org_id
|
|
)
|
|
|
|
async with app_db.org_connection(org_id) as conn:
|
|
frozen = await conn.fetchval(
|
|
"SELECT course_handicap FROM tournament_round_participant WHERE id = $1", rp_id
|
|
)
|
|
assert frozen == 10 # uendret, ikke omregnet fra den nye indeksen
|