Update test coverage

This commit is contained in:
Veronica Berglyd Olsen
2025-06-13 21:37:31 +02:00
parent e3eea2628a
commit 9384b8a6b9
5 changed files with 42 additions and 13 deletions
+1 -4
View File
@@ -192,10 +192,7 @@ class NWStatus:
def refreshIcons(self) -> None: def refreshIcons(self) -> None:
"""Refresh all icons.""" """Refresh all icons."""
for entry in self._store.values(): for entry in self._store.values():
if entry.theme != CUSTOM_COL: entry.color = SHARED.theme.parseColor(entry.theme)
print("<", entry.color.name(QColor.NameFormat.HexRgb))
entry.color = SHARED.theme.parseColor(entry.theme)
print(">", entry.color.name(QColor.NameFormat.HexRgb))
entry.icon = NWStatus.createIcon(self._height, entry.color, entry.shape) entry.icon = NWStatus.createIcon(self._height, entry.color, entry.shape)
return return
+15 -1
View File
@@ -34,6 +34,8 @@ from PyQt6.QtWidgets import QMessageBox
sys.path.insert(1, str(Path(__file__).parent.parent.absolute())) sys.path.insert(1, str(Path(__file__).parent.parent.absolute()))
from novelwriter import CONFIG, SHARED from novelwriter import CONFIG, SHARED
from novelwriter.config import DEF_GUI_DARK, DEF_GUI_LIGHT
from novelwriter.enum import nwTheme
from tests.mocked import MockGuiMain from tests.mocked import MockGuiMain
from tests.tools import cleanProject from tests.tools import cleanProject
@@ -60,6 +62,10 @@ def resetConfigVars():
CONFIG._dLocale = QLocale("en_GB") CONFIG._dLocale = QLocale("en_GB")
CONFIG._manuals = {"manual": _TMP_ROOT / "manual.pdf"} CONFIG._manuals = {"manual": _TMP_ROOT / "manual.pdf"}
CONFIG.guiLocale = "en_GB" CONFIG.guiLocale = "en_GB"
CONFIG.darkTheme = DEF_GUI_DARK
CONFIG.lightTheme = DEF_GUI_LIGHT
CONFIG.themeMode = nwTheme.LIGHT
CONFIG.emphLabels = True # Ensures better coverage, off by default
return return
@@ -157,13 +163,21 @@ def mockGUI(qtbot, monkeypatch):
monkeypatch.setattr(QMessageBox, "result", lambda *a: QMessageBox.StandardButton.Yes) monkeypatch.setattr(QMessageBox, "result", lambda *a: QMessageBox.StandardButton.Yes)
gui = MockGuiMain() gui = MockGuiMain()
theme = GuiTheme() theme = GuiTheme()
theme.loadTheme()
monkeypatch.setattr(SHARED, "_gui", gui) monkeypatch.setattr(SHARED, "_gui", gui)
monkeypatch.setattr(SHARED, "_theme", theme) monkeypatch.setattr(SHARED, "_theme", theme)
return gui return gui
@pytest.fixture(scope="function")
def mockGUIwithTheme(mockGUI):
"""Create a mock instance of novelWriter's main GUI class with the
theme instance initialised.
"""
SHARED.theme.initThemes()
return mockGUI
@pytest.fixture(scope="function") @pytest.fixture(scope="function")
def nwGUI(qtbot, monkeypatch, functionFixture): def nwGUI(qtbot, monkeypatch, functionFixture):
"""Create an instance of the novelWriter GUI.""" """Create an instance of the novelWriter GUI."""
+22 -3
View File
@@ -324,13 +324,32 @@ def testCoreStatus_Entries(mockGUI, mockRnd):
@pytest.mark.core @pytest.mark.core
def testCoreStatus_Pack(mockGUI, mockRnd): def testCoreStatus_RefreshIcons(mockGUIwithTheme, mockRnd):
"""Test refreshing the icons of the NWStatus class."""
nStatus = NWStatus(NWStatus.STATUS)
nStatus.add(None, "New", "default", "SQUARE", 0)
nStatus.add(None, "Note", "red", "CIRCLE", 0)
nStatus.add(None, "Draft", "yellow", "SQUARE", 0)
nStatus.add(None, "Finished", "green", "SQUARE", 0)
beforeIcons = [nStatus[statusKeys[i]].icon for i in range(4)]
# Refreshing the icons should generate new ones
nStatus.refreshIcons()
afterIcons = [nStatus[statusKeys[i]].icon for i in range(4)]
for before, after in zip(beforeIcons, afterIcons, strict=False):
assert before is not after
@pytest.mark.core
def testCoreStatus_Pack(mockGUIwithTheme, mockRnd):
"""Test data packing of the NWStatus class.""" """Test data packing of the NWStatus class."""
nStatus = NWStatus(NWStatus.STATUS) nStatus = NWStatus(NWStatus.STATUS)
nStatus.add(None, "New", "#646464", "SQUARE", 0) nStatus.add(None, "New", "#646464", "SQUARE", 0)
nStatus.add(None, "Note", "#c83200", "CIRCLE", 0) nStatus.add(None, "Note", "#c83200", "CIRCLE", 0)
nStatus.add(None, "Draft", "#c89600", "SQUARE", 0) nStatus.add(None, "Draft", "#c89600", "SQUARE", 0)
nStatus.add(None, "Finished", "#32c800", "SQUARE", 0) nStatus.add(None, "Finished", "default", "SQUARE", 0)
countTo = [3, 5, 7, 9] countTo = [3, 5, 7, 9]
for i, n in enumerate(countTo): for i, n in enumerate(countTo):
@@ -360,7 +379,7 @@ def testCoreStatus_Pack(mockGUI, mockRnd):
("Finished", { ("Finished", {
"key": statusKeys[3], "key": statusKeys[3],
"count": "9", "count": "9",
"color": "#32c800", "color": "default",
"shape": "SQUARE", "shape": "SQUARE",
}), }),
] ]
+3 -3
View File
@@ -196,11 +196,11 @@ def testDlgPreferences_Settings(qtbot, monkeypatch, nwGUI, fncPath, tstPaths):
# Project View # Project View
prefs.iconColTree.setCurrentData("faded", "default") prefs.iconColTree.setCurrentData("faded", "default")
prefs.iconColDocs.setChecked(True) prefs.iconColDocs.setChecked(True)
prefs.emphLabels.setChecked(True) prefs.emphLabels.setChecked(False)
assert CONFIG.iconColTree == DEF_TREECOL assert CONFIG.iconColTree == DEF_TREECOL
assert CONFIG.iconColDocs is False assert CONFIG.iconColDocs is False
assert CONFIG.emphLabels is False assert CONFIG.emphLabels is True
# Behaviour # Behaviour
prefs.autoSaveDoc.stepUp() prefs.autoSaveDoc.stepUp()
@@ -362,7 +362,7 @@ def testDlgPreferences_Settings(qtbot, monkeypatch, nwGUI, fncPath, tstPaths):
# Project View # Project View
assert CONFIG.iconColTree == "faded" assert CONFIG.iconColTree == "faded"
assert CONFIG.iconColDocs is True assert CONFIG.iconColDocs is True
assert CONFIG.emphLabels is True assert CONFIG.emphLabels is False
# Behaviour # Behaviour
assert CONFIG.autoSaveDoc == 31 assert CONFIG.autoSaveDoc == 31
+1 -2
View File
@@ -267,8 +267,7 @@ def testGuiMain_Editing(qtbot, monkeypatch, nwGUI, projPath, tstPaths, mockRnd):
# Change some settings # Change some settings
CONFIG.hideHScroll = True CONFIG.hideHScroll = True
CONFIG.hideVScroll = True CONFIG.hideVScroll = True
CONFIG.autoScrollPos = 80 CONFIG.autoScroll = False
CONFIG.autoScroll = True
# Add a Character File # Add a Character File
nwGUI._changeView(nwView.PROJECT) nwGUI._changeView(nwView.PROJECT)