first ruggedy draft
This commit is contained in:
57
tests/conftest.py
Normal file
57
tests/conftest.py
Normal file
@@ -0,0 +1,57 @@
|
||||
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,
|
||||
}
|
||||
Reference in New Issue
Block a user