From aecd10115e9433639af7091537beb4c0b42c44e3 Mon Sep 17 00:00:00 2001 From: bronsen Date: Sun, 22 Feb 2026 18:58:05 +0100 Subject: [PATCH] tests: ensure helper function actually updates database schema --- src/teilchensammler_cli/database.py | 2 +- src/teilchensammler_cli/main.py | 2 +- tests.py | 18 ++++++++++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/teilchensammler_cli/database.py b/src/teilchensammler_cli/database.py index b58456b..2d9f888 100644 --- a/src/teilchensammler_cli/database.py +++ b/src/teilchensammler_cli/database.py @@ -6,5 +6,5 @@ sqlite_url = os.environ.get("DATABASE_URL", "sqlite:///database.db") engine = create_engine(sqlite_url, echo=False) -def create_db_and_tables(): +def create_db_and_tables(engine): SQLModel.metadata.create_all(engine) diff --git a/src/teilchensammler_cli/main.py b/src/teilchensammler_cli/main.py index 04c218d..9787807 100644 --- a/src/teilchensammler_cli/main.py +++ b/src/teilchensammler_cli/main.py @@ -26,7 +26,7 @@ TEILCHEN_DATA_HEADER = "pk Name Description Number Tags".split() class SammlerApp(App): async def on_mount(self) -> None: - create_db_and_tables() + create_db_and_tables(engine) self.push_screen(AddInventoryScreen()) diff --git a/tests.py b/tests.py index 0bb0a73..2e11fcb 100644 --- a/tests.py +++ b/tests.py @@ -1,16 +1,18 @@ +from teilchensammler_cli.database import create_db_and_tables +from sqlalchemy.sql import text import uuid from typing import Generator, Sequence import pytest from sqlalchemy import Engine -from sqlmodel import Session +from sqlmodel import Session, SQLModel, create_engine from teilchensammler_cli.models import ( Teilchen, TeilchenCreate, + add_to_database, load_initial_data, make_teilchen_input, - add_to_database, ) @@ -174,3 +176,15 @@ async def test_data_provided_to_addtodatabase_ends_up_in_database(app_db: Engine db_teilchen = await add_to_database(teilchen, app_db) assert teilchen == db_teilchen + + +async def test_created_database_contains_expected_tables(engine: Engine): + + with engine.connect() as connection: + statement = text("SELECT name from sqlite_schema WHERE type = 'table'") + results = connection.execute(statement).all() + assert len(results) == 0 + + create_db_and_tables(engine) + results = connection.execute(statement).all() + assert len(results) == 1