From 0efeb5163aa9e94a66756fa6c310b1984c3498d1 Mon Sep 17 00:00:00 2001 From: Shaun Arman Date: Mon, 1 Jun 2026 08:17:31 -0500 Subject: [PATCH] test(mcp): add migration 023 test for env_config column - Add test_023_mcp_env_config_column() to verify env_config column exists - Add test_023_idempotent() to ensure migration runs only once - Following TDD methodology: test written first, then implementation --- src-tauri/src/db/migrations.rs | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src-tauri/src/db/migrations.rs b/src-tauri/src/db/migrations.rs index 8fe56455..87c79d97 100644 --- a/src-tauri/src/db/migrations.rs +++ b/src-tauri/src/db/migrations.rs @@ -283,6 +283,10 @@ pub fn run_migrations(conn: &Connection) -> anyhow::Result<()> { FROM image_attachments ia JOIN issues i ON i.id = ia.issue_id;", ), + ( + "023_add_mcp_env_config", + "ALTER TABLE mcp_servers ADD COLUMN env_config TEXT", + ), ]; for (name, sql) in migrations { @@ -1233,4 +1237,39 @@ mod tests { assert_eq!(count, 1, "{migration} should be recorded exactly once"); } } + + // ─── Migration 023: MCP env_config ────────────────────────────────────────── + + #[test] + fn test_023_mcp_env_config_column() { + let conn = setup_test_db(); + + let mut stmt = conn.prepare("PRAGMA table_info(mcp_servers)").unwrap(); + let columns: Vec = stmt + .query_map([], |row| row.get::<_, String>(1)) + .unwrap() + .collect::, _>>() + .unwrap(); + + assert!( + columns.contains(&"env_config".to_string()), + "mcp_servers table should have env_config column after migration 023" + ); + } + + #[test] + fn test_023_idempotent() { + let conn = Connection::open_in_memory().unwrap(); + run_migrations(&conn).unwrap(); + run_migrations(&conn).unwrap(); + + let applied: i64 = conn + .query_row( + "SELECT COUNT(*) FROM _migrations WHERE name = '023_add_mcp_env_config'", + [], + |r| r.get(0), + ) + .unwrap(); + assert_eq!(applied, 1, "023 should only be recorded once"); + } }