Update the NWProject class test for status and import labels
This commit is contained in:
@@ -686,13 +686,127 @@ def testCoreProject_AccessItems(nwMinimal, mockGUI):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.core
|
@pytest.mark.core
|
||||||
def testCoreProject_Methods(monkeypatch, nwMinimal, mockGUI, tmpDir):
|
def testCoreProject_StatusImport(mockGUI, fncDir, constData):
|
||||||
|
"""Test the status and importance flag handling.
|
||||||
|
"""
|
||||||
|
theProject = NWProject(mockGUI)
|
||||||
|
random.seed(42)
|
||||||
|
theProject.projTree.setSeed(42)
|
||||||
|
assert theProject.newProject({"projPath": fncDir}) is True
|
||||||
|
|
||||||
|
# Change Status
|
||||||
|
# =============
|
||||||
|
|
||||||
|
theProject.projTree["44cb730c42048"].setStatus("Finished")
|
||||||
|
theProject.projTree["71ee45a3c0db9"].setStatus("Draft")
|
||||||
|
theProject.projTree["811786ad1ae74"].setStatus("Note")
|
||||||
|
theProject.projTree["25fc0e7096fc6"].setStatus("Finished")
|
||||||
|
|
||||||
|
assert theProject.projTree["44cb730c42048"].itemStatus == constData.statusKeys[3]
|
||||||
|
assert theProject.projTree["71ee45a3c0db9"].itemStatus == constData.statusKeys[2]
|
||||||
|
assert theProject.projTree["811786ad1ae74"].itemStatus == constData.statusKeys[1]
|
||||||
|
assert theProject.projTree["25fc0e7096fc6"].itemStatus == constData.statusKeys[3]
|
||||||
|
|
||||||
|
newList = [
|
||||||
|
{"key": constData.statusKeys[0], "name": "New", "cols": (1, 1, 1)},
|
||||||
|
{"key": constData.statusKeys[1], "name": "Draft", "cols": (2, 2, 2)}, # These are swapped
|
||||||
|
{"key": constData.statusKeys[2], "name": "Note", "cols": (3, 3, 3)}, # These are swapped
|
||||||
|
{"key": constData.statusKeys[3], "name": "Edited", "cols": (4, 4, 4)}, # Renamed
|
||||||
|
{"key": None, "name": "Finished", "cols": (5, 5, 5)}, # New, reused name
|
||||||
|
]
|
||||||
|
assert theProject.setStatusColours(None, None) is False
|
||||||
|
assert theProject.setStatusColours([], []) is False
|
||||||
|
assert theProject.setStatusColours(newList, []) is True
|
||||||
|
|
||||||
|
assert theProject.statusItems.name(constData.statusKeys[0]) == "New"
|
||||||
|
assert theProject.statusItems.name(constData.statusKeys[1]) == "Draft"
|
||||||
|
assert theProject.statusItems.name(constData.statusKeys[2]) == "Note"
|
||||||
|
assert theProject.statusItems.name(constData.statusKeys[3]) == "Edited"
|
||||||
|
assert theProject.statusItems.cols(constData.statusKeys[0]) == (1, 1, 1)
|
||||||
|
assert theProject.statusItems.cols(constData.statusKeys[1]) == (2, 2, 2)
|
||||||
|
assert theProject.statusItems.cols(constData.statusKeys[2]) == (3, 3, 3)
|
||||||
|
assert theProject.statusItems.cols(constData.statusKeys[3]) == (4, 4, 4)
|
||||||
|
|
||||||
|
# Check the new entry
|
||||||
|
lastKey = theProject.statusItems.check("Finished")
|
||||||
|
assert lastKey == "sbc8960"
|
||||||
|
assert theProject.statusItems.name(lastKey) == "Finished"
|
||||||
|
assert theProject.statusItems.cols(lastKey) == (5, 5, 5)
|
||||||
|
|
||||||
|
# Delete last entry
|
||||||
|
assert theProject.setStatusColours([], [lastKey]) is True
|
||||||
|
assert theProject.statusItems.name(lastKey) == "New"
|
||||||
|
|
||||||
|
# Change Importance
|
||||||
|
# =================
|
||||||
|
|
||||||
|
fHandle = theProject.newFile("Jane Doe", nwItemClass.CHARACTER, "73475cb40a568")
|
||||||
|
theProject.projTree[fHandle].setImport("Main")
|
||||||
|
|
||||||
|
assert theProject.projTree[fHandle].itemImport == constData.importKeys[3]
|
||||||
|
newList = [
|
||||||
|
{"key": constData.importKeys[0], "name": "New", "cols": (1, 1, 1)},
|
||||||
|
{"key": constData.importKeys[1], "name": "Minor", "cols": (2, 2, 2)},
|
||||||
|
{"key": constData.importKeys[2], "name": "Major", "cols": (3, 3, 3)},
|
||||||
|
{"key": constData.importKeys[3], "name": "Min", "cols": (4, 4, 4)},
|
||||||
|
{"key": None, "name": "Max", "cols": (5, 5, 5)},
|
||||||
|
]
|
||||||
|
assert theProject.setImportColours(None, None) is False
|
||||||
|
assert theProject.setImportColours([], []) is False
|
||||||
|
assert theProject.setImportColours(newList, []) is True
|
||||||
|
|
||||||
|
assert theProject.importItems.name(constData.importKeys[0]) == "New"
|
||||||
|
assert theProject.importItems.name(constData.importKeys[1]) == "Minor"
|
||||||
|
assert theProject.importItems.name(constData.importKeys[2]) == "Major"
|
||||||
|
assert theProject.importItems.name(constData.importKeys[3]) == "Min"
|
||||||
|
assert theProject.importItems.cols(constData.importKeys[0]) == (1, 1, 1)
|
||||||
|
assert theProject.importItems.cols(constData.importKeys[1]) == (2, 2, 2)
|
||||||
|
assert theProject.importItems.cols(constData.importKeys[2]) == (3, 3, 3)
|
||||||
|
assert theProject.importItems.cols(constData.importKeys[3]) == (4, 4, 4)
|
||||||
|
|
||||||
|
# Check the new entry
|
||||||
|
lastKey = theProject.importItems.check("Max")
|
||||||
|
assert lastKey == "i1a3d1f"
|
||||||
|
assert theProject.importItems.name(lastKey) == "Max"
|
||||||
|
assert theProject.importItems.cols(lastKey) == (5, 5, 5)
|
||||||
|
|
||||||
|
# Delete last entry
|
||||||
|
assert theProject.setImportColours([], [lastKey]) is True
|
||||||
|
assert theProject.importItems.name(lastKey) == "New"
|
||||||
|
|
||||||
|
# Delete Status/Import
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
theProject.statusItems.resetCounts()
|
||||||
|
for key in list(theProject.statusItems.keys()):
|
||||||
|
assert theProject.statusItems.remove(key) is True
|
||||||
|
|
||||||
|
theProject.importItems.resetCounts()
|
||||||
|
for key in list(theProject.importItems.keys()):
|
||||||
|
assert theProject.importItems.remove(key) is True
|
||||||
|
|
||||||
|
assert len(theProject.statusItems) == 0
|
||||||
|
assert len(theProject.importItems) == 0
|
||||||
|
assert theProject.saveProject() is True
|
||||||
|
assert theProject.closeProject() is True
|
||||||
|
|
||||||
|
# This should restore the default status/import labels
|
||||||
|
random.seed(42)
|
||||||
|
assert theProject.openProject(fncDir) is True
|
||||||
|
assert theProject.saveProject() is True
|
||||||
|
assert list(theProject.statusItems.keys()) == constData.statusKeys
|
||||||
|
assert list(theProject.importItems.keys()) == constData.importKeys
|
||||||
|
|
||||||
|
# END Test testCoreProject_StatusImport
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.core
|
||||||
|
def testCoreProject_Methods(monkeypatch, mockGUI, tmpDir, fncDir):
|
||||||
"""Test other project class methods and functions.
|
"""Test other project class methods and functions.
|
||||||
"""
|
"""
|
||||||
theProject = NWProject(mockGUI)
|
theProject = NWProject(mockGUI)
|
||||||
theProject.projTree.setSeed(42)
|
theProject.projTree.setSeed(42)
|
||||||
assert theProject.openProject(nwMinimal)
|
assert theProject.newProject({"projPath": fncDir}) is True
|
||||||
assert theProject.projPath == nwMinimal
|
|
||||||
|
|
||||||
# Setting project path
|
# Setting project path
|
||||||
assert theProject.setProjectPath(None)
|
assert theProject.setProjectPath(None)
|
||||||
@@ -703,16 +817,16 @@ def testCoreProject_Methods(monkeypatch, nwMinimal, mockGUI, tmpDir):
|
|||||||
assert theProject.projPath == os.path.expanduser("~")
|
assert theProject.projPath == os.path.expanduser("~")
|
||||||
|
|
||||||
# Create a new folder and populate it
|
# Create a new folder and populate it
|
||||||
projPath = os.path.join(nwMinimal, "mock1")
|
projPath = os.path.join(fncDir, "mock1")
|
||||||
assert theProject.setProjectPath(projPath, newProject=True)
|
assert theProject.setProjectPath(projPath, newProject=True)
|
||||||
|
|
||||||
# Make os.mkdir fail
|
# Make os.mkdir fail
|
||||||
monkeypatch.setattr("os.mkdir", causeOSError)
|
monkeypatch.setattr("os.mkdir", causeOSError)
|
||||||
projPath = os.path.join(nwMinimal, "mock2")
|
projPath = os.path.join(fncDir, "mock2")
|
||||||
assert not theProject.setProjectPath(projPath, newProject=True)
|
assert not theProject.setProjectPath(projPath, newProject=True)
|
||||||
|
|
||||||
# Set back
|
# Set back
|
||||||
assert theProject.setProjectPath(nwMinimal)
|
assert theProject.setProjectPath(fncDir)
|
||||||
|
|
||||||
# Project Name
|
# Project Name
|
||||||
assert theProject.setProjectName(" A Name ")
|
assert theProject.setProjectName(" A Name ")
|
||||||
@@ -750,9 +864,10 @@ def testCoreProject_Methods(monkeypatch, nwMinimal, mockGUI, tmpDir):
|
|||||||
|
|
||||||
# Trash folder
|
# Trash folder
|
||||||
# Should create on first call, and just returned on later calls
|
# Should create on first call, and just returned on later calls
|
||||||
assert theProject.projTree["73475cb40a568"] is None
|
hTrash = "1a6562590ef19"
|
||||||
assert theProject.trashFolder() == "73475cb40a568"
|
assert theProject.projTree[hTrash] is None
|
||||||
assert theProject.trashFolder() == "73475cb40a568"
|
assert theProject.trashFolder() == hTrash
|
||||||
|
assert theProject.trashFolder() == hTrash
|
||||||
|
|
||||||
# Project backup
|
# Project backup
|
||||||
assert theProject.doBackup is True
|
assert theProject.doBackup is True
|
||||||
@@ -819,14 +934,14 @@ def testCoreProject_Methods(monkeypatch, nwMinimal, mockGUI, tmpDir):
|
|||||||
|
|
||||||
# Change project tree order
|
# Change project tree order
|
||||||
oldOrder = [
|
oldOrder = [
|
||||||
"a508bb932959c", "a35baf2e93843", "a6d311a93600a",
|
"73475cb40a568", "44cb730c42048", "71ee45a3c0db9",
|
||||||
"f5ab3e30151e1", "8c659a11cd429", "7695ce551d265",
|
"811786ad1ae74", "25fc0e7096fc6", "31489056e0916",
|
||||||
"afb3043c7b2b3", "9d5247ab588e0", "73475cb40a568",
|
"98010bd9270f9", "0e17daca5f3e1", "1a6562590ef19",
|
||||||
]
|
]
|
||||||
newOrder = [
|
newOrder = [
|
||||||
"f5ab3e30151e1", "8c659a11cd429", "7695ce551d265",
|
"811786ad1ae74", "25fc0e7096fc6", "31489056e0916",
|
||||||
"a508bb932959c", "a35baf2e93843", "a6d311a93600a",
|
"73475cb40a568", "44cb730c42048", "71ee45a3c0db9",
|
||||||
"afb3043c7b2b3", "9d5247ab588e0",
|
"98010bd9270f9", "0e17daca5f3e1",
|
||||||
]
|
]
|
||||||
assert theProject.projTree.handles() == oldOrder
|
assert theProject.projTree.handles() == oldOrder
|
||||||
assert theProject.setTreeOrder(newOrder)
|
assert theProject.setTreeOrder(newOrder)
|
||||||
@@ -834,56 +949,6 @@ def testCoreProject_Methods(monkeypatch, nwMinimal, mockGUI, tmpDir):
|
|||||||
assert theProject.setTreeOrder(oldOrder)
|
assert theProject.setTreeOrder(oldOrder)
|
||||||
assert theProject.projTree.handles() == oldOrder
|
assert theProject.projTree.handles() == oldOrder
|
||||||
|
|
||||||
# # Change status
|
|
||||||
# theProject.projTree["a35baf2e93843"].setStatus("Finished")
|
|
||||||
# theProject.projTree["a6d311a93600a"].setStatus("Draft")
|
|
||||||
# theProject.projTree["f5ab3e30151e1"].setStatus("Note")
|
|
||||||
# theProject.projTree["8c659a11cd429"].setStatus("Finished")
|
|
||||||
# newList = [
|
|
||||||
# ("New", 1, 1, 1, "New"),
|
|
||||||
# ("Draft", 2, 2, 2, "Note"), # These are swapped
|
|
||||||
# ("Note", 3, 3, 3, "Draft"), # These are swapped
|
|
||||||
# ("Edited", 4, 4, 4, "Finished"), # Renamed
|
|
||||||
# ("Finished", 5, 5, 5, None), # New, with reused name
|
|
||||||
# ]
|
|
||||||
# assert theProject.setStatusColours(newList, [])
|
|
||||||
# assert theProject.statusItems._theLabels == [
|
|
||||||
# "New", "Draft", "Note", "Edited", "Finished"
|
|
||||||
# ]
|
|
||||||
# assert theProject.statusItems._theColours == [
|
|
||||||
# (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5)
|
|
||||||
# ]
|
|
||||||
# assert theProject.projTree["a35baf2e93843"].itemStatus == "Edited" # Renamed
|
|
||||||
# assert theProject.projTree["a6d311a93600a"].itemStatus == "Note" # Swapped
|
|
||||||
# assert theProject.projTree["f5ab3e30151e1"].itemStatus == "Draft" # Swapped
|
|
||||||
# assert theProject.projTree["8c659a11cd429"].itemStatus == "Edited" # Renamed
|
|
||||||
|
|
||||||
# # Change importance
|
|
||||||
# fHandle = theProject.newFile("Jane Doe", nwItemClass.CHARACTER, "afb3043c7b2b3")
|
|
||||||
# theProject.projTree[fHandle].setImport("Main")
|
|
||||||
# newList = [
|
|
||||||
# ("New", 1, 1, 1, "New"),
|
|
||||||
# ("Minor", 2, 2, 2, "Minor"),
|
|
||||||
# ("Major", 3, 3, 3, "Major"),
|
|
||||||
# ("Min", 4, 4, 4, "Main"),
|
|
||||||
# ("Max", 5, 5, 5, None),
|
|
||||||
# ]
|
|
||||||
# assert theProject.setImportColours(newList)
|
|
||||||
# assert theProject.importItems._theLabels == [
|
|
||||||
# "New", "Minor", "Major", "Min", "Max"
|
|
||||||
# ]
|
|
||||||
# assert theProject.importItems._theColours == [
|
|
||||||
# (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5)
|
|
||||||
# ]
|
|
||||||
# assert theProject.projTree[fHandle].itemImport == "Min"
|
|
||||||
|
|
||||||
# # Check status counts
|
|
||||||
# assert theProject.statusItems._theCounts == [0, 0, 0, 0, 0]
|
|
||||||
# assert theProject.importItems._theCounts == [0, 0, 0, 0, 0]
|
|
||||||
# theProject.countStatus()
|
|
||||||
# assert theProject.statusItems._theCounts == [1, 1, 1, 2, 0]
|
|
||||||
# assert theProject.importItems._theCounts == [3, 0, 0, 1, 0]
|
|
||||||
|
|
||||||
# Session stats
|
# Session stats
|
||||||
theProject.currWCount = 200
|
theProject.currWCount = 200
|
||||||
theProject.lastWCount = 100
|
theProject.lastWCount = 100
|
||||||
@@ -897,7 +962,7 @@ def testCoreProject_Methods(monkeypatch, nwMinimal, mockGUI, tmpDir):
|
|||||||
assert not theProject._appendSessionStats(idleTime=0)
|
assert not theProject._appendSessionStats(idleTime=0)
|
||||||
|
|
||||||
# Write entry
|
# Write entry
|
||||||
assert theProject.projMeta == os.path.join(nwMinimal, "meta")
|
assert theProject.projMeta == os.path.join(fncDir, "meta")
|
||||||
statsFile = os.path.join(theProject.projMeta, nwFiles.SESS_STATS)
|
statsFile = os.path.join(theProject.projMeta, nwFiles.SESS_STATS)
|
||||||
|
|
||||||
theProject.projOpened = 1600002000
|
theProject.projOpened = 1600002000
|
||||||
|
|||||||
Reference in New Issue
Block a user