mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-16 01:35:36 -04:00
34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
"""Shared database stub helpers for CLI and unit tests."""
|
|
import sys
|
|
import types
|
|
from unittest.mock import MagicMock
|
|
|
|
|
|
def make_core_db_stub(
|
|
monkeypatch,
|
|
models=(),
|
|
*,
|
|
attributes=None,
|
|
install_core_package=False,
|
|
):
|
|
"""Create a core.database stub and inject it via monkeypatch.
|
|
|
|
Always sets SessionLocal. Pass model class names via `models` to set
|
|
each as a MagicMock attribute on the stub. Pass `attributes` to override
|
|
specific values, and `install_core_package` when the import also needs a
|
|
stub parent package.
|
|
|
|
Returns the stub module for optional further configuration.
|
|
"""
|
|
if install_core_package:
|
|
monkeypatch.setitem(sys.modules, "core", types.ModuleType("core"))
|
|
|
|
db = types.ModuleType("core.database")
|
|
db.SessionLocal = MagicMock()
|
|
for name in models:
|
|
setattr(db, name, MagicMock())
|
|
for name, value in (attributes or {}).items():
|
|
setattr(db, name, value)
|
|
monkeypatch.setitem(sys.modules, "core.database", db)
|
|
return db
|