"""Tests for HRNZ scraper parsing."""

from bs4 import BeautifulSoup

from packages.hrnz_scraper.scraper import HRNZScraper


def _parse_row(html: str):
    soup = BeautifulSoup(html, "html.parser")
    cells = soup.find_all("td")
    return HRNZScraper()._parse_starter_row(cells, {})


def test_parse_starter_row_numeric_placing():
    starter = _parse_row(
        "<tr>"
        "<td>1=</td><td>1</td>"
        "<td><a href='horse/ABCDEF12-1234-5678-9ABC-DEF012345678'>Test Horse</a></td>"
        "<td>12A</td><td>10m</td><td></td><td></td>"
        "<td>2-30.1</td><td>1.5</td>"
        "</tr>"
    )
    assert starter["placing"] == 1
    assert starter["horse_name"] == "Test Horse"
    assert starter["barrier"] == 12
    assert starter["handicap_m"] == 10


def test_parse_starter_row_non_finisher():
    starter = _parse_row(
        "<tr>"
        "<td>SCR</td><td>1</td>"
        "<td>Scratched Horse</td>"
        "<td></td><td>fr</td><td></td><td></td>"
        "<td></td><td></td>"
        "</tr>"
    )
    assert starter["placing"] is None
    assert starter["did_not_finish"] is True
    assert starter["handicap_m"] == 0
