31 lines
932 B
Python
31 lines
932 B
Python
from io import BytesIO
|
|
|
|
import pytest
|
|
from openpyxl import load_workbook
|
|
|
|
from finance.exporting import build_formula_workbook
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
|
|
def test_reconcile_status_guards_non_numeric_difference(workspace):
|
|
ds, member, *_ = workspace
|
|
ds.periods = ["2025-08"]
|
|
ds.save(update_fields=["periods"])
|
|
output = BytesIO()
|
|
build_formula_workbook(
|
|
ds,
|
|
member,
|
|
{"start": "2026-08", "end": "2026-08", "comparison": "yoy", "group": "department"},
|
|
output,
|
|
)
|
|
workbook = load_workbook(BytesIO(output.getvalue()), data_only=False)
|
|
formulas = [
|
|
row[6].value
|
|
for row in workbook["对账检查"].iter_rows(min_row=2)
|
|
if isinstance(row[6].value, str) and row[6].value.startswith("=IF(D")
|
|
]
|
|
assert formulas
|
|
assert all("ISNUMBER(F" in formula for formula in formulas)
|
|
assert all('"通过"' in formula for formula in formulas)
|