import os import pytest # Ensure tests always use the in-memory SQLite DB, even if CI sets DB_* secrets for var in ("DB_USER", "DB_PASS", "DB_NAME"): os.environ.pop(var, None) from app import app from models import db, Feature @pytest.fixture def client(): app.config["TESTING"] = True # app was already initialised with SQLite because DB_USER is now unset # Fresh DB per test with app.app_context(): db.drop_all() db.create_all() with app.test_client() as client: yield client # Clean up after test with app.app_context(): db.drop_all() def test_index(client): response = client.get("/") assert response.status_code == 200 assert b"Professional Demo Site" in response.data def test_seed_db(client): with app.app_context(): Feature.seed_db() assert Feature.query.count() == 3