| from pathlib import Path |
|
|
| import pytest |
| from openpyxl import load_workbook |
|
|
| from finreport_agent.pipeline import convert_report |
|
|
|
|
| SAMPLE_PDF = ( |
| Path(__file__).resolve().parents[2] / "TI2_2025.06 (1).pdf" |
| ) |
|
|
|
|
| @pytest.mark.skipif(not SAMPLE_PDF.exists(), reason="Local golden PDF is unavailable") |
| def test_generated_workbook_has_audit_structure(tmp_path): |
| output = tmp_path / "golden.xlsx" |
| result = convert_report(SAMPLE_PDF, output) |
|
|
| assert result.output_path == str(output.resolve()) |
| assert output.exists() |
|
|
| formulas = load_workbook(output, data_only=False) |
| values = load_workbook(output, data_only=True) |
| assert formulas.sheetnames == [ |
| "Özet", |
| "Hisse Senetleri", |
| "T. Repo", |
| "Türev", |
| "Kontroller", |
| "Kaynak İzleri", |
| ] |
| assert formulas["Özet"]["E9"].value == "=D9-C9" |
| assert values["Özet"]["E9"].value == 0 |
| assert values["Hisse Senetleri"].max_row == 74 |
| assert values["Kontroller"]["B8"].value == "EQUITY_NOMINAL_ROUNDING" |
|
|
| klypv_rows = [ |
| row |
| for row in values["Hisse Senetleri"].iter_rows(min_row=5, values_only=True) |
| if row[0] == "KLYPV" |
| ] |
| assert len(klypv_rows) == 1 |
| assert klypv_rows[0][7] is None |
| assert klypv_rows[0][8] == 64.2 |
|
|