flaschengeist/tests/conftest.py

48 lines
1.2 KiB
Python

import os
import tempfile
import pytest
from flaschengeist import database
from flaschengeist.app import create_app
# read in SQL for populating test data
with open(os.path.join(os.path.dirname(__file__), "data.sql"), "r") as f:
_data_sql = []
__sql_command = ""
for line in f.readlines():
if not line.startswith("--"):
line = line.strip("\n")
__sql_command += line.strip("\n")
if __sql_command.endswith(";"):
_data_sql.append(__sql_command)
__sql_command = ""
@pytest.fixture
def app():
db_fd, db_path = tempfile.mkstemp()
app = create_app(
{
"TESTING": True,
"DATABASE": {"engine": "sqlite", "database": f"/{db_path}"},
"LOGGING": {"level": "DEBUG"},
}
)
with app.app_context():
database.db.create_all()
database.db.session.commit()
engine = database.db.engine
with engine.connect() as connection:
for statement in _data_sql:
connection.execute(statement)
yield app
os.close(db_fd)
# os.unlink(db_path)
print(db_path)
@pytest.fixture
def client(app):
return app.test_client()