Make some minor improvements to code and tests

This commit is contained in:
Veronica Berglyd Olsen
2022-10-10 15:48:45 +02:00
parent 428dce3e6e
commit 747a1a212c
11 changed files with 162 additions and 173 deletions
+2 -2
View File
@@ -29,8 +29,8 @@ import novelwriter
from PyQt5.QtCore import Qt, QSize from PyQt5.QtCore import Qt, QSize
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QDialog, QVBoxLayout, QLabel, QListWidget, QAbstractItemView, QAbstractItemView, QDialog, QDialogButtonBox, QGridLayout, QLabel,
QListWidgetItem, QDialogButtonBox, QGridLayout QListWidget, QListWidgetItem, QVBoxLayout,
) )
from novelwriter.gui.custom import QHelpLabel, QSwitch from novelwriter.gui.custom import QHelpLabel, QSwitch
+1 -1
View File
@@ -1048,7 +1048,7 @@ class GuiOutlineDetails(QScrollArea):
self.titleLabel.setText("<b>%s</b>" % self.tr("Title")) self.titleLabel.setText("<b>%s</b>" % self.tr("Title"))
self.titleValue.setText(novIdx.title) self.titleValue.setText(novIdx.title)
itemStatus, _ = nwItem.getImportStatus() itemStatus, _ = nwItem.getImportStatus(incIcon=False)
self.fileValue.setText(nwItem.itemName) self.fileValue.setText(nwItem.itemName)
self.itemValue.setText(itemStatus) self.itemValue.setText(itemStatus)
+1 -1
View File
@@ -34,7 +34,7 @@ from time import time
from PyQt5.QtGui import QPalette from PyQt5.QtGui import QPalette
from PyQt5.QtCore import Qt, QSize, pyqtSignal, pyqtSlot from PyQt5.QtCore import Qt, QSize, pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QAbstractItemView, QFrame, QHBoxLayout, QHeaderView, QLabel, QDialog, QAbstractItemView, QDialog, QFrame, QHBoxLayout, QHeaderView, QLabel,
QMenu, QShortcut, QSizePolicy, QToolButton, QTreeWidget, QTreeWidgetItem, QMenu, QShortcut, QSizePolicy, QToolButton, QTreeWidget, QTreeWidgetItem,
QVBoxLayout, QWidget QVBoxLayout, QWidget
) )
+14 -19
View File
@@ -21,7 +21,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
import pytest import pytest
from tools import buildTestProject from tools import buildTestProject, C
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QMessageBox from PyQt5.QtWidgets import QMessageBox
@@ -40,20 +40,15 @@ def testDlgMerge_Main(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
# Create a new project # Create a new project
buildTestProject(nwGUI, fncProj) buildTestProject(nwGUI, fncProj)
hInvalid = "0000000000000"
hChapterDir = "000000000000d"
hChapterDoc = "000000000000e"
hSceneDoc = "000000000000f"
# Check that the dialog kan handle invalid items # Check that the dialog kan handle invalid items
nwMerge = GuiDocMerge(nwGUI, hInvalid, [hInvalid]) nwMerge = GuiDocMerge(nwGUI, C.hInvalid, [C.hInvalid])
qtbot.addWidget(nwMerge) qtbot.addWidget(nwMerge)
nwMerge.show() nwMerge.show()
assert nwMerge.listBox.count() == 0 assert nwMerge.listBox.count() == 0
nwMerge.reject() nwMerge.reject()
# Load items from chapter dir # Load items from chapter dir
nwMerge = GuiDocMerge(nwGUI, hChapterDir, [hChapterDir, hChapterDoc, hSceneDoc]) nwMerge = GuiDocMerge(nwGUI, C.hChapterDir, [C.hChapterDir, C.hChapterDoc, C.hSceneDoc])
qtbot.addWidget(nwMerge) qtbot.addWidget(nwMerge)
nwMerge.show() nwMerge.show()
@@ -62,36 +57,36 @@ def testDlgMerge_Main(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
itemOne = nwMerge.listBox.item(0) itemOne = nwMerge.listBox.item(0)
itemTwo = nwMerge.listBox.item(1) itemTwo = nwMerge.listBox.item(1)
assert itemOne.data(Qt.UserRole) == hChapterDoc assert itemOne.data(Qt.UserRole) == C.hChapterDoc
assert itemTwo.data(Qt.UserRole) == hSceneDoc assert itemTwo.data(Qt.UserRole) == C.hSceneDoc
assert itemOne.checkState() == Qt.Checked assert itemOne.checkState() == Qt.Checked
assert itemTwo.checkState() == Qt.Checked assert itemTwo.checkState() == Qt.Checked
data = nwMerge.getData() data = nwMerge.getData()
assert data["sHandle"] == hChapterDir assert data["sHandle"] == C.hChapterDir
assert data["origItems"] == [hChapterDir, hChapterDoc, hSceneDoc] assert data["origItems"] == [C.hChapterDir, C.hChapterDoc, C.hSceneDoc]
assert data["moveToTrash"] is False assert data["moveToTrash"] is False
assert data["finalItems"] == [hChapterDoc, hSceneDoc] assert data["finalItems"] == [C.hChapterDoc, C.hSceneDoc]
# Uncheck second item and toggle trash switch # Uncheck second item and toggle trash switch
itemTwo.setCheckState(Qt.Unchecked) itemTwo.setCheckState(Qt.Unchecked)
nwMerge.trashSwitch.setChecked(True) nwMerge.trashSwitch.setChecked(True)
data = nwMerge.getData() data = nwMerge.getData()
assert data["sHandle"] == hChapterDir assert data["sHandle"] == C.hChapterDir
assert data["origItems"] == [hChapterDir, hChapterDoc, hSceneDoc] assert data["origItems"] == [C.hChapterDir, C.hChapterDoc, C.hSceneDoc]
assert data["moveToTrash"] is True assert data["moveToTrash"] is True
assert data["finalItems"] == [hChapterDoc] assert data["finalItems"] == [C.hChapterDoc]
# Restore default values # Restore default values
nwMerge._resetList() nwMerge._resetList()
data = nwMerge.getData() data = nwMerge.getData()
assert data["sHandle"] == hChapterDir assert data["sHandle"] == C.hChapterDir
assert data["origItems"] == [hChapterDir, hChapterDoc, hSceneDoc] assert data["origItems"] == [C.hChapterDir, C.hChapterDoc, C.hSceneDoc]
assert data["moveToTrash"] is True assert data["moveToTrash"] is True
assert data["finalItems"] == [hChapterDoc, hSceneDoc] assert data["finalItems"] == [C.hChapterDoc, C.hSceneDoc]
# qtbot.stop() # qtbot.stop()
+19 -19
View File
@@ -23,7 +23,7 @@ import os
import pytest import pytest
from shutil import copyfile from shutil import copyfile
from tools import cmpFiles, buildTestProject, XML_IGNORE, writeFile from tools import C, cmpFiles, buildTestProject, XML_IGNORE, writeFile
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QMessageBox, QInputDialog from PyQt5.QtWidgets import QMessageBox, QInputDialog
@@ -216,14 +216,14 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir, mock
assert nwGUI.theProject.spellCheck is False assert nwGUI.theProject.spellCheck is False
# Check that tree items have been created # Check that tree items have been created
assert nwGUI.projView.projTree._getTreeItem("0000000000008") is not None assert nwGUI.projView.projTree._getTreeItem(C.hNovelRoot) is not None
assert nwGUI.projView.projTree._getTreeItem("0000000000009") is not None assert nwGUI.projView.projTree._getTreeItem(C.hPlotRoot) is not None
assert nwGUI.projView.projTree._getTreeItem("000000000000a") is not None assert nwGUI.projView.projTree._getTreeItem(C.hCharRoot) is not None
assert nwGUI.projView.projTree._getTreeItem("000000000000b") is not None assert nwGUI.projView.projTree._getTreeItem(C.hWorldRoot) is not None
assert nwGUI.projView.projTree._getTreeItem("000000000000c") is not None assert nwGUI.projView.projTree._getTreeItem(C.hTitlePage) is not None
assert nwGUI.projView.projTree._getTreeItem("000000000000d") is not None assert nwGUI.projView.projTree._getTreeItem(C.hChapterDir) is not None
assert nwGUI.projView.projTree._getTreeItem("000000000000e") is not None assert nwGUI.projView.projTree._getTreeItem(C.hChapterDoc) is not None
assert nwGUI.projView.projTree._getTreeItem("000000000000f") is not None assert nwGUI.projView.projTree._getTreeItem(C.hSceneDoc) is not None
nwGUI.mainMenu.aSpellCheck.setChecked(True) nwGUI.mainMenu.aSpellCheck.setChecked(True)
assert nwGUI.mainMenu._toggleSpellCheck() assert nwGUI.mainMenu._toggleSpellCheck()
@@ -237,7 +237,7 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir, mock
# Add a Character File # Add a Character File
nwGUI.switchFocus(nwWidget.TREE) nwGUI.switchFocus(nwWidget.TREE)
nwGUI.projView.projTree.clearSelection() nwGUI.projView.projTree.clearSelection()
nwGUI.projView.projTree._getTreeItem("000000000000a").setSelected(True) nwGUI.projView.projTree._getTreeItem(C.hCharRoot).setSelected(True)
nwGUI.projView.projTree.newTreeItem(nwItemType.FILE, None, isNote=True) nwGUI.projView.projTree.newTreeItem(nwItemType.FILE, None, isNote=True)
assert nwGUI.openSelectedItem() assert nwGUI.openSelectedItem()
@@ -259,7 +259,7 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir, mock
# Add a Plot File # Add a Plot File
nwGUI.switchFocus(nwWidget.TREE) nwGUI.switchFocus(nwWidget.TREE)
nwGUI.projView.projTree.clearSelection() nwGUI.projView.projTree.clearSelection()
nwGUI.projView.projTree._getTreeItem("0000000000009").setSelected(True) nwGUI.projView.projTree._getTreeItem(C.hPlotRoot).setSelected(True)
nwGUI.projView.projTree.newTreeItem(nwItemType.FILE, None, isNote=True) nwGUI.projView.projTree.newTreeItem(nwItemType.FILE, None, isNote=True)
assert nwGUI.openSelectedItem() assert nwGUI.openSelectedItem()
@@ -281,7 +281,7 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir, mock
# Add a World File # Add a World File
nwGUI.switchFocus(nwWidget.TREE) nwGUI.switchFocus(nwWidget.TREE)
nwGUI.projView.projTree.clearSelection() nwGUI.projView.projTree.clearSelection()
nwGUI.projView.projTree._getTreeItem("000000000000b").setSelected(True) nwGUI.projView.projTree._getTreeItem(C.hWorldRoot).setSelected(True)
nwGUI.projView.projTree.newTreeItem(nwItemType.FILE, None, isNote=True) nwGUI.projView.projTree.newTreeItem(nwItemType.FILE, None, isNote=True)
assert nwGUI.openSelectedItem() assert nwGUI.openSelectedItem()
@@ -312,9 +312,9 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir, mock
# Select the 'New Scene' file # Select the 'New Scene' file
nwGUI.switchFocus(nwWidget.TREE) nwGUI.switchFocus(nwWidget.TREE)
nwGUI.projView.projTree.clearSelection() nwGUI.projView.projTree.clearSelection()
nwGUI.projView.projTree._getTreeItem("0000000000008").setExpanded(True) nwGUI.projView.projTree._getTreeItem(C.hNovelRoot).setExpanded(True)
nwGUI.projView.projTree._getTreeItem("000000000000d").setExpanded(True) nwGUI.projView.projTree._getTreeItem(C.hChapterDir).setExpanded(True)
nwGUI.projView.projTree._getTreeItem("000000000000f").setSelected(True) nwGUI.projView.projTree._getTreeItem(C.hSceneDoc).setSelected(True)
assert nwGUI.openSelectedItem() assert nwGUI.openSelectedItem()
# Type something into the document # Type something into the document
@@ -492,8 +492,8 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, fncProj, refDir, outDir, mock
# Open and view the edited document # Open and view the edited document
nwGUI.switchFocus(nwWidget.VIEWER) nwGUI.switchFocus(nwWidget.VIEWER)
assert nwGUI.openDocument("000000000000f") assert nwGUI.openDocument(C.hSceneDoc)
assert nwGUI.viewDocument("000000000000f") assert nwGUI.viewDocument(C.hSceneDoc)
qtbot.wait(stepDelay) qtbot.wait(stepDelay)
assert nwGUI.saveProject() assert nwGUI.saveProject()
assert nwGUI.closeDocViewer() assert nwGUI.closeDocViewer()
@@ -561,8 +561,8 @@ def testGuiMain_FocusFullMode(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
assert nwGUI.toggleFocusMode() is False assert nwGUI.toggleFocusMode() is False
# Open a file in editor and viewer # Open a file in editor and viewer
assert nwGUI.openDocument("000000000000f") assert nwGUI.openDocument(C.hSceneDoc)
assert nwGUI.viewDocument("000000000000f") assert nwGUI.viewDocument(C.hSceneDoc)
# Enable focus mode # Enable focus mode
assert nwGUI.toggleFocusMode() is True assert nwGUI.toggleFocusMode() is True
+4 -4
View File
@@ -26,7 +26,7 @@ from PyQt5.QtCore import Qt
from PyQt5.QtGui import QTextCursor, QTextBlock from PyQt5.QtGui import QTextCursor, QTextBlock
from PyQt5.QtWidgets import QAction, QFileDialog, QMessageBox from PyQt5.QtWidgets import QAction, QFileDialog, QMessageBox
from tools import writeFile, buildTestProject from tools import C, writeFile, buildTestProject
from novelwriter.gui.doceditor import GuiDocEditor from novelwriter.gui.doceditor import GuiDocEditor
from novelwriter.enum import nwDocAction, nwDocInsert from novelwriter.enum import nwDocAction, nwDocInsert
@@ -467,8 +467,8 @@ def testGuiMenu_Insert(qtbot, monkeypatch, nwGUI, fncDir, fncProj, mockRnd):
buildTestProject(nwGUI, fncProj) buildTestProject(nwGUI, fncProj)
assert nwGUI.projView.projTree._getTreeItem("000000000000f") is not None assert nwGUI.projView.projTree._getTreeItem(C.hSceneDoc) is not None
assert nwGUI.openDocument("000000000000f") is True assert nwGUI.openDocument(C.hSceneDoc) is True
nwGUI.docEditor.clear() nwGUI.docEditor.clear()
# Test Faulty Inserts # Test Faulty Inserts
@@ -677,7 +677,7 @@ def testGuiMenu_Insert(qtbot, monkeypatch, nwGUI, fncDir, fncProj, mockRnd):
assert not nwGUI.importDocument() assert not nwGUI.importDocument()
# Open the document from before, and add some text to it # Open the document from before, and add some text to it
nwGUI.openDocument("000000000000f") nwGUI.openDocument(C.hSceneDoc)
nwGUI.docEditor.setText("Bar") nwGUI.docEditor.setText("Bar")
assert nwGUI.docEditor.getText() == "Bar" assert nwGUI.docEditor.getText() == "Bar"
+9 -9
View File
@@ -22,7 +22,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
import os import os
import pytest import pytest
from tools import buildTestProject, writeFile from tools import C, buildTestProject, writeFile
from PyQt5.QtGui import QFocusEvent from PyQt5.QtGui import QFocusEvent
from PyQt5.QtCore import Qt, QEvent from PyQt5.QtCore import Qt, QEvent
@@ -46,7 +46,7 @@ def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
nwGUI.switchFocus(nwWidget.TREE) nwGUI.switchFocus(nwWidget.TREE)
nwGUI.projView.projTree.clearSelection() nwGUI.projView.projTree.clearSelection()
nwGUI.projView.projTree._getTreeItem("000000000000a").setSelected(True) nwGUI.projView.projTree._getTreeItem(C.hCharRoot).setSelected(True)
nwGUI.projView.projTree.newTreeItem(nwItemType.FILE) nwGUI.projView.projTree.newTreeItem(nwItemType.FILE)
writeFile( writeFile(
@@ -94,7 +94,7 @@ def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
assert not topItem.isSelected() assert not topItem.isSelected()
topItem.setSelected(True) topItem.setSelected(True)
assert novelTree.selectedItems()[0] == topItem assert novelTree.selectedItems()[0] == topItem
assert novelView.getSelectedHandle() == ("000000000000c", 0) assert novelView.getSelectedHandle() == (C.hTitlePage, 0)
# Refresh using the slot for the butoom # Refresh using the slot for the butoom
novelBar._refreshNovelTree() novelBar._refreshNovelTree()
@@ -119,7 +119,7 @@ def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
assert scItem.isSelected() assert scItem.isSelected()
assert nwGUI.docEditor.docHandle() is None assert nwGUI.docEditor.docHandle() is None
novelTree._treeDoubleClick(scItem, 0) novelTree._treeDoubleClick(scItem, 0)
assert nwGUI.docEditor.docHandle() == "000000000000f" assert nwGUI.docEditor.docHandle() == C.hSceneDoc
# Open item with middle mouse button # Open item with middle mouse button
scItem.setSelected(True) scItem.setSelected(True)
@@ -136,7 +136,7 @@ def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
scItem.setData(novelTree.C_TITLE, novelTree.D_HANDLE, oldData) scItem.setData(novelTree.C_TITLE, novelTree.D_HANDLE, oldData)
qtbot.mouseClick(vPort, Qt.MiddleButton, pos=scRect.center(), delay=10) qtbot.mouseClick(vPort, Qt.MiddleButton, pos=scRect.center(), delay=10)
assert nwGUI.docViewer.docHandle() == "000000000000f" assert nwGUI.docViewer.docHandle() == C.hSceneDoc
# Last Column # Last Column
# =========== # ===========
@@ -144,26 +144,26 @@ def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
novelBar.setLastColType(NovelTreeColumn.HIDDEN) novelBar.setLastColType(NovelTreeColumn.HIDDEN)
assert novelTree.isColumnHidden(novelTree.C_EXTRA) is True assert novelTree.isColumnHidden(novelTree.C_EXTRA) is True
assert novelTree.lastColType == NovelTreeColumn.HIDDEN assert novelTree.lastColType == NovelTreeColumn.HIDDEN
assert novelTree._getLastColumnText("000000000000f", "T000001") == ("", "") assert novelTree._getLastColumnText(C.hSceneDoc, "T000001") == ("", "")
novelBar.setLastColType(NovelTreeColumn.POV) novelBar.setLastColType(NovelTreeColumn.POV)
assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False
assert novelTree.lastColType == NovelTreeColumn.POV assert novelTree.lastColType == NovelTreeColumn.POV
assert novelTree._getLastColumnText("000000000000f", "T000001") == ( assert novelTree._getLastColumnText(C.hSceneDoc, "T000001") == (
"Jane", "Point of View: Jane" "Jane", "Point of View: Jane"
) )
novelBar.setLastColType(NovelTreeColumn.FOCUS) novelBar.setLastColType(NovelTreeColumn.FOCUS)
assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False
assert novelTree.lastColType == NovelTreeColumn.FOCUS assert novelTree.lastColType == NovelTreeColumn.FOCUS
assert novelTree._getLastColumnText("000000000000f", "T000001") == ( assert novelTree._getLastColumnText(C.hSceneDoc, "T000001") == (
"Jane", "Focus: Jane" "Jane", "Focus: Jane"
) )
novelBar.setLastColType(NovelTreeColumn.PLOT) novelBar.setLastColType(NovelTreeColumn.PLOT)
assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False
assert novelTree.lastColType == NovelTreeColumn.PLOT assert novelTree.lastColType == NovelTreeColumn.PLOT
assert novelTree._getLastColumnText("000000000000f", "T000001") == ( assert novelTree._getLastColumnText(C.hSceneDoc, "T000001") == (
"", "Plot: " "", "Plot: "
) )
+92 -114
View File
@@ -22,7 +22,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
import os import os
import pytest import pytest
from tools import buildTestProject from tools import C, buildTestProject
from PyQt5.QtWidgets import QMessageBox, QMenu from PyQt5.QtWidgets import QMessageBox, QMenu
@@ -78,24 +78,24 @@ def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir, mockRnd)
assert "Did not find anywhere" in caplog.text assert "Did not find anywhere" in caplog.text
# Create new folder as child of Novel folder # Create new folder as child of Novel folder
projView.setSelectedHandle("0000000000008") projView.setSelectedHandle(C.hNovelRoot)
assert projView.projTree.newTreeItem(nwItemType.FOLDER) is True assert projView.projTree.newTreeItem(nwItemType.FOLDER) is True
assert theProject.tree["0000000000011"].itemParent == "0000000000008" assert theProject.tree["0000000000011"].itemParent == C.hNovelRoot
assert theProject.tree["0000000000011"].itemRoot == "0000000000008" assert theProject.tree["0000000000011"].itemRoot == C.hNovelRoot
assert theProject.tree["0000000000011"].itemClass == nwItemClass.NOVEL assert theProject.tree["0000000000011"].itemClass == nwItemClass.NOVEL
# Add a new file in the new folder # Add a new file in the new folder
projView.setSelectedHandle("0000000000011") projView.setSelectedHandle("0000000000011")
assert projView.projTree.newTreeItem(nwItemType.FILE) is True assert projView.projTree.newTreeItem(nwItemType.FILE) is True
assert theProject.tree["0000000000012"].itemParent == "0000000000011" assert theProject.tree["0000000000012"].itemParent == "0000000000011"
assert theProject.tree["0000000000012"].itemRoot == "0000000000008" assert theProject.tree["0000000000012"].itemRoot == C.hNovelRoot
assert theProject.tree["0000000000012"].itemClass == nwItemClass.NOVEL assert theProject.tree["0000000000012"].itemClass == nwItemClass.NOVEL
# Add a new chapter next to the other new file # Add a new chapter next to the other new file
projView.setSelectedHandle("0000000000012") projView.setSelectedHandle("0000000000012")
assert projView.projTree.newTreeItem(nwItemType.FILE, hLevel=2) is True assert projView.projTree.newTreeItem(nwItemType.FILE, hLevel=2) is True
assert theProject.tree["0000000000013"].itemParent == "0000000000011" assert theProject.tree["0000000000013"].itemParent == "0000000000011"
assert theProject.tree["0000000000013"].itemRoot == "0000000000008" assert theProject.tree["0000000000013"].itemRoot == C.hNovelRoot
assert theProject.tree["0000000000013"].itemClass == nwItemClass.NOVEL assert theProject.tree["0000000000013"].itemClass == nwItemClass.NOVEL
assert nwGUI.openDocument("0000000000013") assert nwGUI.openDocument("0000000000013")
assert nwGUI.docEditor.getText() == "## New Chapter\n\n" assert nwGUI.docEditor.getText() == "## New Chapter\n\n"
@@ -104,16 +104,16 @@ def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir, mockRnd)
projView.setSelectedHandle("0000000000012") projView.setSelectedHandle("0000000000012")
assert projView.projTree.newTreeItem(nwItemType.FILE, hLevel=3) is True assert projView.projTree.newTreeItem(nwItemType.FILE, hLevel=3) is True
assert theProject.tree["0000000000014"].itemParent == "0000000000011" assert theProject.tree["0000000000014"].itemParent == "0000000000011"
assert theProject.tree["0000000000014"].itemRoot == "0000000000008" assert theProject.tree["0000000000014"].itemRoot == C.hNovelRoot
assert theProject.tree["0000000000014"].itemClass == nwItemClass.NOVEL assert theProject.tree["0000000000014"].itemClass == nwItemClass.NOVEL
assert nwGUI.openDocument("0000000000014") assert nwGUI.openDocument("0000000000014")
assert nwGUI.docEditor.getText() == "### New Scene\n\n" assert nwGUI.docEditor.getText() == "### New Scene\n\n"
# Add a new file to the characters folder # Add a new file to the characters folder
projView.setSelectedHandle("000000000000a") projView.setSelectedHandle(C.hCharRoot)
assert projView.projTree.newTreeItem(nwItemType.FILE, hLevel=1, isNote=True) is True assert projView.projTree.newTreeItem(nwItemType.FILE, hLevel=1, isNote=True) is True
assert theProject.tree["0000000000015"].itemParent == "000000000000a" assert theProject.tree["0000000000015"].itemParent == C.hCharRoot
assert theProject.tree["0000000000015"].itemRoot == "000000000000a" assert theProject.tree["0000000000015"].itemRoot == C.hCharRoot
assert theProject.tree["0000000000015"].itemClass == nwItemClass.CHARACTER assert theProject.tree["0000000000015"].itemClass == nwItemClass.CHARACTER
assert nwGUI.openDocument("0000000000015") assert nwGUI.openDocument("0000000000015")
assert nwGUI.docEditor.getText() == "# New Note\n\n" assert nwGUI.docEditor.getText() == "# New Note\n\n"
@@ -145,8 +145,8 @@ def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir, mockRnd)
# Rename plot folder # Rename plot folder
with monkeypatch.context() as mp: with monkeypatch.context() as mp:
mp.setattr(GuiEditLabel, "getLabel", lambda *a, **k: ("Stuff", True)) mp.setattr(GuiEditLabel, "getLabel", lambda *a, **k: ("Stuff", True))
projTree.renameTreeItem("0000000000009") is True projTree.renameTreeItem(C.hPlotRoot) is True
assert theProject.tree["0000000000009"].itemName == "Stuff" assert theProject.tree[C.hPlotRoot].itemName == "Stuff"
# Rename invalid folder # Rename invalid folder
projTree.renameTreeItem("0000000000000") is False projTree.renameTreeItem("0000000000000") is False
@@ -192,12 +192,12 @@ def testGuiProjTree_MoveItems(qtbot, monkeypatch, nwGUI, fncDir, mockRnd):
# ============== # ==============
# Add some files # Add some files
nwTree.setSelectedHandle("000000000000d") nwTree.setSelectedHandle(C.hChapterDir)
assert nwTree.projTree.newTreeItem(nwItemType.FILE) is True assert nwTree.projTree.newTreeItem(nwItemType.FILE) is True
assert nwTree.projTree.newTreeItem(nwItemType.FILE) is True assert nwTree.projTree.newTreeItem(nwItemType.FILE) is True
assert nwTree.projTree.newTreeItem(nwItemType.FILE) is True assert nwTree.projTree.newTreeItem(nwItemType.FILE) is True
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010", "0000000000011", "0000000000012", "0000000000010", "0000000000011", "0000000000012",
] ]
@@ -206,75 +206,75 @@ def testGuiProjTree_MoveItems(qtbot, monkeypatch, nwGUI, fncDir, mockRnd):
assert nwTree.projTree.moveTreeItem(1) is False assert nwTree.projTree.moveTreeItem(1) is False
# Move second item up twice (should give same result) # Move second item up twice (should give same result)
nwTree.setSelectedHandle("000000000000f") nwTree.setSelectedHandle(C.hSceneDoc)
assert nwTree.projTree.moveTreeItem(-1) is True assert nwTree.projTree.moveTreeItem(-1) is True
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000f", "000000000000e", C.hChapterDir, C.hSceneDoc, C.hChapterDoc,
"0000000000010", "0000000000011", "0000000000012", "0000000000010", "0000000000011", "0000000000012",
] ]
assert nwTree.projTree.moveTreeItem(-1) is False assert nwTree.projTree.moveTreeItem(-1) is False
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000f", "000000000000e", C.hChapterDir, C.hSceneDoc, C.hChapterDoc,
"0000000000010", "0000000000011", "0000000000012", "0000000000010", "0000000000011", "0000000000012",
] ]
# Restore # Restore
assert nwTree.projTree.moveTreeItem(1) is True assert nwTree.projTree.moveTreeItem(1) is True
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010", "0000000000011", "0000000000012", "0000000000010", "0000000000011", "0000000000012",
] ]
# Move fifth item down twice (should give same result) # Move fifth item down twice (should give same result)
nwTree.setSelectedHandle("0000000000011") nwTree.setSelectedHandle("0000000000011")
assert nwTree.projTree.moveTreeItem(1) is True assert nwTree.projTree.moveTreeItem(1) is True
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010", "0000000000012", "0000000000011", "0000000000010", "0000000000012", "0000000000011",
] ]
assert nwTree.projTree.moveTreeItem(1) is False assert nwTree.projTree.moveTreeItem(1) is False
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010", "0000000000012", "0000000000011", "0000000000010", "0000000000012", "0000000000011",
] ]
# Restore # Restore
assert nwTree.projTree.moveTreeItem(-1) is True assert nwTree.projTree.moveTreeItem(-1) is True
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010", "0000000000011", "0000000000012", "0000000000010", "0000000000011", "0000000000012",
] ]
# Move down again, and restore via undo # Move down again, and restore via undo
nwTree.setSelectedHandle("0000000000011") nwTree.setSelectedHandle("0000000000011")
assert nwTree.projTree.moveTreeItem(1) is True assert nwTree.projTree.moveTreeItem(1) is True
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010", "0000000000012", "0000000000011", "0000000000010", "0000000000012", "0000000000011",
] ]
assert nwTree.projTree.undoLastMove() is True assert nwTree.projTree.undoLastMove() is True
assert nwTree.getTreeFromHandle("000000000000d") == [ assert nwTree.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010", "0000000000011", "0000000000012", "0000000000010", "0000000000011", "0000000000012",
] ]
# Root Folder # Root Folder
# =========== # ===========
nwTree.setSelectedHandle("0000000000008") nwTree.setSelectedHandle(C.hNovelRoot)
assert nwGUI.theProject.tree._treeOrder.index("0000000000008") == 0 assert nwGUI.theProject.tree._treeOrder.index(C.hNovelRoot) == 0
# Move novel folder up # Move novel folder up
assert nwTree.projTree.moveTreeItem(-1) is False assert nwTree.projTree.moveTreeItem(-1) is False
assert nwGUI.theProject.tree._treeOrder.index("0000000000008") == 0 assert nwGUI.theProject.tree._treeOrder.index(C.hNovelRoot) == 0
# Move novel folder down # Move novel folder down
assert nwTree.projTree.moveTreeItem(1) is True assert nwTree.projTree.moveTreeItem(1) is True
assert nwGUI.theProject.tree._treeOrder.index("0000000000008") == 1 assert nwGUI.theProject.tree._treeOrder.index(C.hNovelRoot) == 1
# Move novel folder up again # Move novel folder up again
assert nwTree.projTree.moveTreeItem(-1) is True assert nwTree.projTree.moveTreeItem(-1) is True
assert nwGUI.theProject.tree._treeOrder.index("0000000000008") == 0 assert nwGUI.theProject.tree._treeOrder.index(C.hNovelRoot) == 0
# Clean up # Clean up
# qtbot.stopForInteraction() # qtbot.stopForInteraction()
@@ -307,12 +307,12 @@ def testGuiProjTree_RequestDeleteItem(qtbot, caplog, monkeypatch, nwGUI, fncDir,
assert nwView.emptyTrash() is False assert nwView.emptyTrash() is False
# Add some files # Add some files
nwView.setSelectedHandle("000000000000d") nwView.setSelectedHandle(C.hChapterDir)
assert nwView.projTree.newTreeItem(nwItemType.FILE) is True assert nwView.projTree.newTreeItem(nwItemType.FILE) is True
assert nwView.projTree.newTreeItem(nwItemType.FILE) is True assert nwView.projTree.newTreeItem(nwItemType.FILE) is True
assert nwView.projTree.newTreeItem(nwItemType.FILE) is True assert nwView.projTree.newTreeItem(nwItemType.FILE) is True
assert nwView.getTreeFromHandle("000000000000d") == [ assert nwView.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010", "0000000000011", "0000000000012", "0000000000010", "0000000000011", "0000000000012",
] ]
@@ -337,8 +337,8 @@ def testGuiProjTree_RequestDeleteItem(qtbot, caplog, monkeypatch, nwGUI, fncDir,
# Delete Root Folders # Delete Root Folders
# =================== # ===================
assert nwView.requestDeleteItem("0000000000008") is False # Novel Root is blocked assert nwView.requestDeleteItem(C.hNovelRoot) is False # Novel Root is blocked
assert nwView.requestDeleteItem("000000000000a") is True # Character Root assert nwView.requestDeleteItem(C.hCharRoot) is True # Character Root
# Delete File # Delete File
# =========== # ===========
@@ -352,8 +352,8 @@ def testGuiProjTree_RequestDeleteItem(qtbot, caplog, monkeypatch, nwGUI, fncDir,
# Delete last two documents, which also adds the trash folder # Delete last two documents, which also adds the trash folder
assert nwView.requestDeleteItem("0000000000012") is True assert nwView.requestDeleteItem("0000000000012") is True
assert nwView.requestDeleteItem("0000000000011") is True assert nwView.requestDeleteItem("0000000000011") is True
assert nwView.getTreeFromHandle("000000000000d") == [ assert nwView.getTreeFromHandle(C.hChapterDir) == [
"000000000000d", "000000000000e", "000000000000f", C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010" "0000000000010"
] ]
trashHandle = nwGUI.theProject.tree.trashRoot() trashHandle = nwGUI.theProject.tree.trashRoot()
@@ -389,18 +389,14 @@ def testGuiProjTree_MoveItemToTrash(qtbot, caplog, monkeypatch, nwGUI, fncDir, m
prjDir = os.path.join(fncDir, "project") prjDir = os.path.join(fncDir, "project")
buildTestProject(nwGUI, prjDir) buildTestProject(nwGUI, prjDir)
hInvalid = "0000000000000"
hNovelRoot = "0000000000008"
hTitlePage = "000000000000c"
# Invalid item # Invalid item
caplog.clear() caplog.clear()
assert projTree.moveItemToTrash(hInvalid) is False assert projTree.moveItemToTrash(C.hInvalid) is False
assert "Could not find tree item for deletion" in caplog.text assert "Could not find tree item for deletion" in caplog.text
# Root folders cannot be moved to Trash # Root folders cannot be moved to Trash
caplog.clear() caplog.clear()
assert projTree.moveItemToTrash(hNovelRoot) is False assert projTree.moveItemToTrash(C.hNovelRoot) is False
assert "Root folders cannot be moved to Trash" in caplog.text assert "Root folders cannot be moved to Trash" in caplog.text
# Block adding trash folder # Block adding trash folder
@@ -408,8 +404,8 @@ def testGuiProjTree_MoveItemToTrash(qtbot, caplog, monkeypatch, nwGUI, fncDir, m
projTree._addTrashRoot = lambda *a: None projTree._addTrashRoot = lambda *a: None
caplog.clear() caplog.clear()
assert projTree.moveItemToTrash(hTitlePage) is False assert projTree.moveItemToTrash(C.hTitlePage) is False
assert theProject.tree.isTrash(hTitlePage) is False assert theProject.tree.isTrash(C.hTitlePage) is False
assert "Could not delete item" in caplog.text assert "Could not delete item" in caplog.text
projTree._addTrashRoot = funcPointer projTree._addTrashRoot = funcPointer
@@ -417,16 +413,16 @@ def testGuiProjTree_MoveItemToTrash(qtbot, caplog, monkeypatch, nwGUI, fncDir, m
# User cancels action # User cancels action
with monkeypatch.context() as mp: with monkeypatch.context() as mp:
mp.setattr(QMessageBox, "question", lambda *a: QMessageBox.No) mp.setattr(QMessageBox, "question", lambda *a: QMessageBox.No)
assert projTree.moveItemToTrash(hTitlePage) is False assert projTree.moveItemToTrash(C.hTitlePage) is False
assert theProject.tree.isTrash(hTitlePage) is False assert theProject.tree.isTrash(C.hTitlePage) is False
# Move a document to Trash # Move a document to Trash
assert projTree.moveItemToTrash(hTitlePage) is True assert projTree.moveItemToTrash(C.hTitlePage) is True
assert theProject.tree.isTrash(hTitlePage) is True assert theProject.tree.isTrash(C.hTitlePage) is True
# Cannot be moved again # Cannot be moved again
caplog.clear() caplog.clear()
assert projTree.moveItemToTrash(hTitlePage) is False assert projTree.moveItemToTrash(C.hTitlePage) is False
assert "Item is already in the Trash folder" in caplog.text assert "Item is already in the Trash folder" in caplog.text
nwGUI.closeProject() nwGUI.closeProject()
@@ -452,48 +448,40 @@ def testGuiProjTree_PermanentlyDeleteItem(qtbot, caplog, monkeypatch, nwGUI, fnc
prjDir = os.path.join(fncDir, "project") prjDir = os.path.join(fncDir, "project")
buildTestProject(nwGUI, prjDir) buildTestProject(nwGUI, prjDir)
hInvalid = "0000000000000"
hNovelRoot = "0000000000008"
hPlotRoot = "0000000000009"
hTitlePage = "000000000000c"
hChapterDir = "000000000000d"
hChapterDoc = "000000000000e"
hSceneDoc = "000000000000f"
# Invalid item # Invalid item
caplog.clear() caplog.clear()
assert projTree.permanentlyDeleteItem(hInvalid) is False assert projTree.permanentlyDeleteItem(C.hInvalid) is False
assert "Could not find tree item for deletion" in caplog.text assert "Could not find tree item for deletion" in caplog.text
# Not deleting root item in use # Not deleting root item in use
caplog.clear() caplog.clear()
assert projTree.permanentlyDeleteItem(hNovelRoot) is False assert projTree.permanentlyDeleteItem(C.hNovelRoot) is False
assert "Root folders can only be deleted when they are empty" in caplog.text assert "Root folders can only be deleted when they are empty" in caplog.text
assert hNovelRoot in theProject.tree assert C.hNovelRoot in theProject.tree
# Deleting unused root item is allowed # Deleting unused root item is allowed
caplog.clear() caplog.clear()
assert projTree.permanentlyDeleteItem(hPlotRoot) is True assert projTree.permanentlyDeleteItem(C.hPlotRoot) is True
assert hPlotRoot not in theProject.tree assert C.hPlotRoot not in theProject.tree
# User cancels action # User cancels action
with monkeypatch.context() as mp: with monkeypatch.context() as mp:
mp.setattr(QMessageBox, "question", lambda *a: QMessageBox.No) mp.setattr(QMessageBox, "question", lambda *a: QMessageBox.No)
assert projTree.permanentlyDeleteItem(hTitlePage) is False assert projTree.permanentlyDeleteItem(C.hTitlePage) is False
assert hTitlePage in theProject.tree assert C.hTitlePage in theProject.tree
# Deleting file is OK, and if it is open, it should close # Deleting file is OK, and if it is open, it should close
assert nwGUI.openDocument(hTitlePage) is True assert nwGUI.openDocument(C.hTitlePage) is True
assert nwGUI.docEditor.docHandle() == hTitlePage assert nwGUI.docEditor.docHandle() == C.hTitlePage
assert projTree.permanentlyDeleteItem(hTitlePage) is True assert projTree.permanentlyDeleteItem(C.hTitlePage) is True
assert hTitlePage not in theProject.tree assert C.hTitlePage not in theProject.tree
assert nwGUI.docEditor.docHandle() is None assert nwGUI.docEditor.docHandle() is None
# Deleting folder + files recursiely is ok # Deleting folder + files recursiely is ok
assert projTree.permanentlyDeleteItem(hChapterDir) is True assert projTree.permanentlyDeleteItem(C.hChapterDir) is True
assert hChapterDir not in theProject.tree assert C.hChapterDir not in theProject.tree
assert hChapterDoc not in theProject.tree assert C.hChapterDoc not in theProject.tree
assert hSceneDoc not in theProject.tree assert C.hSceneDoc not in theProject.tree
nwGUI.closeProject() nwGUI.closeProject()
@@ -523,38 +511,33 @@ def testGuiProjTree_EmptyTrash(qtbot, caplog, monkeypatch, nwGUI, fncDir, mockRn
prjDir = os.path.join(fncDir, "project") prjDir = os.path.join(fncDir, "project")
buildTestProject(nwGUI, prjDir) buildTestProject(nwGUI, prjDir)
hTitlePage = "000000000000c"
hChapterDir = "000000000000d"
hChapterDoc = "000000000000e"
hSceneDoc = "000000000000f"
# No Trash folder # No Trash folder
assert projTree.emptyTrash() is False assert projTree.emptyTrash() is False
# Move some documents to Trash # Move some documents to Trash
assert projTree.moveItemToTrash(hTitlePage) is True assert projTree.moveItemToTrash(C.hTitlePage) is True
assert projTree.moveItemToTrash(hChapterDir) is True assert projTree.moveItemToTrash(C.hChapterDir) is True
assert theProject.tree.isTrash(hTitlePage) is True assert theProject.tree.isTrash(C.hTitlePage) is True
assert theProject.tree.isTrash(hChapterDir) is True assert theProject.tree.isTrash(C.hChapterDir) is True
assert theProject.tree.isTrash(hChapterDoc) is True assert theProject.tree.isTrash(C.hChapterDoc) is True
assert theProject.tree.isTrash(hSceneDoc) is True assert theProject.tree.isTrash(C.hSceneDoc) is True
# User cancels # User cancels
with monkeypatch.context() as mp: with monkeypatch.context() as mp:
mp.setattr(QMessageBox, "question", lambda *a: QMessageBox.No) mp.setattr(QMessageBox, "question", lambda *a: QMessageBox.No)
assert projTree.emptyTrash() is False assert projTree.emptyTrash() is False
assert hTitlePage in theProject.tree assert C.hTitlePage in theProject.tree
assert hChapterDir in theProject.tree assert C.hChapterDir in theProject.tree
assert hChapterDoc in theProject.tree assert C.hChapterDoc in theProject.tree
assert hSceneDoc in theProject.tree assert C.hSceneDoc in theProject.tree
# Run again to empty all items # Run again to empty all items
assert projTree.emptyTrash() is True assert projTree.emptyTrash() is True
assert hTitlePage not in theProject.tree assert C.hTitlePage not in theProject.tree
assert hChapterDir not in theProject.tree assert C.hChapterDir not in theProject.tree
assert hChapterDoc not in theProject.tree assert C.hChapterDoc not in theProject.tree
assert hSceneDoc not in theProject.tree assert C.hSceneDoc not in theProject.tree
# Running Emtpy Trash again is cancelled due to empty folder # Running Emtpy Trash again is cancelled due to empty folder
assert projTree.emptyTrash() is False assert projTree.emptyTrash() is False
@@ -584,13 +567,8 @@ def testGuiProjTree_ContextMenu(qtbot, monkeypatch, nwGUI, fncDir, mockRnd):
buildTestProject(nwGUI, prjDir) buildTestProject(nwGUI, prjDir)
# Handles for new objects # Handles for new objects
hNovelRoot = "0000000000008" hCharNote = "0000000000011"
hTitlePage = "000000000000c" hNovelNote = "0000000000012"
hChapterDir = "000000000000d"
hChapterFile = "000000000000e"
hCharRoot = "000000000000a"
hCharNote = "0000000000011"
hNovelNote = "0000000000012"
projTree = nwGUI.projView.projTree projTree = nwGUI.projView.projTree
projTree.setExpandedFromHandle(None, True) projTree.setExpandedFromHandle(None, True)
@@ -598,9 +576,9 @@ def testGuiProjTree_ContextMenu(qtbot, monkeypatch, nwGUI, fncDir, mockRnd):
projTree._addTrashRoot() projTree._addTrashRoot()
hTrashRoot = projTree.theProject.tree.trashRoot() hTrashRoot = projTree.theProject.tree.trashRoot()
projTree.setSelectedHandle(hCharRoot) projTree.setSelectedHandle(C.hCharRoot)
projTree.newTreeItem(nwItemType.FILE) projTree.newTreeItem(nwItemType.FILE)
projTree.setSelectedHandle(hNovelRoot) projTree.setSelectedHandle(C.hNovelRoot)
projTree.newTreeItem(nwItemType.FILE, isNote=True) projTree.newTreeItem(nwItemType.FILE, isNote=True)
def itemPos(tHandle): def itemPos(tHandle):
@@ -611,16 +589,16 @@ def testGuiProjTree_ContextMenu(qtbot, monkeypatch, nwGUI, fncDir, mockRnd):
# Generate the possible menu combinarions # Generate the possible menu combinarions
assert projTree._openContextMenu(itemPos(hTrashRoot)) is True assert projTree._openContextMenu(itemPos(hTrashRoot)) is True
assert projTree._openContextMenu(itemPos(hNovelRoot)) is True assert projTree._openContextMenu(itemPos(C.hNovelRoot)) is True
assert projTree._openContextMenu(itemPos(hNovelNote)) is True assert projTree._openContextMenu(itemPos(hNovelNote)) is True
assert projTree._openContextMenu(itemPos(hTitlePage)) is True assert projTree._openContextMenu(itemPos(C.hTitlePage)) is True
assert projTree._openContextMenu(itemPos(hChapterDir)) is True assert projTree._openContextMenu(itemPos(C.hChapterDir)) is True
assert projTree._openContextMenu(itemPos(hChapterFile)) is True assert projTree._openContextMenu(itemPos(C.hChapterDoc)) is True
assert projTree._openContextMenu(itemPos(hCharRoot)) is True assert projTree._openContextMenu(itemPos(C.hCharRoot)) is True
assert projTree._openContextMenu(itemPos(hCharNote)) is True assert projTree._openContextMenu(itemPos(hCharNote)) is True
# Check the keyboard shortcut handler as well # Check the keyboard shortcut handler as well
projTree.setSelectedHandle(hNovelRoot) projTree.setSelectedHandle(C.hNovelRoot)
assert projTree.openContextOnSelected() is True assert projTree.openContextOnSelected() is True
projTree.clearSelection() projTree.clearSelection()
assert projTree.openContextOnSelected() is False assert projTree.openContextOnSelected() is False
+2 -2
View File
@@ -22,7 +22,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
import time import time
import pytest import pytest
from tools import buildTestProject from tools import C, buildTestProject
from PyQt5.QtWidgets import QMessageBox from PyQt5.QtWidgets import QMessageBox
@@ -37,7 +37,7 @@ def testGuiStatusBar_Main(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
monkeypatch.setattr(QMessageBox, "question", lambda *a: QMessageBox.Yes) monkeypatch.setattr(QMessageBox, "question", lambda *a: QMessageBox.Yes)
buildTestProject(nwGUI, fncProj) buildTestProject(nwGUI, fncProj)
cHandle = nwGUI.theProject.newFile("A Note", "000000000000a") cHandle = nwGUI.theProject.newFile("A Note", C.hCharRoot)
newDoc = NWDoc(nwGUI.theProject, cHandle) newDoc = NWDoc(nwGUI.theProject, cHandle)
newDoc.writeDocument("# A Note\n\n") newDoc.writeDocument("# A Note\n\n")
nwGUI.projView.revealNewTreeItem(cHandle) nwGUI.projView.revealNewTreeItem(cHandle)
+2 -2
View File
@@ -21,7 +21,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
import pytest import pytest
from tools import getGuiItem, buildTestProject from tools import C, getGuiItem, buildTestProject
from PyQt5.QtWidgets import QAction, QMessageBox from PyQt5.QtWidgets import QAction, QMessageBox
@@ -41,7 +41,7 @@ def testToolLipsum_Main(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
# Create a new project # Create a new project
buildTestProject(nwGUI, fncProj) buildTestProject(nwGUI, fncProj)
assert nwGUI.openDocument("000000000000f") is True assert nwGUI.openDocument(C.hSceneDoc) is True
assert len(nwGUI.docEditor.getText()) == 15 assert len(nwGUI.docEditor.getText()) == 15
# Open the tool # Open the tool
+16
View File
@@ -28,6 +28,22 @@ from PyQt5.QtWidgets import qApp
XML_IGNORE = ("<novelWriterXML", "<saveCount", "<autoCount", "<editTime") XML_IGNORE = ("<novelWriterXML", "<saveCount", "<autoCount", "<editTime")
class C:
# Handles from test project when random generator is mocked
hInvalid = "0000000000000"
hNovelRoot = "0000000000008"
hPlotRoot = "0000000000009"
hCharRoot = "000000000000a"
hWorldRoot = "000000000000b"
hTitlePage = "000000000000c"
hChapterDir = "000000000000d"
hChapterDoc = "000000000000e"
hSceneDoc = "000000000000f"
# END Class C
def cmpFiles(fileOne, fileTwo, ignoreLines=None, ignoreStart=None): def cmpFiles(fileOne, fileTwo, ignoreLines=None, ignoreStart=None):
"""Compare two files, but optionally ignore lines given by a list. """Compare two files, but optionally ignore lines given by a list.
""" """