64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
"""
|
|
Demo test fixtures.
|
|
|
|
Provides a live DB connector and helpers for the demo test suite.
|
|
All tests assume the gateway is configured and the DB is reachable.
|
|
"""
|
|
|
|
import pytest
|
|
from modules.security.rootAccess import getRootDbAppConnector
|
|
from modules.datamodels.datamodelUam import Mandate, UserInDB
|
|
from modules.datamodels.datamodelFeatures import FeatureInstance
|
|
from modules.datamodels.datamodelMembership import UserMandate
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def db():
|
|
"""Root DB connector (session-scoped, reused across all tests)."""
|
|
return getRootDbAppConnector()
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def demoConfig():
|
|
"""The investor demo config instance."""
|
|
from modules.demoConfigs import getDemoConfigByCode
|
|
cfg = getDemoConfigByCode("investor-demo-2026")
|
|
assert cfg is not None, "Demo config 'investor-demo-2026' not found — check modules/demoConfigs/"
|
|
return cfg
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Mandate helpers — function-scoped so they always reflect current DB state
|
|
# (test_removeAndReload recreates mandates with new IDs mid-session)
|
|
# ---------------------------------------------------------------------------
|
|
|
|
@pytest.fixture
|
|
def mandateHappylife(db):
|
|
"""HappyLife AG mandate (must exist after bootstrap load)."""
|
|
records = db.getRecordset(Mandate, recordFilter={"name": "happylife"})
|
|
assert records, "Mandate 'happylife' not found — run demo config load first"
|
|
return records[0]
|
|
|
|
|
|
@pytest.fixture
|
|
def mandateAlpina(db):
|
|
"""Alpina Treuhand AG mandate (must exist after bootstrap load)."""
|
|
records = db.getRecordset(Mandate, recordFilter={"name": "alpina-treuhand"})
|
|
assert records, "Mandate 'alpina-treuhand' not found — run demo config load first"
|
|
return records[0]
|
|
|
|
|
|
@pytest.fixture
|
|
def demoUser(db):
|
|
"""Patrick Helvetia user (must exist after bootstrap load)."""
|
|
records = db.getRecordset(UserInDB, recordFilter={"username": "patrick.helvetia"})
|
|
assert records, "User 'patrick.helvetia' not found — run demo config load first"
|
|
return records[0]
|
|
|
|
|
|
def _getFeatureInstances(db, mandateId: str, featureCode: str):
|
|
"""Helper: get feature instances for a mandate + code."""
|
|
return db.getRecordset(FeatureInstance, recordFilter={
|
|
"mandateId": mandateId,
|
|
"featureCode": featureCode,
|
|
})
|