EmperorFred/tests/conftest.py

37 lines
1.3 KiB
Python
Raw Normal View History

2025-12-06 02:21:47 +00:00
import os
import sys
import pathlib
import pytest
# Ensure project root is on sys.path immediately at import time so tests can import
# top-level packages like `libs`, `discord_bot`, `twitch_bot`, and `data`.
PROJECT_ROOT = pathlib.Path(__file__).resolve().parents[1]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
@pytest.fixture(autouse=True)
def env_tmp_db(tmp_path, monkeypatch):
"""Provide a file-based SQLite DB for tests and dummy tokens/IDs.
Using a file DB ensures multiple instances (e.g., multiple bot objects)
see the same database during a single test.
"""
db_file = tmp_path / "test.db"
conn = f"sqlite:///{db_file}"
monkeypatch.setenv("DB_CONN_STR", conn)
# Discord defaults
monkeypatch.setenv("DISCORD_COMMAND_PREFIX", "!")
# Twitch required values for constructor; tokens are not used by tests
monkeypatch.setenv("TWITCH_CLIENT_ID", "test-client-id")
monkeypatch.setenv("TWITCH_CLIENT_SECRET", "test-client-secret")
monkeypatch.setenv("TWITCH_TOKEN", "test-token")
monkeypatch.setenv("TWITCH_CHANNEL", "somechannel")
monkeypatch.setenv("TWITCH_BOT_ID", "1234567")
monkeypatch.setenv("TWITCH_OWNER_ID", "7654321")
monkeypatch.setenv("TWITCH_COMMAND_PREFIX", "!")
return conn