teecup/tests/test_tournament_participant_hcp.py

71 lines
2.8 KiB
Python
Raw Normal View History

"""
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), 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