# -*- coding: utf-8 -*- """init_db:幂等创建元数据表与本技能业务表。""" from __future__ import annotations import unittest from _support import IsolatedDataRoot class TestDbSmoke(unittest.TestCase): def test_init_db_idempotent_metadata_only(self) -> None: with IsolatedDataRoot(): from db.connection import get_conn, init_db from db.display_metadata import METADATA_TABLES, iter_user_tables init_db() init_db() conn = get_conn() try: cur = conn.cursor() cur.execute( "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'" ) tables = {str(row[0]) for row in cur.fetchall()} self.assertIn("_jiangchang_tables", tables) self.assertIn("_jiangchang_columns", tables) self.assertNotIn("task_logs", tables) # 本技能建 2 张业务表 self.assertEqual( list(iter_user_tables(cur)), ["payroll_config", "payslip_snapshots"], ) leftover = tables - METADATA_TABLES - {"payroll_config", "payslip_snapshots"} self.assertEqual(leftover, set()) finally: conn.close() if __name__ == "__main__": unittest.main()