Clean up project tree class

This commit is contained in:
Veronica Berglyd Olsen
2024-10-31 17:30:49 +01:00
parent b529d5b125
commit 7f49979bc9
4 changed files with 134 additions and 137 deletions
+1 -1
View File
@@ -134,7 +134,7 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, prjLipsum):
assert docViewer.docAction(nwDocAction.COPY) is False
# Open again via menu
assert nwGUI.projView.projTree.setSelectedHandle("88243afbe5ed8")
nwGUI.projView.projTree.setSelectedHandle("88243afbe5ed8")
nwGUI.mainMenu.aViewDoc.activate(QAction.ActionEvent.Trigger)
# Open context menu
+16 -8
View File
@@ -21,6 +21,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
from __future__ import annotations
from pathlib import Path
from unittest.mock import MagicMock
import pytest
@@ -1146,30 +1147,37 @@ def testGuiProjTree_ContextMenu(qtbot, monkeypatch, nwGUI, projPath, mockRnd):
def itemPos(tHandle):
return projTree.visualItemRect(projTree._getTreeItem(tHandle)).center()
# Pop the menu
# Pop the menu in various positions and check for success
with monkeypatch.context() as mp:
mp.setattr(QMenu, "exec", lambda *a: None)
mockMenu = MagicMock()
mp.setattr(QMenu, "exec", mockMenu)
projTree.clearSelection()
# No item under menu
assert projTree._openContextMenu(projTree.viewport().rect().bottomRight()) is False
projTree.openContextMenu(projTree.viewport().rect().bottomRight())
assert mockMenu.call_count == 0
# Open Trash Menu
assert projTree._openContextMenu(itemPos(hTrashRoot)) is True
projTree.openContextMenu(itemPos(hTrashRoot))
assert mockMenu.call_count == 1
# Open Single Select Menu
assert projTree._openContextMenu(itemPos(C.hNovelRoot)) is True
projTree.openContextMenu(itemPos(C.hNovelRoot))
assert mockMenu.call_count == 2
# Open Multi-Select Menu
projTree._getTreeItem(hNovelNote).setSelected(True)
projTree._getTreeItem(hSubNote).setSelected(True)
assert projTree._openContextMenu(itemPos(hCharNote)) is True
projTree.openContextMenu(itemPos(hCharNote))
assert mockMenu.call_count == 3
# Check the keyboard shortcut handler as well
projTree.setSelectedHandle(C.hNovelRoot)
assert projTree.openContextOnSelected() is True
projTree.openContextMenu(None)
assert mockMenu.call_count == 4
projTree.clearSelection()
assert projTree.openContextOnSelected() is False
projTree.openContextMenu(None)
assert mockMenu.call_count == 4
# Menu Builders
# =============