From 0b7c31b6a9587f8fe3a6fe6b599f9514619f8413 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 13 Jan 2025 19:43:04 +0100 Subject: [PATCH] Fix warnings in tests --- tests/test_core/test_core_buildsettings.py | 2 +- tests/test_dialogs/test_dlg_about.py | 4 +- tests/test_dialogs/test_dlg_preferences.py | 13 +- tests/test_gui/test_gui_doceditor.py | 17 +- tests/test_gui/test_gui_docviewer.py | 13 +- tests/test_gui/test_gui_projtree.py | 4 +- tests/test_tools/test_tools_manusbuild.py | 8 +- tests/test_tools/test_tools_manuscript.py | 20 +- tests/test_tools/test_tools_manussettings.py | 80 ++++-- tests/test_tools/test_tools_writingstats.py | 273 +++++++++++++++---- tests/tools.py | 4 +- 11 files changed, 336 insertions(+), 102 deletions(-) diff --git a/tests/test_core/test_core_buildsettings.py b/tests/test_core/test_core_buildsettings.py index 1ae1360a..2b21b673 100644 --- a/tests/test_core/test_core_buildsettings.py +++ b/tests/test_core/test_core_buildsettings.py @@ -398,7 +398,7 @@ def testCoreBuildSettings_Collection(monkeypatch, mockGUI, fncPath: Path, mockRn buildTwo.setName("Build Two") buildIDTwo = buildTwo.buildID - # Check that we can extract infor about the builds + # Check that we can extract info about the builds builds.setBuild(buildTwo) assert len(builds) == 2 assert buildsFile.exists() diff --git a/tests/test_dialogs/test_dlg_about.py b/tests/test_dialogs/test_dlg_about.py index 0f659035..bde9ad7d 100644 --- a/tests/test_dialogs/test_dlg_about.py +++ b/tests/test_dialogs/test_dlg_about.py @@ -41,7 +41,9 @@ def testDlgAbout_NWDialog(qtbot, monkeypatch, nwGUI): msgAbout = SHARED.findTopLevelWidget(GuiAbout) assert isinstance(msgAbout, GuiAbout) - assert msgAbout.txtCredits.document().characterCount() > 100 + document = msgAbout.txtCredits.document() + assert document is not None + assert document.characterCount() > 100 with monkeypatch.context() as mp: mp.setattr("novelwriter.config.Config.assetPath", lambda *a: Path("whatever")) diff --git a/tests/test_dialogs/test_dlg_preferences.py b/tests/test_dialogs/test_dlg_preferences.py index e5bed49a..63dbc91a 100644 --- a/tests/test_dialogs/test_dlg_preferences.py +++ b/tests/test_dialogs/test_dlg_preferences.py @@ -96,6 +96,7 @@ def testDlgPreferences_Actions(qtbot, monkeypatch, nwGUI): # Check Navigation vBar = prefs.mainForm.verticalScrollBar() + assert vBar is not None old = -1 with qtbot.waitSignal(vBar.valueChanged) as value: prefs.sidebar.button(1).click() @@ -119,12 +120,16 @@ def testDlgPreferences_Actions(qtbot, monkeypatch, nwGUI): # Check Save Button prefs.show() with qtbot.waitSignal(prefs.newPreferencesReady) as signal: - prefs.buttonBox.button(QtDialogSave).click() + button = prefs.buttonBox.button(QtDialogSave) + assert button is not None + button.click() assert signal.args == [False, False, False, False] # Check Close Button prefs.show() - prefs.buttonBox.button(QtDialogCancel).click() + button = prefs.buttonBox.button(QtDialogCancel) + assert button is not None + button.click() assert prefs.isHidden() is True # Close Using Escape Key @@ -313,7 +318,9 @@ def testDlgPreferences_Settings(qtbot, monkeypatch, nwGUI, fncPath, tstPaths): with monkeypatch.context() as mp: mp.setattr(QFontDatabase, "families", lambda *a: ["TestFont"]) with qtbot.waitSignal(prefs.newPreferencesReady) as signal: - prefs.buttonBox.button(QtDialogSave).click() + button = prefs.buttonBox.button(QtDialogSave) + assert button is not None + button.click() assert signal.args == [True, True, True, True] # Check Settings diff --git a/tests/test_gui/test_gui_doceditor.py b/tests/test_gui/test_gui_doceditor.py index 32198bec..428807f3 100644 --- a/tests/test_gui/test_gui_doceditor.py +++ b/tests/test_gui/test_gui_doceditor.py @@ -441,6 +441,9 @@ def testGuiEditor_ContextMenu(monkeypatch, qtbot, nwGUI, projPath, mockRnd): ctxMenu.deleteLater() # Copy Text + clipboard = QApplication.clipboard() + assert clipboard is not None + ctxMenu = getMenuForPos(docEditor, 31, True) assert ctxMenu is not None assert docEditor.textCursor().selectedText() == "text" @@ -448,14 +451,14 @@ def testGuiEditor_ContextMenu(monkeypatch, qtbot, nwGUI, projPath, mockRnd): assert actions == [ "Cut", "Copy", "Paste", "Select All", "Select Word", "Select Paragraph" ] - QApplication.clipboard().clear() + clipboard.clear() ctxMenu.actions()[1].trigger() - assert QApplication.clipboard().text(QClipboard.Mode.Clipboard) == "text" + assert clipboard.text(QClipboard.Mode.Clipboard) == "text" # Cut Text - QApplication.clipboard().clear() + clipboard.clear() ctxMenu.actions()[0].trigger() - assert QApplication.clipboard().text(QClipboard.Mode.Clipboard) == "text" + assert clipboard.text(QClipboard.Mode.Clipboard) == "text" assert "text" not in docEditor.getText() # Paste Text @@ -572,7 +575,9 @@ def testGuiEditor_Actions(qtbot, nwGUI, projPath, ipsumText, mockRnd): # Select/Cut/Copy/Paste/Undo/Redo # =============================== - QApplication.clipboard().clear() + clipboard = QApplication.clipboard() + assert clipboard is not None + clipboard.clear() # Select All assert docEditor.docAction(nwDocAction.SEL_ALL) is True @@ -624,7 +629,7 @@ def testGuiEditor_Actions(qtbot, nwGUI, projPath, ipsumText, mockRnd): assert newPara[5] == ipsumText[4] assert newPara[6] == ipsumText[2] - QApplication.clipboard().clear() + clipboard.clear() # Emphasis/Undo/Redo # ================== diff --git a/tests/test_gui/test_gui_docviewer.py b/tests/test_gui/test_gui_docviewer.py index 2eb8cb59..65c31a24 100644 --- a/tests/test_gui/test_gui_docviewer.py +++ b/tests/test_gui/test_gui_docviewer.py @@ -91,18 +91,19 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, prjLipsum): docViewer.setTextCursor(cursor) docViewer._makeSelection(QTextCursor.SelectionType.WordUnderCursor) - qClip = QApplication.clipboard() - qClip.clear() + clipboard = QApplication.clipboard() + assert clipboard is not None + clipboard.clear() # Cut assert docViewer.docAction(nwDocAction.CUT) is True - assert qClip.text() == "laoreet" - qClip.clear() + assert clipboard.text() == "laoreet" + clipboard.clear() # Copy assert docViewer.docAction(nwDocAction.COPY) is True - assert qClip.text() == "laoreet" - qClip.clear() + assert clipboard.text() == "laoreet" + clipboard.clear() # Select Paragraph assert docViewer.docAction(nwDocAction.SEL_PARA) is True diff --git a/tests/test_gui/test_gui_projtree.py b/tests/test_gui/test_gui_projtree.py index de3163d2..a38c3644 100644 --- a/tests/test_gui/test_gui_projtree.py +++ b/tests/test_gui/test_gui_projtree.py @@ -1148,7 +1148,9 @@ def testGuiProjTree_ContextMenu(qtbot, monkeypatch, nwGUI, projPath, mockRnd): def getTransformSubMenu(menu: QMenu) -> list[str]: for action in menu.actions(): if action.text() == "Transform ...": - return [x.text() for x in action.menu().actions() if x.text()] + submenu = action.menu() + assert submenu is not None + return [x.text() for x in submenu.actions() if x.text()] return [] # Context Menu on Document File Item diff --git a/tests/test_tools/test_tools_manusbuild.py b/tests/test_tools/test_tools_manusbuild.py index 07b0c1c5..9a86eff6 100644 --- a/tests/test_tools/test_tools_manusbuild.py +++ b/tests/test_tools/test_tools_manusbuild.py @@ -95,7 +95,9 @@ def testToolManuscriptBuild_Main( assert (fncPath / "TestBuild").with_suffix(nwLabels.BUILD_EXT[fmt]).exists() lastFmt = fmt - manus._dialogButtonClicked(manus.buttonBox.button(QtDialogClose)) + button = manus.buttonBox.button(QtDialogClose) + assert button is not None + manus._dialogButtonClicked(button) manus.deleteLater() assert build.lastBuildName == "TestBuild" @@ -150,5 +152,7 @@ def testToolManuscriptBuild_Main( assert lastUrl.startswith("file://") # Finish - manus._dialogButtonClicked(manus.buttonBox.button(QtDialogClose)) + button = manus.buttonBox.button(QtDialogClose) + assert button is not None + manus._dialogButtonClicked(button) # qtbot.stop() diff --git a/tests/test_tools/test_tools_manuscript.py b/tests/test_tools/test_tools_manuscript.py index bdd5b900..4e7959cb 100644 --- a/tests/test_tools/test_tools_manuscript.py +++ b/tests/test_tools/test_tools_manuscript.py @@ -67,7 +67,9 @@ def testToolManuscript_Init(monkeypatch, qtbot, nwGUI, projPath, mockRnd): # Build a preview manus.buildList.clearSelection() manus.buildList.setCurrentRow(0) - with qtbot.waitSignal(manus.docPreview.document().contentsChanged): + document = manus.docPreview.document() + assert document is not None + with qtbot.waitSignal(document.contentsChanged): manus.btnPreview.click() assert manus.docPreview.toPlainText().strip() == allText @@ -113,7 +115,9 @@ def testToolManuscript_Builds(qtbot, nwGUI, projPath): with qtbot.waitSignal(bSettings.newSettingsReady, timeout=5000): bSettings.newSettingsReady.connect(_testNewSettingsReady) - bSettings.buttonBox.button(QtDialogSave).click() + button = bSettings.buttonBox.button(QtDialogSave) + assert button is not None + button.click() assert isinstance(build, BuildSettings) assert build.name == "Test Build" @@ -132,7 +136,9 @@ def testToolManuscript_Builds(qtbot, nwGUI, projPath): with qtbot.waitSignal(bSettings.newSettingsReady, timeout=5000): bSettings.newSettingsReady.connect(_testNewSettingsReady) - bSettings.buttonBox.button(QtDialogApply).click() # Should leave the dialog open + button = bSettings.buttonBox.button(QtDialogApply) + assert button is not None + button.click() # Should leave the dialog open assert isinstance(build, BuildSettings) assert build.name == "Test Build" @@ -210,7 +216,9 @@ def testToolManuscript_Features(monkeypatch, qtbot, nwGUI, projPath, mockRnd): manus._builds.setBuild(build) manus.buildList.setCurrentRow(0) - with qtbot.waitSignal(manus.docPreview.document().contentsChanged): + document = manus.docPreview.document() + assert document is not None + with qtbot.waitSignal(document.contentsChanged): manus.btnPreview.click() assert manus.docPreview.toPlainText().strip() != "" @@ -304,7 +312,9 @@ def testToolManuscript_Print(monkeypatch, qtbot, nwGUI, projPath): manus.loadContent() manus.buildList.setCurrentRow(0) - with qtbot.waitSignal(manus.docPreview.document().contentsChanged): + document = manus.docPreview.document() + assert document is not None + with qtbot.waitSignal(document.contentsChanged): manus.btnPreview.click() assert manus.docPreview.toPlainText().strip() != "" diff --git a/tests/test_tools/test_tools_manussettings.py b/tests/test_tools/test_tools_manussettings.py index 256feee7..13b57464 100644 --- a/tests/test_tools/test_tools_manussettings.py +++ b/tests/test_tools/test_tools_manussettings.py @@ -51,13 +51,19 @@ def testToolBuildSettings_Init(qtbot, nwGUI, projPath, mockRnd): bSettings.loadContent() # Flip through pages - bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 1).click() + button = bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 1) + assert button is not None + button.click() assert isinstance(bSettings.toolStack.currentWidget(), _FormattingTab) - bSettings.sidebar._group.button(bSettings.OPT_HEADINGS).click() + button = bSettings.sidebar._group.button(bSettings.OPT_HEADINGS) + assert button is not None + button.click() assert isinstance(bSettings.toolStack.currentWidget(), _HeadingsTab) - bSettings.sidebar._group.button(bSettings.OPT_FILTERS).click() + button = bSettings.sidebar._group.button(bSettings.OPT_FILTERS) + assert button is not None + button.click() assert isinstance(bSettings.toolStack.currentWidget(), _FilterTab) # Check dialog buttons @@ -72,7 +78,9 @@ def testToolBuildSettings_Init(qtbot, nwGUI, projPath, mockRnd): # Capture Apply button with qtbot.waitSignal(bSettings.newSettingsReady, timeout=5000): bSettings.newSettingsReady.connect(_testNewSettingsReady) - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogApply)) + button = bSettings.buttonBox.button(QtDialogApply) + assert button is not None + bSettings._dialogButtonClicked(button) assert triggered @@ -81,7 +89,9 @@ def testToolBuildSettings_Init(qtbot, nwGUI, projPath, mockRnd): with qtbot.waitSignal(bSettings.newSettingsReady, timeout=5000): bSettings.newSettingsReady.connect(_testNewSettingsReady) - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogSave)) + button = bSettings.buttonBox.button(QtDialogSave) + assert button is not None + bSettings._dialogButtonClicked(button) assert triggered @@ -98,7 +108,9 @@ def testToolBuildSettings_Init(qtbot, nwGUI, projPath, mockRnd): assert triggered # Finish - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose)) + button = bSettings.buttonBox.button(QtDialogClose) + assert button is not None + bSettings._dialogButtonClicked(button) # qtbot.stop() @@ -129,7 +141,9 @@ def testToolBuildSettings_Filter(qtbot, nwGUI, projPath, mockRnd): bSettings.loadContent() filterTab = bSettings.optTabSelect - bSettings.sidebar._group.button(bSettings.OPT_FILTERS).click() + button = bSettings.sidebar._group.button(bSettings.OPT_FILTERS) + assert button is not None + button.click() assert bSettings.toolStack.currentWidget() is filterTab # Check content @@ -308,7 +322,9 @@ def testToolBuildSettings_Filter(qtbot, nwGUI, projPath, mockRnd): ] # Finish - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose)) + button = bSettings.buttonBox.button(QtDialogClose) + assert button is not None + bSettings._dialogButtonClicked(button) # qtbot.stop() @@ -339,7 +355,9 @@ def testToolBuildSettings_Headings(qtbot, nwGUI): bSettings.loadContent() headTab = bSettings.optTabHeadings - bSettings.sidebar._group.button(bSettings.OPT_HEADINGS).click() + button = bSettings.sidebar._group.button(bSettings.OPT_HEADINGS) + assert button is not None + button.click() assert bSettings.toolStack.currentWidget() is headTab # Check initial values @@ -478,7 +496,9 @@ def testToolBuildSettings_Headings(qtbot, nwGUI): assert build.getBool("headings.hideSection") is True # Finish - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose)) + button = bSettings.buttonBox.button(QtDialogClose) + assert button is not None + bSettings._dialogButtonClicked(button) # qtbot.stop() @@ -501,7 +521,9 @@ def testToolBuildSettings_FormatTextContent(qtbot, nwGUI): bSettings.loadContent() fmtTab = bSettings.optTabFormatting - bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 1).click() + button = bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 1) + assert button is not None + button.click() assert bSettings.toolStack.currentWidget() is fmtTab # Check initial values @@ -538,7 +560,9 @@ def testToolBuildSettings_FormatTextContent(qtbot, nwGUI): assert build.getBool("text.addNoteHeadings") is True # Finish - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose)) + button = bSettings.buttonBox.button(QtDialogClose) + assert button is not None + bSettings._dialogButtonClicked(button) # qtbot.stop() @@ -563,7 +587,9 @@ def testToolBuildSettings_FormatTextFormat(monkeypatch, qtbot, nwGUI): bSettings.loadContent() fmtTab = bSettings.optTabFormatting - bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 2).click() + button = bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 2) + assert button is not None + button.click() assert bSettings.toolStack.currentWidget() is fmtTab # Check initial values @@ -610,7 +636,9 @@ def testToolBuildSettings_FormatTextFormat(monkeypatch, qtbot, nwGUI): assert fmtTab._textFont == font # Finish - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose)) + button = bSettings.buttonBox.button(QtDialogClose) + assert button is not None + bSettings._dialogButtonClicked(button) # qtbot.stop() @@ -629,7 +657,9 @@ def testToolBuildSettings_FormatFirstLineIndent(monkeypatch, qtbot, nwGUI): bSettings.loadContent() fmtTab = bSettings.optTabFormatting - bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 3).click() + button = bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 3) + assert button is not None + button.click() assert bSettings.toolStack.currentWidget() is fmtTab # Check initial values @@ -650,7 +680,9 @@ def testToolBuildSettings_FormatFirstLineIndent(monkeypatch, qtbot, nwGUI): assert build.getBool("format.indentFirstPar") is True # Finish - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose)) + button = bSettings.buttonBox.button(QtDialogClose) + assert button is not None + bSettings._dialogButtonClicked(button) # qtbot.stop() @@ -674,7 +706,9 @@ def testToolBuildSettings_FormatPageLayout(monkeypatch, qtbot, nwGUI): bSettings.loadContent() fmtTab = bSettings.optTabFormatting - bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 4).click() + button = bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 4) + assert button is not None + button.click() assert bSettings.toolStack.currentWidget() is fmtTab # Check initial values @@ -704,7 +738,9 @@ def testToolBuildSettings_FormatPageLayout(monkeypatch, qtbot, nwGUI): assert fmtTab.rightMargin.value() == 1.5 # Finish - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose)) + button = bSettings.buttonBox.button(QtDialogClose) + assert button is not None + bSettings._dialogButtonClicked(button) # qtbot.stop() @@ -728,7 +764,9 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI): bSettings.loadContent() fmtTab = bSettings.optTabFormatting - bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 5).click() + button = bSettings.sidebar._group.button(bSettings.OPT_FORMATTING + 5) + assert button is not None + button.click() assert bSettings.toolStack.currentWidget() is fmtTab # Check initial values @@ -769,5 +807,7 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI): assert fmtTab.odtPageHeader.text() == nwHeadFmt.DOC_AUTO # Finish - bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose)) + button = bSettings.buttonBox.button(QtDialogClose) + assert button is not None + bSettings._dialogButtonClicked(button) # qtbot.stop() diff --git a/tests/test_tools/test_tools_writingstats.py b/tests/test_tools/test_tools_writingstats.py index 4902c3fd..53475726 100644 --- a/tests/test_tools/test_tools_writingstats.py +++ b/tests/test_tools/test_tools_writingstats.py @@ -125,14 +125,37 @@ def testToolWritingStats_Export(qtbot, monkeypatch, nwGUI, projPath, tstPaths): assert sessLog.notesWords.text() == "{:n}".format(275) assert sessLog.totalWords.text() == "{:n}".format(875) - assert sessLog.listBox.topLevelItem(0).text(sessLog.C_COUNT) == "{:n}".format(1) - assert sessLog.listBox.topLevelItem(1).text(sessLog.C_COUNT) == "{:n}".format(-200) - assert sessLog.listBox.topLevelItem(2).text(sessLog.C_COUNT) == "{:n}".format(300) - assert sessLog.listBox.topLevelItem(3).text(sessLog.C_COUNT) == "{:n}".format(-120) - assert sessLog.listBox.topLevelItem(4).text(sessLog.C_COUNT) == "{:n}".format(-20) - assert sessLog.listBox.topLevelItem(5).text(sessLog.C_COUNT) == "{:n}".format(40) - assert sessLog.listBox.topLevelItem(6).text(sessLog.C_COUNT) == "{:n}".format(-400) - assert sessLog.listBox.topLevelItem(7).text(sessLog.C_COUNT) == "{:n}".format(200) + item = sessLog.listBox.topLevelItem(0) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(1) + + item = sessLog.listBox.topLevelItem(1) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-200) + + item = sessLog.listBox.topLevelItem(2) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(300) + + item = sessLog.listBox.topLevelItem(3) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-120) + + item = sessLog.listBox.topLevelItem(4) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-20) + + item = sessLog.listBox.topLevelItem(5) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(40) + + item = sessLog.listBox.topLevelItem(6) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-400) + + item = sessLog.listBox.topLevelItem(7) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(200) assert sessLog._saveData(sessLog.FMT_CSV) assert sessLog._saveData(sessLog.FMT_JSON) @@ -205,14 +228,37 @@ def testToolWritingStats_Filters(qtbot, monkeypatch, nwGUI, projPath, tstPaths): sessLog.populateGUI() sessLog.listBox.sortByColumn(sessLog.C_TIME, Qt.SortOrder.AscendingOrder) - assert sessLog.listBox.topLevelItem(0).text(sessLog.C_COUNT) == "{:n}".format(1) - assert sessLog.listBox.topLevelItem(1).text(sessLog.C_COUNT) == "{:n}".format(-200) - assert sessLog.listBox.topLevelItem(2).text(sessLog.C_COUNT) == "{:n}".format(300) - assert sessLog.listBox.topLevelItem(3).text(sessLog.C_COUNT) == "{:n}".format(-120) - assert sessLog.listBox.topLevelItem(4).text(sessLog.C_COUNT) == "{:n}".format(-20) - assert sessLog.listBox.topLevelItem(5).text(sessLog.C_COUNT) == "{:n}".format(40) - assert sessLog.listBox.topLevelItem(6).text(sessLog.C_COUNT) == "{:n}".format(-400) - assert sessLog.listBox.topLevelItem(7).text(sessLog.C_COUNT) == "{:n}".format(200) + item = sessLog.listBox.topLevelItem(0) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(1) + + item = sessLog.listBox.topLevelItem(1) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-200) + + item = sessLog.listBox.topLevelItem(2) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(300) + + item = sessLog.listBox.topLevelItem(3) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-120) + + item = sessLog.listBox.topLevelItem(4) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-20) + + item = sessLog.listBox.topLevelItem(5) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(40) + + item = sessLog.listBox.topLevelItem(6) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-400) + + item = sessLog.listBox.topLevelItem(7) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(200) # No Novel Files qtbot.mouseClick(sessLog.incNovel, QtMouseLeft) @@ -222,14 +268,37 @@ def testToolWritingStats_Filters(qtbot, monkeypatch, nwGUI, projPath, tstPaths): with open(jsonStats, mode="r", encoding="utf-8") as inFile: jsonData = json.loads(inFile.read()) - assert sessLog.listBox.topLevelItem(0).text(sessLog.C_COUNT) == "{:n}".format(1) - assert sessLog.listBox.topLevelItem(1).text(sessLog.C_COUNT) == "{:n}".format(-100) - assert sessLog.listBox.topLevelItem(2).text(sessLog.C_COUNT) == "{:n}".format(150) - assert sessLog.listBox.topLevelItem(3).text(sessLog.C_COUNT) == "{:n}".format(-60) - assert sessLog.listBox.topLevelItem(4).text(sessLog.C_COUNT) == "{:n}".format(-10) - assert sessLog.listBox.topLevelItem(5).text(sessLog.C_COUNT) == "{:n}".format(20) - assert sessLog.listBox.topLevelItem(6).text(sessLog.C_COUNT) == "{:n}".format(-200) - assert sessLog.listBox.topLevelItem(7).text(sessLog.C_COUNT) == "{:n}".format(100) + item = sessLog.listBox.topLevelItem(0) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(1) + + item = sessLog.listBox.topLevelItem(1) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-100) + + item = sessLog.listBox.topLevelItem(2) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(150) + + item = sessLog.listBox.topLevelItem(3) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-60) + + item = sessLog.listBox.topLevelItem(4) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-10) + + item = sessLog.listBox.topLevelItem(5) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(20) + + item = sessLog.listBox.topLevelItem(6) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-200) + + item = sessLog.listBox.topLevelItem(7) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(100) assert jsonData == [ { @@ -268,14 +337,37 @@ def testToolWritingStats_Filters(qtbot, monkeypatch, nwGUI, projPath, tstPaths): with open(jsonStats, mode="r", encoding="utf-8") as inFile: jsonData = json.load(inFile) - assert sessLog.listBox.topLevelItem(0).text(sessLog.C_COUNT) == "{:n}".format(1) - assert sessLog.listBox.topLevelItem(1).text(sessLog.C_COUNT) == "{:n}".format(-100) - assert sessLog.listBox.topLevelItem(2).text(sessLog.C_COUNT) == "{:n}".format(150) - assert sessLog.listBox.topLevelItem(3).text(sessLog.C_COUNT) == "{:n}".format(-60) - assert sessLog.listBox.topLevelItem(4).text(sessLog.C_COUNT) == "{:n}".format(-10) - assert sessLog.listBox.topLevelItem(5).text(sessLog.C_COUNT) == "{:n}".format(20) - assert sessLog.listBox.topLevelItem(6).text(sessLog.C_COUNT) == "{:n}".format(-200) - assert sessLog.listBox.topLevelItem(7).text(sessLog.C_COUNT) == "{:n}".format(100) + item = sessLog.listBox.topLevelItem(0) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(1) + + item = sessLog.listBox.topLevelItem(1) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-100) + + item = sessLog.listBox.topLevelItem(2) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(150) + + item = sessLog.listBox.topLevelItem(3) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-60) + + item = sessLog.listBox.topLevelItem(4) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-10) + + item = sessLog.listBox.topLevelItem(5) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(20) + + item = sessLog.listBox.topLevelItem(6) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-200) + + item = sessLog.listBox.topLevelItem(7) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(100) assert jsonData == [ { @@ -314,10 +406,21 @@ def testToolWritingStats_Filters(qtbot, monkeypatch, nwGUI, projPath, tstPaths): with open(jsonStats, mode="r", encoding="utf-8") as inFile: jsonData = json.load(inFile) - assert sessLog.listBox.topLevelItem(0).text(sessLog.C_COUNT) == "{:n}".format(1) - assert sessLog.listBox.topLevelItem(1).text(sessLog.C_COUNT) == "{:n}".format(300) - assert sessLog.listBox.topLevelItem(2).text(sessLog.C_COUNT) == "{:n}".format(40) - assert sessLog.listBox.topLevelItem(3).text(sessLog.C_COUNT) == "{:n}".format(200) + item = sessLog.listBox.topLevelItem(0) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(1) + + item = sessLog.listBox.topLevelItem(1) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(300) + + item = sessLog.listBox.topLevelItem(2) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(40) + + item = sessLog.listBox.topLevelItem(3) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(200) assert jsonData == [ { @@ -344,16 +447,45 @@ def testToolWritingStats_Filters(qtbot, monkeypatch, nwGUI, projPath, tstPaths): with open(jsonStats, mode="r", encoding="utf-8") as inFile: jsonData = json.load(inFile) - assert sessLog.listBox.topLevelItem(0).text(sessLog.C_COUNT) == "{:n}".format(1) - assert sessLog.listBox.topLevelItem(1).text(sessLog.C_COUNT) == "{:n}".format(0) - assert sessLog.listBox.topLevelItem(2).text(sessLog.C_COUNT) == "{:n}".format(-200) - assert sessLog.listBox.topLevelItem(3).text(sessLog.C_COUNT) == "{:n}".format(300) - assert sessLog.listBox.topLevelItem(4).text(sessLog.C_COUNT) == "{:n}".format(-120) - assert sessLog.listBox.topLevelItem(5).text(sessLog.C_COUNT) == "{:n}".format(-20) - assert sessLog.listBox.topLevelItem(6).text(sessLog.C_COUNT) == "{:n}".format(40) - assert sessLog.listBox.topLevelItem(7).text(sessLog.C_COUNT) == "{:n}".format(-400) - assert sessLog.listBox.topLevelItem(8).text(sessLog.C_COUNT) == "{:n}".format(200) - assert sessLog.listBox.topLevelItem(9).text(sessLog.C_COUNT) == "{:n}".format(0) + item = sessLog.listBox.topLevelItem(0) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(1) + + item = sessLog.listBox.topLevelItem(1) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(0) + + item = sessLog.listBox.topLevelItem(2) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-200) + + item = sessLog.listBox.topLevelItem(3) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(300) + + item = sessLog.listBox.topLevelItem(4) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-120) + + item = sessLog.listBox.topLevelItem(5) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-20) + + item = sessLog.listBox.topLevelItem(6) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(40) + + item = sessLog.listBox.topLevelItem(7) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-400) + + item = sessLog.listBox.topLevelItem(8) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(200) + + item = sessLog.listBox.topLevelItem(9) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(0) assert jsonData == [ { @@ -390,9 +522,15 @@ def testToolWritingStats_Filters(qtbot, monkeypatch, nwGUI, projPath, tstPaths): ] # Toggle Idle Time - assert sessLog.listBox.topLevelItem(7).text(sessLog.C_IDLE) == "4 %" + item = sessLog.listBox.topLevelItem(7) + assert item is not None + assert item.text(sessLog.C_IDLE) == "4 %" + qtbot.mouseClick(sessLog.showIdleTime, QtMouseLeft) - assert sessLog.listBox.topLevelItem(7).text(sessLog.C_IDLE) == "00:01:10" + + item = sessLog.listBox.topLevelItem(7) + assert item is not None + assert item.text(sessLog.C_IDLE) == "00:01:10" # Group by Day qtbot.mouseClick(sessLog.groupByDay, QtMouseLeft) @@ -402,14 +540,37 @@ def testToolWritingStats_Filters(qtbot, monkeypatch, nwGUI, projPath, tstPaths): with open(jsonStats, mode="r", encoding="utf-8") as inFile: jsonData = json.load(inFile) - assert sessLog.listBox.topLevelItem(0).text(sessLog.C_COUNT) == "{:n}".format(1) - assert sessLog.listBox.topLevelItem(1).text(sessLog.C_COUNT) == "{:n}".format(-200) - assert sessLog.listBox.topLevelItem(2).text(sessLog.C_COUNT) == "{:n}".format(180) - assert sessLog.listBox.topLevelItem(3).text(sessLog.C_COUNT) == "{:n}".format(-20) - assert sessLog.listBox.topLevelItem(4).text(sessLog.C_COUNT) == "{:n}".format(40) - assert sessLog.listBox.topLevelItem(5).text(sessLog.C_COUNT) == "{:n}".format(-400) - assert sessLog.listBox.topLevelItem(6).text(sessLog.C_COUNT) == "{:n}".format(200) - assert sessLog.listBox.topLevelItem(7).text(sessLog.C_COUNT) == "{:n}".format(0) + item = sessLog.listBox.topLevelItem(0) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(1) + + item = sessLog.listBox.topLevelItem(1) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-200) + + item = sessLog.listBox.topLevelItem(2) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(180) + + item = sessLog.listBox.topLevelItem(3) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-20) + + item = sessLog.listBox.topLevelItem(4) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(40) + + item = sessLog.listBox.topLevelItem(5) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(-400) + + item = sessLog.listBox.topLevelItem(6) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(200) + + item = sessLog.listBox.topLevelItem(7) + assert item is not None + assert item.text(sessLog.C_COUNT) == "{:n}".format(0) assert jsonData == [ { diff --git a/tests/tools.py b/tests/tools.py index a21ac432..3be25040 100644 --- a/tests/tools.py +++ b/tests/tools.py @@ -241,5 +241,7 @@ class SimpleDialog(QDialog): def addWidget(self, widget: QWidget) -> None: self._widget = widget - self.layout().addWidget(widget) + layout = self.layout() + assert layout is not None + layout.addWidget(widget) return