"""Tests du parsing des montants français.""" import pytest from plesna_gerance.utils.amounts import extract_amounts_from_line, parse_amount @pytest.mark.parametrize( "text,expected", [ ("123,45", 123.45), ("123.45", 123.45), ("1 234,56", 1234.56), ("1.234,56", 1234.56), ("1 234,56", 1234.56), ("123,45 €", 123.45), ("", 0.0), ("abc", 0.0), ("-45,67", -45.67), ], ) def test_parse_amount(text, expected): assert parse_amount(text) == pytest.approx(expected) def test_extract_amounts_ignores_dates(): # 01.01.25 est une date, pas un montant line = "Loyer du 01.01.25 au 31.01.25 : 500,00 réglé 500,00" amounts = extract_amounts_from_line(line) assert amounts == [500.00, 500.00] def test_extract_amounts_negative_and_thousands(): line = "Solde -1 234,56 et frais 12,00" assert extract_amounts_from_line(line) == [-1234.56, 12.00] def test_extract_amounts_none_found(): assert extract_amounts_from_line("aucun montant ici") == []