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