import sqlite3 from app.migration_bootstrap import stamp_existing_sqlite_schema def test_stamps_existing_sqlite_schema_without_alembic_version(tmp_path): db_path = tmp_path / "discovery.db" with sqlite3.connect(db_path) as conn: conn.execute("CREATE TABLE discovery_conversation (id TEXT PRIMARY KEY)") conn.execute("CREATE TABLE discovery_profile (id TEXT PRIMARY KEY)") stamped = stamp_existing_sqlite_schema( f"sqlite+aiosqlite:///{db_path}", revision="001" ) with sqlite3.connect(db_path) as conn: version = conn.execute( "SELECT version_num FROM alembic_version" ).fetchone()[0] assert stamped is True assert version == "001" def test_does_not_stamp_empty_sqlite_database(tmp_path): db_path = tmp_path / "empty.db" stamped = stamp_existing_sqlite_schema( f"sqlite+aiosqlite:///{db_path}", revision="001" ) assert stamped is False assert not db_path.exists() def test_stamps_existing_schema_with_empty_alembic_version(tmp_path): db_path = tmp_path / "discovery.db" with sqlite3.connect(db_path) as conn: conn.execute("CREATE TABLE discovery_conversation (id TEXT PRIMARY KEY)") conn.execute("CREATE TABLE discovery_profile (id TEXT PRIMARY KEY)") conn.execute("CREATE TABLE alembic_version (version_num VARCHAR(32) NOT NULL)") stamped = stamp_existing_sqlite_schema( f"sqlite+aiosqlite:///{db_path}", revision="001" ) with sqlite3.connect(db_path) as conn: versions = conn.execute( "SELECT version_num FROM alembic_version" ).fetchall() assert stamped is True assert versions == [("001",)]