Update tests

This commit is contained in:
Veronica Berglyd Olsen
2024-11-20 18:48:54 +01:00
parent bbe8683d59
commit 4897f6ad69
4 changed files with 72 additions and 72 deletions
+1 -1
View File
@@ -223,7 +223,7 @@ def testCoreBuildSettings_Filters(mockGUI, fncPath: Path, mockRnd):
build = BuildSettings()
# Add some more items
hArchRoot = project.newRoot(nwItemClass.ARCHIVE, "Archive")
hArchRoot = project.newRoot(nwItemClass.ARCHIVE)
hPlotDoc = project.newFile("Main Plot", C.hPlotRoot)
hCharDoc = project.newFile("Jane Doe", C.hCharRoot)
+67 -66
View File
@@ -54,33 +54,42 @@ def testCoreTools_DocMerger(monkeypatch, mockGUI, fncPath, tstPaths, mockRnd, ip
# =====================
hChapter1 = project.newFile("Chapter 1", C.hNovelRoot)
hSceneOne11 = project.newFile("Scene 1.1", hChapter1) # type: ignore
hSceneOne12 = project.newFile("Scene 1.2", hChapter1) # type: ignore
hSceneOne13 = project.newFile("Scene 1.3", hChapter1) # type: ignore
assert hChapter1 is not None
hSceneOne11 = project.newFile("Scene 1.1", hChapter1)
hSceneOne12 = project.newFile("Scene 1.2", hChapter1)
hSceneOne13 = project.newFile("Scene 1.3", hChapter1)
assert hSceneOne11 is not None
assert hSceneOne12 is not None
assert hSceneOne13 is not None
docText1 = "\n\n".join(ipsumText[0:2]) + "\n\n"
docText2 = "\n\n".join(ipsumText[1:3]) + "\n\n"
docText3 = "\n\n".join(ipsumText[2:4]) + "\n\n"
docText4 = "\n\n".join(ipsumText[3:5]) + "\n\n"
project.writeNewFile(hChapter1, 2, True, docText1) # type: ignore
project.writeNewFile(hSceneOne11, 3, True, docText2) # type: ignore
project.writeNewFile(hSceneOne12, 3, True, docText3) # type: ignore
project.writeNewFile(hSceneOne13, 3, True, docText4) # type: ignore
project.writeNewFile(hChapter1, 2, True, docText1)
project.writeNewFile(hSceneOne11, 3, True, docText2)
project.writeNewFile(hSceneOne12, 3, True, docText3)
project.writeNewFile(hSceneOne13, 3, True, docText4)
# Basic Checks
# ============
docMerger = DocMerger(project)
assert docMerger.targetHandle is None
# No writing without a target set
assert docMerger.writeTargetDoc() is False
assert docMerger.targetHandle is None
# Cannot append invalid handle
assert docMerger.appendText(C.hInvalid, True, "Merge") is False
docMerger.appendText(C.hInvalid, True, "Merge")
assert docMerger._text == []
# Cannot create new target from invalid handle
assert docMerger.newTargetDoc(C.hInvalid, "Test") is None
docMerger.newTargetDoc(C.hInvalid, "Test")
assert docMerger.targetHandle is None
# Merge to New
# ============
@@ -89,12 +98,17 @@ def testCoreTools_DocMerger(monkeypatch, mockGUI, fncPath, tstPaths, mockRnd, ip
testFile = tstPaths.outDir / "coreDocTools_DocMerger_0000000000014.nwd"
compFile = tstPaths.refDir / "coreDocTools_DocMerger_0000000000014.nwd"
assert docMerger.newTargetDoc(hChapter1, "All of Chapter 1") == "0000000000014" # type: ignore
docMerger.newTargetDoc(hChapter1, "All of Chapter 1")
assert docMerger.targetHandle == "0000000000014"
assert docMerger.appendText(hChapter1, True, "Merge") is True # type: ignore
assert docMerger.appendText(hSceneOne11, True, "Merge") is True # type: ignore
assert docMerger.appendText(hSceneOne12, True, "Merge") is True # type: ignore
assert docMerger.appendText(hSceneOne13, True, "Merge") is True # type: ignore
docMerger.appendText(hChapter1, True, "Merge")
assert len(docMerger._text) == 1
docMerger.appendText(hSceneOne11, True, "Merge")
assert len(docMerger._text) == 2
docMerger.appendText(hSceneOne12, True, "Merge")
assert len(docMerger._text) == 3
docMerger.appendText(hSceneOne13, True, "Merge")
assert len(docMerger._text) == 4
# Block writing and check error handling
with monkeypatch.context() as mp:
@@ -115,11 +129,14 @@ def testCoreTools_DocMerger(monkeypatch, mockGUI, fncPath, tstPaths, mockRnd, ip
testFile = tstPaths.outDir / "coreDocTools_DocMerger_0000000000010.nwd"
compFile = tstPaths.refDir / "coreDocTools_DocMerger_0000000000010.nwd"
docMerger.setTargetDoc(hChapter1) # type: ignore
docMerger.setTargetDoc(hChapter1)
assert docMerger.appendText(hSceneOne11, True, "Merge") is True # type: ignore
assert docMerger.appendText(hSceneOne12, True, "Merge") is True # type: ignore
assert docMerger.appendText(hSceneOne13, True, "Merge") is True # type: ignore
docMerger.appendText(hSceneOne11, True, "Merge")
assert len(docMerger._text) == 1
docMerger.appendText(hSceneOne12, True, "Merge")
assert len(docMerger._text) == 2
docMerger.appendText(hSceneOne13, True, "Merge")
assert len(docMerger._text) == 3
assert docMerger.writeTargetDoc() is True
copyfile(saveFile, testFile)
@@ -180,50 +197,46 @@ def testCoreTools_DocSplitter(monkeypatch, mockGUI, fncPath, mockRnd, ipsumText)
docSplitter.splitDocument(splitData, docRaw) # type: ignore
for i, (lineNo, hLevel, hLabel) in enumerate(splitData):
assert docSplitter._rawData[i] == (docRaw[lineNo:lineNo+4], hLevel, hLabel)
assert project.tree.subTree(C.hNovelRoot) == [
"000000000000c", "000000000000d", "000000000000e", "000000000000f", "0000000000010",
]
# Test flat split into same parent
docSplitter.setParentItem(C.hNovelRoot)
assert docSplitter._inFolder is False
assert docSplitter._parHandle is not None
# Cause write error on all chunks
with monkeypatch.context() as mp:
mp.setattr("builtins.open", causeOSError)
resStatus = []
for status, _, _ in docSplitter.writeDocuments(False):
resStatus.append(status)
assert not any(resStatus)
assert not any(docSplitter.writeDocuments(False))
assert docSplitter.getError() == "OSError: Mock OSError"
assert project.tree.subTree(C.hNovelRoot) == [
"000000000000c", "000000000000d", "000000000000e", "000000000000f", "0000000000010",
"0000000000011", "0000000000012", "0000000000013", "0000000000014", "0000000000015",
"0000000000016", "0000000000017", "0000000000018", "0000000000019", "000000000001a",
]
# Generate as flat structure in root folder
resStatus = []
resDocHandle = []
resNearHandle = []
for status, dHandle, nHandle in docSplitter.writeDocuments(False):
resStatus.append(status)
resDocHandle.append(dHandle)
resNearHandle.append(nHandle)
resStatus = list(docSplitter.writeDocuments(False))
resDocHandle = project.tree.subTree(C.hNovelRoot)
assert all(resStatus)
assert resDocHandle == [
"000000000000c", "000000000000d", "000000000000e", "000000000000f", "0000000000010",
"0000000000011", "0000000000012", "0000000000013", "0000000000014", "0000000000015",
"0000000000016", "0000000000017", "0000000000018", "0000000000019", "000000000001a",
"000000000001b", "000000000001c", "000000000001d", "000000000001e", "000000000001f",
"0000000000020", "0000000000021", "0000000000022", "0000000000023", "0000000000024",
]
assert resNearHandle == [ # Each document should be next to the previous one
hSplitDoc, "000000000001b", "000000000001c", "000000000001d", "000000000001e",
"000000000001f", "0000000000020", "0000000000021", "0000000000022", "0000000000023",
]
# Generate as hierarchy in new folder
hSplitFolder = docSplitter.newParentFolder(C.hNovelRoot, "Split Folder")
docSplitter.newParentFolder(C.hNovelRoot, "Split Folder")
assert docSplitter._inFolder is True
assert docSplitter._parHandle is not None
resStatus = []
resDocHandle = []
resNearHandle = []
for status, dHandle, nHandle in docSplitter.writeDocuments(True):
resStatus.append(status)
resDocHandle.append(dHandle)
resNearHandle.append(nHandle)
resStatus = list(docSplitter.writeDocuments(True))
resDocHandle = project.tree.subTree(docSplitter._parHandle)
assert all(resStatus)
assert resDocHandle == [
@@ -238,18 +251,6 @@ def testCoreTools_DocSplitter(monkeypatch, mockGUI, fncPath, mockRnd, ipsumText)
"000000000002e", # Scene Four
"000000000002f", # Scene Five
]
assert resNearHandle == [
hSplitFolder, # Part One is after Split Folder
"0000000000026", # Chapter One is after Part One
"0000000000027", # Scene One is after Chapter One
"0000000000028", # Section One is after Scene One
"0000000000029", # Section Two is after Section One
"0000000000028", # Scene Two is after Scene One
"0000000000027", # Chapter Two is after Chapter One
"000000000002c", # Scene Three is after Chapter Two
"000000000002d", # Scene Four is after Scene Three
"000000000002e", # Scene Five is after Scene Four
]
# Check that status and importance has been preserved
for rHandle in resDocHandle:
@@ -292,9 +293,9 @@ def testCoreTools_DocDuplicator(mockGUI, fncPath, tstPaths, mockRnd):
# A new copy is created
assert list(dup.duplicate([C.hSceneDoc])) == [
("0000000000010", C.hSceneDoc), # The Scene
"0000000000010" # The Scene
]
assert project.tree._order == [
assert list(project.tree._items.keys()) == [
C.hNovelRoot, C.hPlotRoot, C.hCharRoot, C.hWorldRoot,
C.hTitlePage, C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010",
@@ -311,11 +312,11 @@ def testCoreTools_DocDuplicator(mockGUI, fncPath, tstPaths, mockRnd):
# The folder is copied, with two docs
assert list(dup.duplicate([C.hChapterDir, C.hChapterDoc, C.hSceneDoc])) == [
("0000000000011", C.hChapterDir), # The Folder
("0000000000012", None), # The Chapter
("0000000000013", None), # The Scene
"0000000000011", # The Folder
"0000000000012", # The Chapter
"0000000000013", # The Scene
]
assert project.tree._order == [
assert list(project.tree._items.keys()) == [
C.hNovelRoot, C.hPlotRoot, C.hCharRoot, C.hWorldRoot,
C.hTitlePage, C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010",
@@ -340,13 +341,13 @@ def testCoreTools_DocDuplicator(mockGUI, fncPath, tstPaths, mockRnd):
assert list(dup.duplicate(
[C.hNovelRoot, C.hTitlePage, C.hChapterDir, C.hChapterDoc, C.hSceneDoc]
)) == [
("0000000000014", C.hNovelRoot), # The Root
("0000000000015", None), # The Title Page
("0000000000016", None), # The Folder
("0000000000017", None), # The Chapter
("0000000000018", None), # The Scene
"0000000000014", # The Root
"0000000000015", # The Title Page
"0000000000016", # The Folder
"0000000000017", # The Chapter
"0000000000018", # The Scene
]
assert project.tree._order == [
assert list(project.tree._items.keys()) == [
C.hNovelRoot, C.hPlotRoot, C.hCharRoot, C.hWorldRoot,
C.hTitlePage, C.hChapterDir, C.hChapterDoc, C.hSceneDoc,
"0000000000010",
@@ -388,7 +389,7 @@ def testCoreTools_DocDuplicator(mockGUI, fncPath, tstPaths, mockRnd):
assert isinstance(content, Path)
(content / "0000000000019.nwd").touch()
assert (content / "0000000000019.nwd").exists()
assert list(dup.duplicate([C.hChapterDoc, C.hSceneDoc])) == []
assert list(dup.duplicate([C.hChapterDoc, C.hSceneDoc])) == ["0000000000019", "000000000001a"]
# Save and Close
project.saveProject()
@@ -121,8 +121,6 @@ def testToolBuildSettings_Filter(qtbot, nwGUI, projPath, mockRnd):
hPlotDoc = SHARED.project.newFile("Main Plot", C.hPlotRoot)
hCharDoc = SHARED.project.newFile("Jane Doe", C.hCharRoot)
nwGUI.projView.projTree.revealNewTreeItem(hPlotDoc)
nwGUI.projView.projTree.revealNewTreeItem(hCharDoc)
SHARED.project.tree[hPlotDoc].setActive(False) # type: ignore
# Create the dialog and populate it
+4 -3
View File
@@ -38,12 +38,13 @@ def testToolNovelDetails_Main(qtbot, nwGUI, prjLipsum, ipsumText):
# Add a second Novel folder
project = SHARED.project
secondText = "#! Second\n\n" + "\n\n".join(ipsumText)
sHandle = project.newRoot(nwItemClass.NOVEL, "Second")
sHandle = project.newRoot(nwItemClass.NOVEL)
dHandle = project.newFile("Document", sHandle)
if item := project.tree[sHandle]:
item.setName("Second")
project.storage.getDocument(dHandle).writeDocument(secondText)
project.index.reIndexHandle(dHandle)
nwGUI.projView.projTree.revealNewTreeItem(sHandle)
nwGUI.projView.projTree.revealNewTreeItem(dHandle)
# Create the dialog
nwGUI.mainMenu.aNovelDetails.activate(QAction.ActionEvent.Trigger)