feat: expose win helper via mcp real lab
This commit is contained in:
73
tests/test_local_db_poc.py
Normal file
73
tests/test_local_db_poc.py
Normal file
@@ -0,0 +1,73 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import sqlite3
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from isphere_ai_bridge.draft import generate_drafts
|
||||
from isphere_ai_bridge.local_db import ISphereLocalDbReader, open_readonly_connection
|
||||
from isphere_ai_bridge.locator import discover_msglib_databases
|
||||
from isphere_ai_bridge.mock_db import create_mock_msglib
|
||||
|
||||
|
||||
class LocalDbPocTests(unittest.TestCase):
|
||||
def test_mock_database_reads_normalized_messages(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
db_path = create_mock_msglib(Path(tmp) / "MsgLib.db")
|
||||
reader = ISphereLocalDbReader(db_path)
|
||||
|
||||
probe = reader.probe()
|
||||
self.assertTrue(probe["can_open_readonly"])
|
||||
self.assertIn("tblPersonMsg", probe["message_tables"])
|
||||
self.assertIn("tblMsgGroupPersonMsg", probe["message_tables"])
|
||||
|
||||
messages = reader.read_messages(limit=10)
|
||||
self.assertEqual(4, len(messages))
|
||||
self.assertEqual("sys-001", messages[0].message_id)
|
||||
self.assertEqual("system", messages[0].conversation_type)
|
||||
self.assertEqual("grp-001", messages[1].message_id)
|
||||
self.assertEqual("group", messages[1].conversation_type)
|
||||
self.assertEqual("p2p-002", messages[2].message_id)
|
||||
self.assertEqual("direct", messages[2].conversation_type)
|
||||
self.assertIn("#tblPersonMsg:p2p-002", messages[2].raw_ref)
|
||||
|
||||
def test_connection_is_read_only(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
db_path = create_mock_msglib(Path(tmp) / "MsgLib.db")
|
||||
with open_readonly_connection(db_path) as con:
|
||||
with self.assertRaises(sqlite3.OperationalError):
|
||||
con.execute("create table should_not_write (id int)")
|
||||
|
||||
def test_discovers_expected_account_msglib_path(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
base = Path(tmp) / "isphere"
|
||||
db_path = (
|
||||
base
|
||||
/ "connection.10083"
|
||||
/ "27000000"
|
||||
/ "Account"
|
||||
/ "EMP001"
|
||||
/ "MsgLib.db"
|
||||
)
|
||||
create_mock_msglib(db_path)
|
||||
|
||||
candidates = discover_msglib_databases(base)
|
||||
self.assertEqual(1, len(candidates))
|
||||
self.assertTrue(candidates[0].exists)
|
||||
self.assertEqual("EMP001", candidates[0].account_id)
|
||||
self.assertEqual(db_path, candidates[0].path)
|
||||
|
||||
def test_generates_draft_only_outputs(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
db_path = create_mock_msglib(Path(tmp) / "MsgLib.db")
|
||||
messages = ISphereLocalDbReader(db_path).read_messages(limit=2)
|
||||
drafts = generate_drafts(messages)
|
||||
|
||||
self.assertEqual(2, len(drafts))
|
||||
self.assertEqual("draft-only", drafts[0].status)
|
||||
self.assertIn("Draft only", drafts[0].draft_text)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user