feat(backend): Implement discussion branching and take promotion
This commit is contained in:
50
tests/test_discussion_takes.py
Normal file
50
tests/test_discussion_takes.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import unittest
|
||||
from src import project_manager
|
||||
|
||||
class TestDiscussionTakes(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.project_dict = project_manager.default_project("test_branching")
|
||||
# Populate initial history in 'main'
|
||||
self.project_dict["discussion"]["discussions"]["main"]["history"] = [
|
||||
"User: Message 0",
|
||||
"AI: Response 0",
|
||||
"User: Message 1",
|
||||
"AI: Response 1",
|
||||
"User: Message 2"
|
||||
]
|
||||
|
||||
def test_branch_discussion_creates_new_take(self):
|
||||
"""Verify that branch_discussion copies history up to index and sets active."""
|
||||
source_id = "main"
|
||||
new_id = "take_1"
|
||||
message_index = 1
|
||||
|
||||
# This will fail with AttributeError until implemented in project_manager.py
|
||||
project_manager.branch_discussion(self.project_dict, source_id, new_id, message_index)
|
||||
|
||||
# Asserts
|
||||
self.assertIn(new_id, self.project_dict["discussion"]["discussions"])
|
||||
new_history = self.project_dict["discussion"]["discussions"][new_id]["history"]
|
||||
self.assertEqual(len(new_history), 2)
|
||||
self.assertEqual(new_history[0], "User: Message 0")
|
||||
self.assertEqual(new_history[1], "AI: Response 0")
|
||||
self.assertEqual(self.project_dict["discussion"]["active"], new_id)
|
||||
|
||||
def test_promote_take_renames_discussion(self):
|
||||
"""Verify that promote_take renames a discussion key."""
|
||||
take_id = "take_experimental"
|
||||
self.project_dict["discussion"]["discussions"][take_id] = project_manager.default_discussion()
|
||||
self.project_dict["discussion"]["discussions"][take_id]["history"] = ["User: Experimental"]
|
||||
|
||||
new_id = "feature_refined"
|
||||
|
||||
# This will fail with AttributeError until implemented in project_manager.py
|
||||
project_manager.promote_take(self.project_dict, take_id, new_id)
|
||||
|
||||
# Asserts
|
||||
self.assertNotIn(take_id, self.project_dict["discussion"]["discussions"])
|
||||
self.assertIn(new_id, self.project_dict["discussion"]["discussions"])
|
||||
self.assertEqual(self.project_dict["discussion"]["discussions"][new_id]["history"], ["User: Experimental"])
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user