feat(beads): integrate Beads Mode backend, MCP tools, and GUI support
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
from src import app_controller, beads_client, models
|
||||
import tomli_w
|
||||
|
||||
def test_load_active_tickets_from_beads(tmp_path: Path):
|
||||
# 1. Setup mock Beads repository
|
||||
workspace_dir = tmp_path / "workspace"
|
||||
workspace_dir.mkdir()
|
||||
bclient = beads_client.BeadsClient(workspace_dir)
|
||||
bclient.init_repo()
|
||||
bclient.create_bead(title="Bead 1", description="Description 1")
|
||||
|
||||
# 2. Setup mock project file
|
||||
proj_path = workspace_dir / "project.toml"
|
||||
proj_data = {
|
||||
"project": {
|
||||
"name": "test_project",
|
||||
"execution_mode": "beads"
|
||||
},
|
||||
"mma": {
|
||||
"active_track": {
|
||||
"id": "track_20260309",
|
||||
"description": "Mock Track",
|
||||
"tickets": []
|
||||
}
|
||||
}
|
||||
}
|
||||
with open(proj_path, "wb") as f:
|
||||
tomli_w.dump(proj_data, f)
|
||||
|
||||
# 3. Initialize AppController (minimal)
|
||||
ctrl = app_controller.AppController()
|
||||
ctrl.active_project_path = str(proj_path)
|
||||
ctrl.project = proj_data
|
||||
ctrl.ui_project_execution_mode = "beads"
|
||||
# We'll need this to resolve the beads repo
|
||||
ctrl.ui_files_base_dir = str(workspace_dir)
|
||||
|
||||
# 4. Call the new loading method (to be implemented)
|
||||
# For now, we simulate what we expect to happen
|
||||
if hasattr(ctrl, "_load_active_tickets"):
|
||||
ctrl._load_active_tickets()
|
||||
else:
|
||||
# Initial implementation will go here or in init_state
|
||||
pass
|
||||
|
||||
# 5. Verify active_tickets populated from Beads
|
||||
assert len(ctrl.active_tickets) == 1
|
||||
assert ctrl.active_tickets[0]["id"] == "bead-1"
|
||||
assert ctrl.active_tickets[0]["description"] == "Description 1"
|
||||
Reference in New Issue
Block a user