checkpoint: massive refactor
This commit is contained in:
@@ -7,70 +7,63 @@ from pathlib import Path
|
||||
import orchestrator_pm
|
||||
|
||||
class TestOrchestratorPMHistory(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.test_dir = Path("test_conductor")
|
||||
self.test_dir.mkdir(exist_ok=True)
|
||||
self.archive_dir = self.test_dir / "archive"
|
||||
self.tracks_dir = self.test_dir / "tracks"
|
||||
self.archive_dir.mkdir(exist_ok=True)
|
||||
self.tracks_dir.mkdir(exist_ok=True)
|
||||
def setUp(self):
|
||||
self.test_dir = Path("test_conductor")
|
||||
self.test_dir.mkdir(exist_ok=True)
|
||||
self.archive_dir = self.test_dir / "archive"
|
||||
self.tracks_dir = self.test_dir / "tracks"
|
||||
self.archive_dir.mkdir(exist_ok=True)
|
||||
self.tracks_dir.mkdir(exist_ok=True)
|
||||
|
||||
def tearDown(self):
|
||||
if self.test_dir.exists():
|
||||
shutil.rmtree(self.test_dir)
|
||||
def tearDown(self):
|
||||
if self.test_dir.exists():
|
||||
shutil.rmtree(self.test_dir)
|
||||
|
||||
def create_track(self, parent_dir, track_id, title, status, overview):
|
||||
track_path = parent_dir / track_id
|
||||
track_path.mkdir(exist_ok=True)
|
||||
|
||||
metadata = {"title": title, "status": status}
|
||||
with open(track_path / "metadata.json", "w") as f:
|
||||
json.dump(metadata, f)
|
||||
|
||||
spec_content = f"# Specification\n\n## Overview\n{overview}"
|
||||
with open(track_path / "spec.md", "w") as f:
|
||||
f.write(spec_content)
|
||||
def create_track(self, parent_dir, track_id, title, status, overview):
|
||||
track_path = parent_dir / track_id
|
||||
track_path.mkdir(exist_ok=True)
|
||||
metadata = {"title": title, "status": status}
|
||||
with open(track_path / "metadata.json", "w") as f:
|
||||
json.dump(metadata, f)
|
||||
spec_content = f"# Specification\n\n## Overview\n{overview}"
|
||||
with open(track_path / "spec.md", "w") as f:
|
||||
f.write(spec_content)
|
||||
|
||||
@patch('orchestrator_pm.CONDUCTOR_PATH', Path("test_conductor"))
|
||||
def test_get_track_history_summary(self):
|
||||
# Setup mock tracks
|
||||
self.create_track(self.archive_dir, "track_001", "Initial Setup", "completed", "Setting up the project structure.")
|
||||
self.create_track(self.tracks_dir, "track_002", "Feature A", "in_progress", "Implementing Feature A.")
|
||||
|
||||
summary = orchestrator_pm.get_track_history_summary()
|
||||
|
||||
self.assertIn("Initial Setup", summary)
|
||||
self.assertIn("completed", summary)
|
||||
self.assertIn("Setting up the project structure.", summary)
|
||||
self.assertIn("Feature A", summary)
|
||||
self.assertIn("in_progress", summary)
|
||||
self.assertIn("Implementing Feature A.", summary)
|
||||
@patch('orchestrator_pm.CONDUCTOR_PATH', Path("test_conductor"))
|
||||
def test_get_track_history_summary(self):
|
||||
# Setup mock tracks
|
||||
self.create_track(self.archive_dir, "track_001", "Initial Setup", "completed", "Setting up the project structure.")
|
||||
self.create_track(self.tracks_dir, "track_002", "Feature A", "in_progress", "Implementing Feature A.")
|
||||
summary = orchestrator_pm.get_track_history_summary()
|
||||
self.assertIn("Initial Setup", summary)
|
||||
self.assertIn("completed", summary)
|
||||
self.assertIn("Setting up the project structure.", summary)
|
||||
self.assertIn("Feature A", summary)
|
||||
self.assertIn("in_progress", summary)
|
||||
self.assertIn("Implementing Feature A.", summary)
|
||||
|
||||
@patch('orchestrator_pm.CONDUCTOR_PATH', Path("test_conductor"))
|
||||
def test_get_track_history_summary_missing_files(self):
|
||||
# Track with missing spec.md
|
||||
track_path = self.tracks_dir / "track_003"
|
||||
track_path.mkdir(exist_ok=True)
|
||||
with open(track_path / "metadata.json", "w") as f:
|
||||
json.dump({"title": "Missing Spec", "status": "pending"}, f)
|
||||
|
||||
summary = orchestrator_pm.get_track_history_summary()
|
||||
self.assertIn("Missing Spec", summary)
|
||||
self.assertIn("pending", summary)
|
||||
self.assertIn("No overview available", summary)
|
||||
@patch('orchestrator_pm.CONDUCTOR_PATH', Path("test_conductor"))
|
||||
def test_get_track_history_summary_missing_files(self):
|
||||
# Track with missing spec.md
|
||||
track_path = self.tracks_dir / "track_003"
|
||||
track_path.mkdir(exist_ok=True)
|
||||
with open(track_path / "metadata.json", "w") as f:
|
||||
json.dump({"title": "Missing Spec", "status": "pending"}, f)
|
||||
summary = orchestrator_pm.get_track_history_summary()
|
||||
self.assertIn("Missing Spec", summary)
|
||||
self.assertIn("pending", summary)
|
||||
self.assertIn("No overview available", summary)
|
||||
|
||||
@patch('orchestrator_pm.summarize.build_summary_markdown')
|
||||
@patch('ai_client.send')
|
||||
def test_generate_tracks_with_history(self, mock_send, mock_summarize):
|
||||
mock_summarize.return_value = "REPO_MAP"
|
||||
mock_send.return_value = "[]"
|
||||
|
||||
history_summary = "PAST_HISTORY_SUMMARY"
|
||||
orchestrator_pm.generate_tracks("req", {}, [], history_summary=history_summary)
|
||||
|
||||
args, kwargs = mock_send.call_args
|
||||
self.assertIn(history_summary, kwargs['user_message'])
|
||||
self.assertIn("### TRACK HISTORY:", kwargs['user_message'])
|
||||
@patch('orchestrator_pm.summarize.build_summary_markdown')
|
||||
@patch('ai_client.send')
|
||||
def test_generate_tracks_with_history(self, mock_send, mock_summarize):
|
||||
mock_summarize.return_value = "REPO_MAP"
|
||||
mock_send.return_value = "[]"
|
||||
history_summary = "PAST_HISTORY_SUMMARY"
|
||||
orchestrator_pm.generate_tracks("req", {}, [], history_summary=history_summary)
|
||||
args, kwargs = mock_send.call_args
|
||||
self.assertIn(history_summary, kwargs['user_message'])
|
||||
self.assertIn("### TRACK HISTORY:", kwargs['user_message'])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user