mirror of
https://github.com/agent0ai/agent-zero.git
synced 2026-05-19 07:59:34 +00:00
Fix canvas markdown rename before save
Route Office canvas renames through the document store so dirty or missing-on-disk Markdown sessions can be materialized at the new path without hitting the generic workdir filesystem rename endpoint. Add regression coverage for missing draft materialization, dirty markdown rename, and the custom rename hook contract.
This commit is contained in:
parent
5f2ef4f1da
commit
dd696732c8
6 changed files with 181 additions and 18 deletions
|
|
@ -40,6 +40,8 @@ def test_document_canvas_uses_markdown_editor_and_official_libreoffice_desktop_f
|
|||
assert "desktop_save" in store
|
||||
assert "openRenameModal" in store
|
||||
assert 'callOffice("renamed"' in store
|
||||
assert "performRename" in store
|
||||
assert "payload.text" in store
|
||||
assert "handleActiveFileRenamed" in store
|
||||
assert "--office-zoom" not in panel
|
||||
assert "zoom: 1" not in store
|
||||
|
|
@ -147,8 +149,10 @@ def test_office_surface_filters_tabs_to_desktop_and_markdown_without_dashboard()
|
|||
).read_text(encoding="utf-8")
|
||||
|
||||
assert "renameAfterConfirm" in file_browser_store
|
||||
assert "renamePerformAction" in file_browser_store
|
||||
assert "renameValidateName" in file_browser_store
|
||||
assert "options.onRenamed" in file_browser_store
|
||||
assert "options.performRename" in file_browser_store
|
||||
assert "options.validateName" in file_browser_store
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -277,6 +277,40 @@ def test_document_path_update_preserves_file_id_after_rename(office_state):
|
|||
assert document_store.get_document(doc["file_id"])["path"] == str(renamed)
|
||||
|
||||
|
||||
def test_document_rename_materializes_missing_markdown_with_editor_text(office_state):
|
||||
doc = document_store.create_document("document", "Unsaved Draft", "md", "Seed")
|
||||
original = Path(doc["path"])
|
||||
original.unlink()
|
||||
renamed = original.with_name("Renamed Draft.md")
|
||||
|
||||
updated = document_store.rename_document(
|
||||
doc["file_id"],
|
||||
renamed,
|
||||
content="# Renamed Draft\n\nCanvas text",
|
||||
)
|
||||
|
||||
assert updated["file_id"] == doc["file_id"]
|
||||
assert updated["basename"] == "Renamed Draft.md"
|
||||
assert updated["path"] == str(renamed)
|
||||
assert renamed.read_text(encoding="utf-8") == "# Renamed Draft\n\nCanvas text"
|
||||
|
||||
|
||||
def test_document_rename_saves_dirty_markdown_and_removes_original(office_state):
|
||||
doc = document_store.create_document("document", "Dirty Rename", "md", "Old")
|
||||
original = Path(doc["path"])
|
||||
renamed = original.with_name("Clean Rename.md")
|
||||
|
||||
updated = document_store.rename_document(
|
||||
doc["file_id"],
|
||||
renamed,
|
||||
content="# Clean Rename\n\nFresh text",
|
||||
)
|
||||
|
||||
assert updated["version"] == 2
|
||||
assert not original.exists()
|
||||
assert renamed.read_text(encoding="utf-8") == "# Clean Rename\n\nFresh text"
|
||||
|
||||
|
||||
def test_direct_markdown_edits_refresh_open_canvas_session(office_state, monkeypatch):
|
||||
manager = markdown_sessions.MarkdownSessionManager()
|
||||
monkeypatch.setattr(markdown_sessions, "_manager", manager, raising=False)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue