49 lines
2.4 KiB
TOML
49 lines
2.4 KiB
TOML
role = "tier3-worker"
|
|
docs = ["conductor/workflow.md"]
|
|
prompt = """
|
|
Create tests/test_mma_dashboard_streams.py — failing tests for Task 1.1 of comprehensive_gui_ux track.
|
|
|
|
CONTEXT: _render_mma_dashboard in @gui_2.py currently has a single input_text_multiline for "Strategy (Tier 1)" (around line 2729). Task 1.1 replaces it with four collapsible sections using imgui.collapsing_header(), one per tier.
|
|
|
|
TESTS TO WRITE (all should FAIL against current code — they test the NEW behavior):
|
|
|
|
1. test_all_four_tier_headers_rendered:
|
|
- Create a mock App with mma_streams = {"Tier 1": "strat", "Tier 2 (Tech Lead)": "lead", "Tier 3 (Worker): T-001": "work", "Tier 4 (QA)": "qa"}
|
|
- Patch imgui.collapsing_header to record calls, patch imgui.begin_child to return True, patch imgui.end_child, patch imgui.input_text_multiline
|
|
- Call app._render_mma_dashboard()
|
|
- Assert collapsing_header was called with a string containing "Tier 1" AND "Tier 2" AND "Tier 3" AND "Tier 4"
|
|
|
|
2. test_tier3_aggregates_multiple_worker_streams:
|
|
- mma_streams = {"Tier 3 (Worker): T-001": "output1", "Tier 3 (Worker): T-002": "output2"}
|
|
- Patch imgui.collapsing_header to return True, patch begin_child/end_child/text
|
|
- Call _render_mma_dashboard()
|
|
- Assert imgui.text was called with content containing "T-001" and "T-002" (sub-headers shown)
|
|
|
|
3. test_old_single_strategy_box_removed:
|
|
- With any mma_streams, call _render_mma_dashboard()
|
|
- Assert imgui.input_text_multiline was NOT called with "##mma_strategy" as first arg
|
|
- (The old box should be gone, replaced by collapsing_header sections)
|
|
|
|
IMPLEMENTATION DETAILS:
|
|
- Import: import pytest, unittest.mock (patch, MagicMock, call)
|
|
- The App class needs minimal init to avoid full GUI startup. Use a MagicMock for the app instance and manually attach method:
|
|
app = MagicMock(spec=App)
|
|
app.mma_streams = {...}
|
|
app.mma_tier_usage = {}
|
|
app.tracks = []
|
|
app.active_track = None
|
|
app.active_tickets = []
|
|
app.mma_status = "idle"
|
|
app.active_tier = None
|
|
app.mma_step_mode = False
|
|
app._pending_mma_spawn = None
|
|
app._pending_mma_approval = None
|
|
app._pending_ask_dialog = False
|
|
# Then call the unbound method:
|
|
from gui_2 import App
|
|
App._render_mma_dashboard(app)
|
|
- Patch target: 'gui_2.imgui' module-level
|
|
- Use 1-space indentation throughout.
|
|
- All 3 tests should FAIL against the current code (which still has the old single text box).
|
|
"""
|