37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
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
|