From 21099909c9d532e2d1cfd068f32268a3dc22bd07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Murta?= Date: Wed, 10 May 2023 22:27:40 +0100 Subject: [PATCH] Allow Nordigen parameter in Bank constructor and remove Nordigen FK to Bank from Nordigen constructor. It is auto generated upon DB insertion. --- pfbudget/db/model.py | 4 ++-- tests/mocks/banks.py | 8 ++++++-- tests/test_database.py | 10 ++++++++-- tests/test_psd2.py | 3 +-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/pfbudget/db/model.py b/pfbudget/db/model.py index 3249205..aa1c9fa 100644 --- a/pfbudget/db/model.py +++ b/pfbudget/db/model.py @@ -63,7 +63,7 @@ class Bank(Base, Export): BIC: Mapped[str] = mapped_column(String(8)) type: Mapped[AccountType] - nordigen: Mapped[Optional[Nordigen]] = relationship(init=False, lazy="joined") + nordigen: Mapped[Optional[Nordigen]] = relationship(default=None, lazy="joined") @property def format(self) -> dict[str, Any]: @@ -241,7 +241,7 @@ class Note(Base): class Nordigen(Base, Export): __tablename__ = "banks_nordigen" - name: Mapped[bankfk] = mapped_column(primary_key=True) + name: Mapped[bankfk] = mapped_column(primary_key=True, init=False) bank_id: Mapped[Optional[str]] requisition_id: Mapped[Optional[str]] invert: Mapped[Optional[bool]] = mapped_column(default=None) diff --git a/tests/mocks/banks.py b/tests/mocks/banks.py index e08d3bc..e1f4c1d 100644 --- a/tests/mocks/banks.py +++ b/tests/mocks/banks.py @@ -1,4 +1,8 @@ -from pfbudget.db.model import AccountType, Bank +from pfbudget.db.model import AccountType, Bank, Nordigen -checking = Bank("bank", "BANK", AccountType.checking) +checking = Bank( + "bank", "BANK", AccountType.checking, Nordigen("bank_id", "requisition_id") +) + +cc = Bank("cc", "CC", AccountType.MASTERCARD) diff --git a/tests/test_database.py b/tests/test_database.py index c33b219..d1187a0 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -25,11 +25,15 @@ def client() -> Client: @pytest.fixture def banks(client: Client) -> list[Bank]: banks = [ - Bank("bank", "BANK", AccountType.checking), + Bank("bank", "BANK", AccountType.checking, Nordigen(None, "req", None)), Bank("broker", "BROKER", AccountType.investment), Bank("creditcard", "CC", AccountType.MASTERCARD), ] - banks[0].nordigen = Nordigen("bank", None, "req", None) + + # fix nordigen bank names which would be generated post DB insert + for bank in banks: + if bank.nordigen: + bank.nordigen.name = bank.name client.insert(banks) return banks @@ -48,6 +52,8 @@ def transactions(client: Client) -> list[Transaction]: ] client.insert(transactions) + + # fix ids which would be generated post DB insert for i, transaction in enumerate(transactions): transaction.id = i + 1 if transaction.category: diff --git a/tests/test_psd2.py b/tests/test_psd2.py index a262cdd..8a3e3c0 100644 --- a/tests/test_psd2.py +++ b/tests/test_psd2.py @@ -64,8 +64,7 @@ def extractor() -> Extractor: @pytest.fixture def bank() -> Bank: - bank = Bank("Bank#1", "", AccountType.checking) - bank.nordigen = Nordigen("", "", mock.id, False) + bank = Bank("Bank#1", "", AccountType.checking, Nordigen("", mock.id, False)) return bank