Files
mousehold/tests/conftest.py
2026-06-28 13:48:15 +02:00

58 lines
1.9 KiB
Python

from __future__ import annotations
import pytest
from mousehold_api import models
from mousehold_api.db import Base
from mousehold_domain import AccountType, VisibilityMode
from sqlalchemy import create_engine
from sqlalchemy.orm import Session, sessionmaker
@pytest.fixture
def session() -> Session:
engine = create_engine("sqlite:///:memory:", connect_args={"check_same_thread": False})
Base.metadata.create_all(engine)
SessionLocal = sessionmaker(
bind=engine, autoflush=False, autocommit=False, expire_on_commit=False
)
with SessionLocal() as test_session:
yield test_session
@pytest.fixture
def household_setup(session: Session) -> dict[str, str]:
household = models.Household(name="Test household", default_currency="EUR")
session.add(household)
session.flush()
user_a = models.User(household_id=household.id, display_name="A", email="a@example.test")
user_b = models.User(household_id=household.id, display_name="B", email="b@example.test")
session.add_all([user_a, user_b])
session.flush()
account_a = models.Account(
household_id=household.id,
owner_user_id=user_a.id,
name="A checking",
account_type=AccountType.CHECKING,
institution_name="Demo Bank",
currency="EUR",
visibility_mode=VisibilityMode.SHARED_FULL,
)
shared_account = models.Account(
household_id=household.id,
owner_user_id=None,
name="Shared wallet",
account_type=AccountType.SHARED_CHECKING,
institution_name="Demo Bank",
currency="EUR",
visibility_mode=VisibilityMode.SHARED_FULL,
)
session.add_all([account_a, shared_account])
session.commit()
return {
"household_id": household.id,
"user_a_id": user_a.id,
"user_b_id": user_b.id,
"account_a_id": account_a.id,
"shared_account_id": shared_account.id,
}