Update tests
This commit is contained in:
@@ -1286,7 +1286,6 @@ def testGuiEditor_Search(qtbot, monkeypatch, nwGUI, nwLipsum):
|
||||
monkeypatch.setattr(QMessageBox, "question", lambda *a: QMessageBox.Yes)
|
||||
monkeypatch.setattr(GuiDocEditor, "hasFocus", lambda *a: True)
|
||||
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
assert nwGUI.openProject(nwLipsum) is True
|
||||
assert nwGUI.openDocument("4c4f28287af27") is True
|
||||
origText = nwGUI.docEditor.getText()
|
||||
|
||||
@@ -43,7 +43,6 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, nwLipsum):
|
||||
monkeypatch.setattr(QMessageBox, "information", lambda *a: QMessageBox.Yes)
|
||||
|
||||
# Open project
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
assert nwGUI.openProject(nwLipsum)
|
||||
|
||||
# Rebuild the index
|
||||
|
||||
@@ -20,7 +20,6 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
import os
|
||||
import random
|
||||
import pytest
|
||||
|
||||
from shutil import copyfile
|
||||
@@ -72,16 +71,16 @@ def testGuiMain_ProjectBlocker(monkeypatch, nwGUI):
|
||||
|
||||
|
||||
@pytest.mark.gui
|
||||
def testGuiMain_ProjectTreeItems(qtbot, monkeypatch, nwGUI, fncProj):
|
||||
def testGuiMain_ProjectTreeItems(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
|
||||
"""Test handling of project tree items based on GUI focus states.
|
||||
"""
|
||||
monkeypatch.setattr(QMessageBox, "question", lambda *a: QMessageBox.Yes)
|
||||
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
assert nwGUI.newProject({"projPath": fncProj}) is True
|
||||
assert nwGUI.saveProject() is True
|
||||
# assert False
|
||||
|
||||
sHandle = "0e17daca5f3e1"
|
||||
sHandle = "000000000000f"
|
||||
assert nwGUI.openSelectedItem() is False
|
||||
|
||||
# Project Tree has focus
|
||||
@@ -128,7 +127,7 @@ def testGuiMain_ProjectTreeItems(qtbot, monkeypatch, nwGUI, fncProj):
|
||||
|
||||
|
||||
@pytest.mark.gui
|
||||
def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir, mockRnd):
|
||||
"""Test the document editor.
|
||||
"""
|
||||
# Block message box
|
||||
@@ -140,8 +139,6 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
monkeypatch.setattr(GuiDocEditor, "hasFocus", lambda *a: True)
|
||||
|
||||
# Create new, save, close project
|
||||
random.seed(42)
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
assert nwGUI.newProject({"projPath": fncProj})
|
||||
assert nwGUI.saveProject()
|
||||
assert nwGUI.closeProject()
|
||||
@@ -186,14 +183,14 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
assert not nwGUI.theProject.spellCheck
|
||||
|
||||
# Check that tree items have been created
|
||||
assert nwGUI.treeView._getTreeItem("73475cb40a568") is not None
|
||||
assert nwGUI.treeView._getTreeItem("25fc0e7096fc6") is not None
|
||||
assert nwGUI.treeView._getTreeItem("31489056e0916") is not None
|
||||
assert nwGUI.treeView._getTreeItem("98010bd9270f9") is not None
|
||||
assert nwGUI.treeView._getTreeItem("0e17daca5f3e1") is not None
|
||||
assert nwGUI.treeView._getTreeItem("44cb730c42048") is not None
|
||||
assert nwGUI.treeView._getTreeItem("71ee45a3c0db9") is not None
|
||||
assert nwGUI.treeView._getTreeItem("811786ad1ae74") is not None
|
||||
assert nwGUI.treeView._getTreeItem("0000000000008") is not None
|
||||
assert nwGUI.treeView._getTreeItem("0000000000009") is not None
|
||||
assert nwGUI.treeView._getTreeItem("000000000000a") is not None
|
||||
assert nwGUI.treeView._getTreeItem("000000000000b") is not None
|
||||
assert nwGUI.treeView._getTreeItem("000000000000c") is not None
|
||||
assert nwGUI.treeView._getTreeItem("000000000000d") is not None
|
||||
assert nwGUI.treeView._getTreeItem("000000000000e") is not None
|
||||
assert nwGUI.treeView._getTreeItem("000000000000f") is not None
|
||||
|
||||
nwGUI.mainMenu.aSpellCheck.setChecked(True)
|
||||
assert nwGUI.mainMenu._toggleSpellCheck()
|
||||
@@ -207,7 +204,7 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
# Add a Character File
|
||||
nwGUI.switchFocus(nwWidget.TREE)
|
||||
nwGUI.treeView.clearSelection()
|
||||
nwGUI.treeView._getTreeItem("71ee45a3c0db9").setSelected(True)
|
||||
nwGUI.treeView._getTreeItem("000000000000a").setSelected(True)
|
||||
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
||||
assert nwGUI.openSelectedItem()
|
||||
|
||||
@@ -229,7 +226,7 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
# Add a Plot File
|
||||
nwGUI.switchFocus(nwWidget.TREE)
|
||||
nwGUI.treeView.clearSelection()
|
||||
nwGUI.treeView._getTreeItem("44cb730c42048").setSelected(True)
|
||||
nwGUI.treeView._getTreeItem("0000000000009").setSelected(True)
|
||||
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
||||
assert nwGUI.openSelectedItem()
|
||||
|
||||
@@ -251,7 +248,7 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
# Add a World File
|
||||
nwGUI.switchFocus(nwWidget.TREE)
|
||||
nwGUI.treeView.clearSelection()
|
||||
nwGUI.treeView._getTreeItem("811786ad1ae74").setSelected(True)
|
||||
nwGUI.treeView._getTreeItem("000000000000b").setSelected(True)
|
||||
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
||||
assert nwGUI.openSelectedItem()
|
||||
|
||||
@@ -282,9 +279,9 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
# Select the 'New Scene' file
|
||||
nwGUI.switchFocus(nwWidget.TREE)
|
||||
nwGUI.treeView.clearSelection()
|
||||
nwGUI.treeView._getTreeItem("73475cb40a568").setExpanded(True)
|
||||
nwGUI.treeView._getTreeItem("31489056e0916").setExpanded(True)
|
||||
nwGUI.treeView._getTreeItem("0e17daca5f3e1").setSelected(True)
|
||||
nwGUI.treeView._getTreeItem("0000000000008").setExpanded(True)
|
||||
nwGUI.treeView._getTreeItem("000000000000d").setExpanded(True)
|
||||
nwGUI.treeView._getTreeItem("000000000000f").setSelected(True)
|
||||
assert nwGUI.openSelectedItem()
|
||||
|
||||
# Type something into the document
|
||||
@@ -419,8 +416,8 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
|
||||
# Open and view the edited document
|
||||
nwGUI.switchFocus(nwWidget.VIEWER)
|
||||
assert nwGUI.openDocument("0e17daca5f3e1")
|
||||
assert nwGUI.viewDocument("0e17daca5f3e1")
|
||||
assert nwGUI.openDocument("000000000000f")
|
||||
assert nwGUI.viewDocument("000000000000f")
|
||||
qtbot.wait(stepDelay)
|
||||
assert nwGUI.saveProject()
|
||||
assert nwGUI.closeDocViewer()
|
||||
@@ -429,11 +426,11 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
# Check a Quick Create and Delete
|
||||
assert nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
||||
newHandle = nwGUI.treeView.getSelectedHandle()
|
||||
assert nwGUI.theProject.projTree["2858dcd1057d3"] is not None
|
||||
assert nwGUI.theProject.projTree["0000000000020"] is not None
|
||||
assert nwGUI.treeView.deleteItem()
|
||||
assert nwGUI.treeView.setSelectedHandle(newHandle)
|
||||
assert nwGUI.treeView.deleteItem()
|
||||
assert nwGUI.theProject.projTree["2fca346db6561"] is not None # Trash
|
||||
assert nwGUI.theProject.projTree["0000000000024"] is not None # Trash
|
||||
assert nwGUI.saveProject()
|
||||
|
||||
# Check the files
|
||||
@@ -443,27 +440,27 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir):
|
||||
copyfile(projFile, testFile)
|
||||
assert cmpFiles(testFile, compFile, [2, 6, 7, 8])
|
||||
|
||||
projFile = os.path.join(fncProj, "content", "031b4af5197ec.nwd")
|
||||
testFile = os.path.join(outDir, "guiEditor_Main_Final_031b4af5197ec.nwd")
|
||||
compFile = os.path.join(refDir, "guiEditor_Main_Final_031b4af5197ec.nwd")
|
||||
projFile = os.path.join(fncProj, "content", "000000000000f.nwd")
|
||||
testFile = os.path.join(outDir, "guiEditor_Main_Final_000000000000f.nwd")
|
||||
compFile = os.path.join(refDir, "guiEditor_Main_Final_000000000000f.nwd")
|
||||
copyfile(projFile, testFile)
|
||||
assert cmpFiles(testFile, compFile)
|
||||
|
||||
projFile = os.path.join(fncProj, "content", "1a6562590ef19.nwd")
|
||||
testFile = os.path.join(outDir, "guiEditor_Main_Final_1a6562590ef19.nwd")
|
||||
compFile = os.path.join(refDir, "guiEditor_Main_Final_1a6562590ef19.nwd")
|
||||
projFile = os.path.join(fncProj, "content", "0000000000020.nwd")
|
||||
testFile = os.path.join(outDir, "guiEditor_Main_Final_0000000000020.nwd")
|
||||
compFile = os.path.join(refDir, "guiEditor_Main_Final_0000000000020.nwd")
|
||||
copyfile(projFile, testFile)
|
||||
assert cmpFiles(testFile, compFile)
|
||||
|
||||
projFile = os.path.join(fncProj, "content", "0e17daca5f3e1.nwd")
|
||||
testFile = os.path.join(outDir, "guiEditor_Main_Final_0e17daca5f3e1.nwd")
|
||||
compFile = os.path.join(refDir, "guiEditor_Main_Final_0e17daca5f3e1.nwd")
|
||||
projFile = os.path.join(fncProj, "content", "0000000000021.nwd")
|
||||
testFile = os.path.join(outDir, "guiEditor_Main_Final_0000000000021.nwd")
|
||||
compFile = os.path.join(refDir, "guiEditor_Main_Final_0000000000021.nwd")
|
||||
copyfile(projFile, testFile)
|
||||
assert cmpFiles(testFile, compFile)
|
||||
|
||||
projFile = os.path.join(fncProj, "content", "41cfc0d1f2d12.nwd")
|
||||
testFile = os.path.join(outDir, "guiEditor_Main_Final_41cfc0d1f2d12.nwd")
|
||||
compFile = os.path.join(refDir, "guiEditor_Main_Final_41cfc0d1f2d12.nwd")
|
||||
projFile = os.path.join(fncProj, "content", "0000000000022.nwd")
|
||||
testFile = os.path.join(outDir, "guiEditor_Main_Final_0000000000022.nwd")
|
||||
compFile = os.path.join(refDir, "guiEditor_Main_Final_0000000000022.nwd")
|
||||
copyfile(projFile, testFile)
|
||||
assert cmpFiles(testFile, compFile)
|
||||
|
||||
|
||||
@@ -48,7 +48,6 @@ def testGuiMenu_EditFormat(qtbot, monkeypatch, nwGUI, nwLipsum):
|
||||
# Test Document Action with No Project
|
||||
assert nwGUI.docEditor.docAction(nwDocAction.COPY) is False
|
||||
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
assert nwGUI.openProject(nwLipsum) is True
|
||||
qtbot.wait(stepDelay)
|
||||
|
||||
@@ -381,7 +380,6 @@ def testGuiMenu_ContextMenus(qtbot, monkeypatch, nwGUI, nwLipsum):
|
||||
# Block message box
|
||||
monkeypatch.setattr(QMessageBox, "question", lambda *a: QMessageBox.Yes)
|
||||
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
assert nwGUI.openProject(nwLipsum)
|
||||
assert nwGUI.openDocument("4c4f28287af27")
|
||||
qtbot.wait(stepDelay)
|
||||
@@ -460,18 +458,17 @@ def testGuiMenu_ContextMenus(qtbot, monkeypatch, nwGUI, nwLipsum):
|
||||
|
||||
|
||||
@pytest.mark.gui
|
||||
def testGuiMenu_Insert(qtbot, monkeypatch, nwGUI, fncDir, fncProj):
|
||||
def testGuiMenu_Insert(qtbot, monkeypatch, nwGUI, fncDir, fncProj, mockRnd):
|
||||
"""Test the Insert menu.
|
||||
"""
|
||||
# Block message box
|
||||
monkeypatch.setattr(QMessageBox, "question", lambda *a: QMessageBox.Yes)
|
||||
monkeypatch.setattr(QMessageBox, "critical", lambda *a: QMessageBox.Yes)
|
||||
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
assert nwGUI.newProject({"projPath": fncProj})
|
||||
|
||||
assert nwGUI.treeView._getTreeItem("0e17daca5f3e1") is not None
|
||||
assert nwGUI.openDocument("0e17daca5f3e1") is True
|
||||
assert nwGUI.treeView._getTreeItem("000000000000f") is not None
|
||||
assert nwGUI.openDocument("000000000000f") is True
|
||||
nwGUI.docEditor.clear()
|
||||
|
||||
# Test Faulty Inserts
|
||||
@@ -680,7 +677,7 @@ def testGuiMenu_Insert(qtbot, monkeypatch, nwGUI, fncDir, fncProj):
|
||||
assert not nwGUI.importDocument()
|
||||
|
||||
# Open the document from before, and add some text to it
|
||||
nwGUI.openDocument("0e17daca5f3e1")
|
||||
nwGUI.openDocument("000000000000f")
|
||||
nwGUI.docEditor.setText("Bar")
|
||||
assert nwGUI.docEditor.getText() == "Bar"
|
||||
|
||||
@@ -712,7 +709,7 @@ def testGuiMenu_Insert(qtbot, monkeypatch, nwGUI, fncDir, fncProj):
|
||||
theBits = theMessage.split("<br>")
|
||||
assert len(theBits) == 2
|
||||
assert theBits[0] == "The currently open file is saved in:"
|
||||
assert theBits[1] == os.path.join(fncProj, "content", "0e17daca5f3e1.nwd")
|
||||
assert theBits[1] == os.path.join(fncProj, "content", "000000000000f.nwd")
|
||||
|
||||
# qtbot.stopForInteraction()
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@ def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, nwMinimal):
|
||||
monkeypatch.setattr(QMessageBox, "information", lambda *a: QMessageBox.Yes)
|
||||
|
||||
nwGUI.openProject(nwMinimal)
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
nwTree = nwGUI.novelView
|
||||
|
||||
##
|
||||
|
||||
+105
-108
@@ -30,7 +30,7 @@ from novelwriter.enum import nwItemType, nwItemClass
|
||||
|
||||
|
||||
@pytest.mark.gui
|
||||
def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir, mockRnd):
|
||||
"""Test adding and removing items from the project tree.
|
||||
"""
|
||||
# Block message box
|
||||
@@ -46,7 +46,6 @@ def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is False
|
||||
|
||||
# Create a project
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
prjDir = os.path.join(fncDir, "project")
|
||||
assert nwGUI.newProject({"projPath": prjDir}) is True
|
||||
|
||||
@@ -62,7 +61,7 @@ def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
|
||||
# Create root item
|
||||
assert nwTree.newTreeItem(nwItemType.ROOT, nwItemClass.WORLD) is True
|
||||
assert "1a6562590ef19" in nwGUI.theProject.projTree
|
||||
assert "0000000000010" in nwGUI.theProject.projTree
|
||||
|
||||
# File/Folder Items
|
||||
# =================
|
||||
@@ -75,44 +74,44 @@ def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
assert "Did not find anywhere" in caplog.text
|
||||
|
||||
# Create new folder as child of Novel folder
|
||||
nwTree.setSelectedHandle("73475cb40a568")
|
||||
nwTree.setSelectedHandle("0000000000008")
|
||||
assert nwTree.newTreeItem(nwItemType.FOLDER) is True
|
||||
assert nwGUI.theProject.projTree["031b4af5197ec"].itemParent == "73475cb40a568"
|
||||
assert nwGUI.theProject.projTree["031b4af5197ec"].itemRoot == "73475cb40a568"
|
||||
assert nwGUI.theProject.projTree["031b4af5197ec"].itemClass == nwItemClass.NOVEL
|
||||
assert nwGUI.theProject.projTree["0000000000011"].itemParent == "0000000000008"
|
||||
assert nwGUI.theProject.projTree["0000000000011"].itemRoot == "0000000000008"
|
||||
assert nwGUI.theProject.projTree["0000000000011"].itemClass == nwItemClass.NOVEL
|
||||
|
||||
# Add a new file in the new folder
|
||||
nwTree.setSelectedHandle("031b4af5197ec")
|
||||
nwTree.setSelectedHandle("0000000000011")
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwGUI.theProject.projTree["41cfc0d1f2d12"].itemParent == "031b4af5197ec"
|
||||
assert nwGUI.theProject.projTree["41cfc0d1f2d12"].itemRoot == "73475cb40a568"
|
||||
assert nwGUI.theProject.projTree["41cfc0d1f2d12"].itemClass == nwItemClass.NOVEL
|
||||
assert nwGUI.theProject.projTree["0000000000012"].itemParent == "0000000000011"
|
||||
assert nwGUI.theProject.projTree["0000000000012"].itemRoot == "0000000000008"
|
||||
assert nwGUI.theProject.projTree["0000000000012"].itemClass == nwItemClass.NOVEL
|
||||
|
||||
# Add a new file next to the other new file
|
||||
nwTree.setSelectedHandle("41cfc0d1f2d12")
|
||||
nwTree.setSelectedHandle("0000000000012")
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwGUI.theProject.projTree["2858dcd1057d3"].itemParent == "031b4af5197ec"
|
||||
assert nwGUI.theProject.projTree["2858dcd1057d3"].itemRoot == "73475cb40a568"
|
||||
assert nwGUI.theProject.projTree["2858dcd1057d3"].itemClass == nwItemClass.NOVEL
|
||||
assert nwGUI.openDocument("2858dcd1057d3")
|
||||
assert nwGUI.theProject.projTree["0000000000013"].itemParent == "0000000000011"
|
||||
assert nwGUI.theProject.projTree["0000000000013"].itemRoot == "0000000000008"
|
||||
assert nwGUI.theProject.projTree["0000000000013"].itemClass == nwItemClass.NOVEL
|
||||
assert nwGUI.openDocument("0000000000013")
|
||||
assert nwGUI.docEditor.getText() == "### New Document\n\n"
|
||||
|
||||
# Add a new file to the characters folder
|
||||
nwTree.setSelectedHandle("71ee45a3c0db9")
|
||||
nwTree.setSelectedHandle("000000000000a")
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwGUI.theProject.projTree["2fca346db6561"].itemParent == "71ee45a3c0db9"
|
||||
assert nwGUI.theProject.projTree["2fca346db6561"].itemRoot == "71ee45a3c0db9"
|
||||
assert nwGUI.theProject.projTree["2fca346db6561"].itemClass == nwItemClass.CHARACTER
|
||||
assert nwGUI.openDocument("2fca346db6561")
|
||||
assert nwGUI.theProject.projTree["0000000000014"].itemParent == "000000000000a"
|
||||
assert nwGUI.theProject.projTree["0000000000014"].itemRoot == "000000000000a"
|
||||
assert nwGUI.theProject.projTree["0000000000014"].itemClass == nwItemClass.CHARACTER
|
||||
assert nwGUI.openDocument("0000000000014")
|
||||
assert nwGUI.docEditor.getText() == "# New Note\n\n"
|
||||
|
||||
# Make sure the sibling folder bug trap works
|
||||
nwTree.setSelectedHandle("2858dcd1057d3")
|
||||
nwGUI.theProject.projTree["2858dcd1057d3"].setParent(None) # This should not happen
|
||||
nwTree.setSelectedHandle("0000000000013")
|
||||
nwGUI.theProject.projTree["0000000000013"].setParent(None) # This should not happen
|
||||
caplog.clear()
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is False
|
||||
assert "Internal error" in caplog.text
|
||||
nwGUI.theProject.projTree["2858dcd1057d3"].setParent("031b4af5197ec")
|
||||
nwGUI.theProject.projTree["0000000000013"].setParent("0000000000011")
|
||||
|
||||
# Get the trash folder
|
||||
nwTree._addTrashRoot()
|
||||
@@ -139,7 +138,7 @@ def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
|
||||
|
||||
@pytest.mark.gui
|
||||
def testGuiProjTree_MoveItems(qtbot, monkeypatch, nwGUI, fncDir):
|
||||
def testGuiProjTree_MoveItems(qtbot, monkeypatch, nwGUI, fncDir, mockRnd):
|
||||
"""Test adding and removing items from the project tree.
|
||||
"""
|
||||
# Block message box
|
||||
@@ -155,7 +154,6 @@ def testGuiProjTree_MoveItems(qtbot, monkeypatch, nwGUI, fncDir):
|
||||
assert nwTree.moveTreeItem(1) is False
|
||||
|
||||
# Create a project
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
prjDir = os.path.join(fncDir, "project")
|
||||
assert nwGUI.newProject({"projPath": prjDir}) is True
|
||||
|
||||
@@ -163,21 +161,21 @@ def testGuiProjTree_MoveItems(qtbot, monkeypatch, nwGUI, fncDir):
|
||||
# ==============
|
||||
|
||||
# Add some files
|
||||
nwTree.setSelectedHandle("31489056e0916")
|
||||
nwTree.setSelectedHandle("000000000000d")
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "031b4af5197ec", "41cfc0d1f2d12",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000011", "0000000000012",
|
||||
]
|
||||
|
||||
# Move item without focus
|
||||
monkeypatch.setattr(GuiProjectTree, "hasFocus", lambda *a: False)
|
||||
assert nwTree.moveTreeItem(1) is False
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "031b4af5197ec", "41cfc0d1f2d12",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000011", "0000000000012",
|
||||
]
|
||||
monkeypatch.setattr(GuiProjectTree, "hasFocus", lambda *a: True)
|
||||
|
||||
@@ -186,78 +184,78 @@ def testGuiProjTree_MoveItems(qtbot, monkeypatch, nwGUI, fncDir):
|
||||
assert nwTree.moveTreeItem(1) is False
|
||||
|
||||
# Move second item up twice (should give same result)
|
||||
nwTree.setSelectedHandle("0e17daca5f3e1")
|
||||
nwTree.setSelectedHandle("000000000000f")
|
||||
assert nwTree.moveTreeItem(-1) is True
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "0e17daca5f3e1", "98010bd9270f9",
|
||||
"1a6562590ef19", "031b4af5197ec", "41cfc0d1f2d12",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000f", "000000000000e",
|
||||
"0000000000010", "0000000000011", "0000000000012",
|
||||
]
|
||||
assert nwTree.moveTreeItem(-1) is False
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "0e17daca5f3e1", "98010bd9270f9",
|
||||
"1a6562590ef19", "031b4af5197ec", "41cfc0d1f2d12",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000f", "000000000000e",
|
||||
"0000000000010", "0000000000011", "0000000000012",
|
||||
]
|
||||
|
||||
# Restore via menu entry
|
||||
nwGUI.mainMenu.aMoveDown.activate(QAction.Trigger)
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "031b4af5197ec", "41cfc0d1f2d12",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000011", "0000000000012",
|
||||
]
|
||||
|
||||
# Move fifth item down twice (should give same result)
|
||||
nwTree.setSelectedHandle("031b4af5197ec")
|
||||
nwTree.setSelectedHandle("0000000000011")
|
||||
assert nwTree.moveTreeItem(1) is True
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "41cfc0d1f2d12", "031b4af5197ec",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000012", "0000000000011",
|
||||
]
|
||||
assert nwTree.moveTreeItem(1) is False
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "41cfc0d1f2d12", "031b4af5197ec",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000012", "0000000000011",
|
||||
]
|
||||
|
||||
# Restore via menu entry
|
||||
nwGUI.mainMenu.aMoveUp.activate(QAction.Trigger)
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "031b4af5197ec", "41cfc0d1f2d12",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000011", "0000000000012",
|
||||
]
|
||||
|
||||
# Move down again, and restore via undo
|
||||
nwTree.setSelectedHandle("031b4af5197ec")
|
||||
nwTree.setSelectedHandle("0000000000011")
|
||||
assert nwTree.moveTreeItem(1) is True
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "41cfc0d1f2d12", "031b4af5197ec",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000012", "0000000000011",
|
||||
]
|
||||
nwGUI.mainMenu.aMoveUndo.activate(QAction.Trigger)
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "031b4af5197ec", "41cfc0d1f2d12",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000011", "0000000000012",
|
||||
]
|
||||
|
||||
# Root Folder
|
||||
# ===========
|
||||
|
||||
nwTree.setSelectedHandle("73475cb40a568")
|
||||
assert nwGUI.theProject.projTree._treeOrder.index("73475cb40a568") == 0
|
||||
nwTree.setSelectedHandle("0000000000008")
|
||||
assert nwGUI.theProject.projTree._treeOrder.index("0000000000008") == 0
|
||||
|
||||
# Move novel folder up
|
||||
assert nwTree.moveTreeItem(-1) is False
|
||||
nwTree.flushTreeOrder()
|
||||
assert nwGUI.theProject.projTree._treeOrder.index("73475cb40a568") == 0
|
||||
assert nwGUI.theProject.projTree._treeOrder.index("0000000000008") == 0
|
||||
|
||||
# Move novel folder down
|
||||
assert nwTree.moveTreeItem(1) is True
|
||||
nwTree.flushTreeOrder()
|
||||
assert nwGUI.theProject.projTree._treeOrder.index("73475cb40a568") == 1
|
||||
assert nwGUI.theProject.projTree._treeOrder.index("0000000000008") == 1
|
||||
|
||||
# Move novel folder up again
|
||||
assert nwTree.moveTreeItem(-1) is True
|
||||
nwTree.flushTreeOrder()
|
||||
assert nwGUI.theProject.projTree._treeOrder.index("73475cb40a568") == 0
|
||||
assert nwGUI.theProject.projTree._treeOrder.index("0000000000008") == 0
|
||||
|
||||
# Clean up
|
||||
# qtbot.stopForInteraction()
|
||||
@@ -267,7 +265,7 @@ def testGuiProjTree_MoveItems(qtbot, monkeypatch, nwGUI, fncDir):
|
||||
|
||||
|
||||
@pytest.mark.gui
|
||||
def testGuiProjTree_DeleteItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
def testGuiProjTree_DeleteItems(qtbot, caplog, monkeypatch, nwGUI, fncDir, mockRnd):
|
||||
"""Test adding and removing items from the project tree.
|
||||
"""
|
||||
# Block message box
|
||||
@@ -284,7 +282,6 @@ def testGuiProjTree_DeleteItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
assert nwTree.deleteItem() is False
|
||||
|
||||
# Create a project
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
prjDir = os.path.join(fncDir, "project")
|
||||
assert nwGUI.newProject({"projPath": prjDir}) is True
|
||||
|
||||
@@ -292,13 +289,13 @@ def testGuiProjTree_DeleteItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
assert nwTree.emptyTrash() is False
|
||||
|
||||
# Add some files
|
||||
nwTree.setSelectedHandle("31489056e0916")
|
||||
nwTree.setSelectedHandle("000000000000d")
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwTree.newTreeItem(nwItemType.FILE) is True
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19", "031b4af5197ec", "41cfc0d1f2d12",
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010", "0000000000011", "0000000000012",
|
||||
]
|
||||
|
||||
# Delete File
|
||||
@@ -306,7 +303,7 @@ def testGuiProjTree_DeleteItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
|
||||
# Delete item without focus -> blocked
|
||||
monkeypatch.setattr(GuiProjectTree, "hasFocus", lambda *a: False)
|
||||
nwTree.setSelectedHandle("41cfc0d1f2d12")
|
||||
nwTree.setSelectedHandle("0000000000012")
|
||||
caplog.clear()
|
||||
assert nwTree.deleteItem() is False
|
||||
assert "blocked" in caplog.text
|
||||
@@ -327,76 +324,76 @@ def testGuiProjTree_DeleteItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
# Block adding trash folder
|
||||
funcPointer = nwTree._addTrashRoot
|
||||
nwTree._addTrashRoot = lambda *a: None
|
||||
assert nwTree.deleteItem("41cfc0d1f2d12") is False
|
||||
assert nwTree.deleteItem("0000000000012") is False
|
||||
nwTree._addTrashRoot = funcPointer
|
||||
|
||||
# Delete last two documents, which also adds the trash folder
|
||||
assert nwTree.deleteItem("41cfc0d1f2d12") is True
|
||||
assert nwTree.deleteItem("031b4af5197ec") is True
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9", "0e17daca5f3e1",
|
||||
"1a6562590ef19"
|
||||
assert nwTree.deleteItem("0000000000012") is True
|
||||
assert nwTree.deleteItem("0000000000011") is True
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e", "000000000000f",
|
||||
"0000000000010"
|
||||
]
|
||||
trashHandle = nwGUI.theProject.projTree.trashRoot()
|
||||
assert nwTree.getTreeFromHandle(trashHandle) == [
|
||||
trashHandle, "41cfc0d1f2d12", "031b4af5197ec"
|
||||
trashHandle, "0000000000012", "0000000000011"
|
||||
]
|
||||
|
||||
# Delete the first file again (permanent), and ask for permission
|
||||
# Also open the document in the editor, which should trigger a close
|
||||
assert os.path.isfile(os.path.join(prjDir, "content", "41cfc0d1f2d12.nwd"))
|
||||
assert "41cfc0d1f2d12" in nwGUI.theProject.projTree
|
||||
assert os.path.isfile(os.path.join(prjDir, "content", "0000000000012.nwd"))
|
||||
assert "0000000000012" in nwGUI.theProject.projTree
|
||||
assert nwGUI.docEditor.docHandle() is None
|
||||
assert nwGUI.openDocument("41cfc0d1f2d12") is True
|
||||
assert nwGUI.docEditor.docHandle() == "41cfc0d1f2d12"
|
||||
assert nwTree.deleteItem("41cfc0d1f2d12") is True
|
||||
assert nwGUI.openDocument("0000000000012") is True
|
||||
assert nwGUI.docEditor.docHandle() == "0000000000012"
|
||||
assert nwTree.deleteItem("0000000000012") is True
|
||||
assert nwGUI.docEditor.docHandle() is None
|
||||
assert not os.path.isfile(os.path.join(prjDir, "content", "41cfc0d1f2d12.nwd"))
|
||||
assert "41cfc0d1f2d12" not in nwGUI.theProject.projTree
|
||||
assert not os.path.isfile(os.path.join(prjDir, "content", "0000000000012.nwd"))
|
||||
assert "0000000000012" not in nwGUI.theProject.projTree
|
||||
assert nwTree.getTreeFromHandle(trashHandle) == [
|
||||
trashHandle, "031b4af5197ec"
|
||||
trashHandle, "0000000000011"
|
||||
]
|
||||
|
||||
# Try to delete the second document, but block the deletion
|
||||
with monkeypatch.context() as mp:
|
||||
mp.setattr("novelwriter.core.document.NWDoc.deleteDocument", lambda *a: False)
|
||||
assert nwTree.deleteItem("031b4af5197ec") is False
|
||||
assert nwTree.deleteItem("0000000000011") is False
|
||||
|
||||
# Delete proper, and skip asking for permission
|
||||
assert os.path.isfile(os.path.join(prjDir, "content", "031b4af5197ec.nwd"))
|
||||
assert "031b4af5197ec" in nwGUI.theProject.projTree
|
||||
assert nwTree.deleteItem("031b4af5197ec", alreadyAsked=True) is True
|
||||
assert not os.path.isfile(os.path.join(prjDir, "content", "031b4af5197ec.nwd"))
|
||||
assert "031b4af5197ec" not in nwGUI.theProject.projTree
|
||||
assert os.path.isfile(os.path.join(prjDir, "content", "0000000000011.nwd"))
|
||||
assert "0000000000011" in nwGUI.theProject.projTree
|
||||
assert nwTree.deleteItem("0000000000011", alreadyAsked=True) is True
|
||||
assert not os.path.isfile(os.path.join(prjDir, "content", "0000000000011.nwd"))
|
||||
assert "0000000000011" not in nwGUI.theProject.projTree
|
||||
assert nwTree.getTreeFromHandle(trashHandle) == [trashHandle]
|
||||
|
||||
# Delete Folder/Root
|
||||
# ==================
|
||||
|
||||
# Deleting non-empty folders is blocked
|
||||
assert nwTree.deleteItem("31489056e0916") is False # Folder
|
||||
assert nwTree.deleteItem("73475cb40a568") is False # Root
|
||||
assert nwTree.deleteItem("000000000000d") is False # Folder
|
||||
assert nwTree.deleteItem("0000000000008") is False # Root
|
||||
|
||||
# Add a folder we can delete
|
||||
nwTree.setSelectedHandle("71ee45a3c0db9") # Character Root
|
||||
nwTree.setSelectedHandle("000000000000a") # Character Root
|
||||
assert nwTree.newTreeItem(nwItemType.FOLDER) is True
|
||||
assert "2fca346db6561" in nwGUI.theProject.projTree
|
||||
assert "0000000000014" in nwGUI.theProject.projTree
|
||||
|
||||
# Try to delete, but block parent item lookup
|
||||
with monkeypatch.context() as mp:
|
||||
mp.setattr("PyQt5.QtWidgets.QTreeWidgetItem.parent", lambda *a: None)
|
||||
caplog.clear()
|
||||
assert nwTree.deleteItem("2fca346db6561") is False
|
||||
assert nwTree.deleteItem("0000000000014") is False
|
||||
assert "Could not delete folder" in caplog.text
|
||||
assert "2fca346db6561" in nwGUI.theProject.projTree
|
||||
assert "0000000000014" in nwGUI.theProject.projTree
|
||||
|
||||
# Delete folder properly
|
||||
assert nwTree.deleteItem("2fca346db6561") is True
|
||||
assert "2fca346db6561" not in nwGUI.theProject.projTree
|
||||
assert nwTree.deleteItem("0000000000014") is True
|
||||
assert "0000000000014" not in nwGUI.theProject.projTree
|
||||
|
||||
# Delete the Character root
|
||||
assert nwTree.deleteItem("71ee45a3c0db9") is True
|
||||
assert "71ee45a3c0db9" not in nwGUI.theProject.projTree
|
||||
assert nwTree.deleteItem("000000000000a") is True
|
||||
assert "000000000000a" not in nwGUI.theProject.projTree
|
||||
|
||||
# Empty Trash
|
||||
# ===========
|
||||
@@ -408,13 +405,13 @@ def testGuiProjTree_DeleteItems(qtbot, caplog, monkeypatch, nwGUI, fncDir):
|
||||
assert "already empty" in caplog.text
|
||||
|
||||
# Move the two remaining scene documents to trash
|
||||
assert nwTree.deleteItem("0e17daca5f3e1") is True
|
||||
assert nwTree.deleteItem("1a6562590ef19") is True
|
||||
assert nwTree.getTreeFromHandle("31489056e0916") == [
|
||||
"31489056e0916", "98010bd9270f9"
|
||||
assert nwTree.deleteItem("000000000000f") is True
|
||||
assert nwTree.deleteItem("0000000000010") is True
|
||||
assert nwTree.getTreeFromHandle("000000000000d") == [
|
||||
"000000000000d", "000000000000e"
|
||||
]
|
||||
assert nwTree.getTreeFromHandle(trashHandle) == [
|
||||
trashHandle, "0e17daca5f3e1", "1a6562590ef19"
|
||||
trashHandle, "000000000000f", "0000000000010"
|
||||
]
|
||||
|
||||
# Empty trash, but select no on question
|
||||
|
||||
@@ -29,14 +29,13 @@ from novelwriter.enum import nwState
|
||||
|
||||
|
||||
@pytest.mark.gui
|
||||
def testGuiStatusBar_Main(qtbot, monkeypatch, nwGUI, fncProj):
|
||||
def testGuiStatusBar_Main(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
|
||||
"""Test the the various features of the status bar.
|
||||
"""
|
||||
monkeypatch.setattr(QMessageBox, "question", lambda *a: QMessageBox.Yes)
|
||||
|
||||
nwGUI.theProject.projTree.setSeed(42)
|
||||
assert nwGUI.newProject({"projPath": fncProj}) is True
|
||||
cHandle = nwGUI.theProject.newFile("A Note", "71ee45a3c0db9")
|
||||
cHandle = nwGUI.theProject.newFile("A Note", "000000000000a")
|
||||
newDoc = NWDoc(nwGUI.theProject, cHandle)
|
||||
newDoc.writeDocument("# A Note\n\n")
|
||||
nwGUI.treeView.revealNewTreeItem(cHandle)
|
||||
|
||||
Reference in New Issue
Block a user