from __future__ import annotations from sqlalchemy import create_engine, inspect, text from app.db import _apply_additive_columns def test_additive_columns_added_to_legacy_table() -> None: engine = create_engine("sqlite://") with engine.begin() as connection: connection.execute( text( "CREATE TABLE strategy_configs (" "id INTEGER PRIMARY KEY, strategy_key VARCHAR(64), " "symbol VARCHAR(32), timeframe VARCHAR(16), params JSON, " "created_at DATETIME)" ) ) _apply_additive_columns(engine) columns = {col["name"] for col in inspect(engine).get_columns("strategy_configs")} assert "name" in columns def test_additive_columns_is_idempotent() -> None: engine = create_engine("sqlite://") with engine.begin() as connection: connection.execute( text( "CREATE TABLE strategy_configs (" "id INTEGER PRIMARY KEY, name VARCHAR(80), strategy_key VARCHAR(64), " "symbol VARCHAR(32), timeframe VARCHAR(16), params JSON, " "created_at DATETIME)" ) ) _apply_additive_columns(engine) _apply_additive_columns(engine) columns = [col["name"] for col in inspect(engine).get_columns("strategy_configs")] assert columns.count("name") == 1