BakoAI / tests /test_stats_extraction.py
Okidi Norbert
Deployment fix: clean backend only
c6abe34
import unittest
from app.services.stats_utils import parse_xy_field, validate_and_compute_totals
from app.models.stats import PlayerStatRow, TeamTotals
class TestStatsUtils(unittest.TestCase):
def test_parse_xy_field_valid(self):
self.assertEqual(parse_xy_field("5-10"), (5, 10))
self.assertEqual(parse_xy_field("5/10"), (5, 10))
self.assertEqual(parse_xy_field("0-0"), (0, 0))
self.assertEqual(parse_xy_field(" 12 - 20 "), (12, 20))
def test_parse_xy_field_invalid(self):
self.assertEqual(parse_xy_field("invalid"), (0, 0))
self.assertEqual(parse_xy_field(None), (0, 0))
self.assertEqual(parse_xy_field("5"), (0, 0))
def test_validate_and_compute_totals_no_existing(self):
players = [
PlayerStatRow(name_raw="P1", pts=10, reb=5, ast=2),
PlayerStatRow(name_raw="P2", pts=15, reb=10, ast=5)
]
# Test computing missing totals
totals = validate_and_compute_totals(players)
self.assertEqual(totals.pts, 25)
self.assertEqual(totals.reb, 15)
self.assertEqual(totals.ast, 7)
def test_validate_and_compute_totals_with_existing(self):
players = [
PlayerStatRow(name_raw="P1", pts=10, reb=5, ast=2),
PlayerStatRow(name_raw="P2", pts=15, reb=10, ast=5)
]
existing = TeamTotals(pts=25, reb=15, ast=7)
# Test passing existing totals
totals = validate_and_compute_totals(players, existing)
self.assertEqual(totals.pts, 25)
def test_rebounds_auto_compute(self):
# reb = 0 but off and def exist
players = [
PlayerStatRow(name_raw="P1", off=2, def_reb=3, reb=0)
]
totals = validate_and_compute_totals(players)
self.assertEqual(players[0].reb, 5)
self.assertEqual(totals.reb, 5)
if __name__ == "__main__":
unittest.main()