From 3ed74f0b02b94aee34846a881ad39974fca0af70 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 16 Apr 2022 18:35:26 +0200 Subject: [PATCH] Add test coverage of status and importance reordering --- novelwriter/core/status.py | 2 +- novelwriter/dialogs/projsettings.py | 2 +- .../guiProjSettings_Dialog_nwProject.nwx | 4 +- tests/test_core/test_core_status.py | 32 +++++++++++++++ tests/test_dialogs/test_dlg_projsettings.py | 39 ++++++++++++------- 5 files changed, 62 insertions(+), 17 deletions(-) diff --git a/novelwriter/core/status.py b/novelwriter/core/status.py index 9fcfbb88..4bade5e7 100644 --- a/novelwriter/core/status.py +++ b/novelwriter/core/status.py @@ -175,7 +175,7 @@ class NWStatus(): return False if order == list(self._store.keys()): - return True + return False store = {} for key in order: diff --git a/novelwriter/dialogs/projsettings.py b/novelwriter/dialogs/projsettings.py index a0987418..2a2bb969 100644 --- a/novelwriter/dialogs/projsettings.py +++ b/novelwriter/dialogs/projsettings.py @@ -464,7 +464,7 @@ class GuiProjectEditStatus(QWidget): nChild = self.listBox.topLevelItemCount() nIndex = tIndex + step if nIndex < 0 or nIndex >= nChild: - return False + return cItem = self.listBox.takeTopLevelItem(tIndex) self.listBox.insertTopLevelItem(nIndex, cItem) diff --git a/tests/reference/guiProjSettings_Dialog_nwProject.nwx b/tests/reference/guiProjSettings_Dialog_nwProject.nwx index e894d5bf..1b3c818a 100644 --- a/tests/reference/guiProjSettings_Dialog_nwProject.nwx +++ b/tests/reference/guiProjSettings_Dialog_nwProject.nwx @@ -1,5 +1,5 @@ - + Project Name Project Title @@ -42,7 +42,7 @@ New Minor Major - Final + Final diff --git a/tests/test_core/test_core_status.py b/tests/test_core/test_core_status.py index 611f8327..e1d224d8 100644 --- a/tests/test_core/test_core_status.py +++ b/tests/test_core/test_core_status.py @@ -229,6 +229,38 @@ def testCoreStatus_Entries(constData): assert theStatus.count(constData.statusKeys[2]) == 0 assert theStatus.count(constData.statusKeys[3]) == 0 + # Reorder + # ======= + + cOrder = list(theStatus.keys()) + assert cOrder == constData.statusKeys + + # Wrong length + assert theStatus.reorder([]) is False + + # No change + assert theStatus.reorder(cOrder) is False + + # Actual reaorder + nOrder = [ + constData.statusKeys[0], + constData.statusKeys[2], + constData.statusKeys[1], + constData.statusKeys[3], + ] + assert theStatus.reorder(nOrder) is True + assert list(theStatus.keys()) == nOrder + + # Add an unknown key + wOrder = nOrder.copy() + wOrder[3] = theStatus._newKey() + assert theStatus.reorder(wOrder) is False + assert list(theStatus.keys()) == nOrder + + # Put it back + assert theStatus.reorder(cOrder) is True + assert list(theStatus.keys()) == cOrder + # Default # ======= diff --git a/tests/test_dialogs/test_dlg_projsettings.py b/tests/test_dialogs/test_dlg_projsettings.py index f2aa8319..5a047522 100644 --- a/tests/test_dialogs/test_dlg_projsettings.py +++ b/tests/test_dialogs/test_dlg_projsettings.py @@ -28,9 +28,7 @@ from tools import cmpFiles, getGuiItem from PyQt5.QtGui import QColor from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import ( - QDialog, QAction, QMessageBox, QColorDialog, QTreeWidgetItem -) +from PyQt5.QtWidgets import QDialog, QAction, QMessageBox, QColorDialog from novelwriter.dialogs import GuiProjectSettings @@ -118,16 +116,6 @@ def testDlgProjSettings_Dialog( assert projEdit.tabStatus.getNewList() == ([], []) assert projEdit.tabStatus.listBox.topLevelItemCount() == 4 - # Fake drag'n'drop should change changed status - projEdit.tabStatus._rowsMoved() - assert projEdit.tabStatus.colChanged is True - projEdit.tabStatus.colChanged = False - - projEdit.tabStatus.listBox.clearSelection() - assert projEdit.tabStatus._getSelectedItem() is None - projEdit.tabStatus.listBox.topLevelItem(0).setSelected(True) - assert isinstance(projEdit.tabStatus._getSelectedItem(), QTreeWidgetItem) - # Can't delete the first item (it's in use) projEdit.tabStatus.listBox.clearSelection() projEdit.tabStatus.listBox.topLevelItem(0).setSelected(True) @@ -178,6 +166,31 @@ def testDlgProjSettings_Dialog( ] ) + # Move items + projEdit.tabStatus.listBox.clearSelection() + projEdit.tabStatus._moveItem(1) + assert [x["key"] for x in projEdit.tabStatus.getNewList()[0]] == [ + constData.statusKeys[0], constData.statusKeys[1], constData.statusKeys[3], None + ] + + projEdit.tabStatus.listBox.clearSelection() + projEdit.tabStatus.listBox.topLevelItem(0).setSelected(True) + projEdit.tabStatus._moveItem(-1) + assert [x["key"] for x in projEdit.tabStatus.getNewList()[0]] == [ + constData.statusKeys[0], constData.statusKeys[1], constData.statusKeys[3], None + ] + + projEdit.tabStatus.listBox.clearSelection() + projEdit.tabStatus.listBox.topLevelItem(3).setSelected(True) + projEdit.tabStatus._moveItem(-1) + assert [x["key"] for x in projEdit.tabStatus.getNewList()[0]] == [ + constData.statusKeys[0], constData.statusKeys[1], None, constData.statusKeys[3] + ] + projEdit.tabStatus._moveItem(1) + assert [x["key"] for x in projEdit.tabStatus.getNewList()[0]] == [ + constData.statusKeys[0], constData.statusKeys[1], constData.statusKeys[3], None + ] + # Importance Tab # ==============