game / tests /test_db.py
chrimons
Build Gradio CLIP scoring app
3c8c1fc
import db
def test_db_roundtrip(tmp_path):
database_path = tmp_path / "test.db"
database_url = f"sqlite+pysqlite:///{database_path}"
db.configure_database(database_url)
db.init_db()
with db.session_scope() as session:
user = db.ensure_user(session, "TestUser")
db.create_score(
session,
user=user,
image_id="image_1",
score_value=777,
similarity=0.42,
text="Ein Testeintrag",
)
user_id = user.id
with db.session_scope() as session:
same_user = db.ensure_user(session, "testuser")
assert same_user.id == user_id
global_scores = db.get_global_top(session)
assert len(global_scores) == 1
assert global_scores[0].score == 777
image_scores = db.get_image_top(session, "image_1")
assert len(image_scores) == 1
user_scores = db.get_user_recent(session, db.normalize_username("TESTUSER"))
assert len(user_scores) == 1
rows = db.scores_to_rows(global_scores)
assert rows[0][0] == 1 # Rang
assert rows[0][1] == "TestUser"
assert rows[0][2] == "image_1"
assert rows[0][3] == 777
assert rows[0][4] == round(0.42, 4)
assert "Ein Testeintrag" in rows[0][5]