Files
finanz-cockpit/tests/test_model_b4wexport.py
T

53 lines
1.6 KiB
Python

import re
import pytest
from pydantic import ValidationError
from src.models import B4wExport, Category
from tests.factories import B4wExportFactory
def test_b4w_export_simple():
data = B4wExportFactory.build()
assert isinstance(data, B4wExport)
def test_b4w_export_category():
data = B4wExportFactory.build(Category="fun:stuff")
assert isinstance(data.category, Category)
assert data.category.to_str() == "fun:stuff"
def test_b4w_export_account_iban_invalid():
with pytest.raises(ValidationError):
_ = B4wExportFactory.build(OwnrAcctIBAN="not an IBAN")
def test_b4w_export_account_iban_to_long():
with pytest.raises(ValidationError):
_ = B4wExportFactory.build(OwnrAcctIBAN="DE990123456789012345678901234567890")
def test_b4w_export_account_iban_to_short():
with pytest.raises(ValidationError):
_ = B4wExportFactory.build(OwnrAcctIBAN="DE123")
def test_b4w_export_parameters_to_str():
data = B4wExportFactory.build()
params = data.parameters_to_str()
components = [s.strip() for s in re.split(r",\s*(?=\w+=)", params)]
param_names = [component.split("=")[0].strip() for component in components]
param_values = [component.split("=")[1].strip() for component in components]
assert "OwnrAcctCcy" in param_names
assert all(s.startswith("'") and s.endswith("'") for s in param_values)
def test_b4w_export_repr_round_trip():
data_batch = B4wExportFactory.batch(size=10)
assert isinstance(data_batch, list)
for data in data_batch:
data_str = str(data)
data2 = eval(data_str)
assert data == data2