From e185f8787540b1bf851ed1176a1baaa0957b4a85 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 11 Feb 2024 19:09:40 +0100 Subject: [PATCH] Add test coverage --- novelwriter/dialogs/wordlist.py | 5 +-- tests/test_dialogs/test_dlg_wordlist.py | 51 ++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/novelwriter/dialogs/wordlist.py b/novelwriter/dialogs/wordlist.py index 1454dc34..71aaa275 100644 --- a/novelwriter/dialogs/wordlist.py +++ b/novelwriter/dialogs/wordlist.py @@ -58,13 +58,12 @@ class GuiWordList(QDialog): mS = CONFIG.pxInt(250) wW = CONFIG.pxInt(320) wH = CONFIG.pxInt(340) - options = SHARED.project.options self.setMinimumWidth(mS) self.setMinimumHeight(mS) self.resize( - CONFIG.pxInt(options.getInt("GuiWordList", "winWidth", wW)), - CONFIG.pxInt(options.getInt("GuiWordList", "winHeight", wH)) + CONFIG.pxInt(SHARED.project.options.getInt("GuiWordList", "winWidth", wW)), + CONFIG.pxInt(SHARED.project.options.getInt("GuiWordList", "winHeight", wH)) ) # Header diff --git a/tests/test_dialogs/test_dlg_wordlist.py b/tests/test_dialogs/test_dlg_wordlist.py index e1b7d0ec..85723054 100644 --- a/tests/test_dialogs/test_dlg_wordlist.py +++ b/tests/test_dialogs/test_dlg_wordlist.py @@ -23,7 +23,8 @@ from __future__ import annotations import pytest from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QDialog, QAction +from PyQt5.QtWidgets import QDialog, QAction, QFileDialog +from tests.mocked import causeOSError from tools import buildTestProject @@ -33,9 +34,8 @@ from novelwriter.dialogs.wordlist import GuiWordList @pytest.mark.gui -def testDlgWordList_Dialog(qtbot, monkeypatch, nwGUI, projPath): - """test the word list editor. - """ +def testDlgWordList_Dialog(qtbot, monkeypatch, nwGUI, fncPath, projPath): + """test the word list editor.""" buildTestProject(nwGUI, projPath) monkeypatch.setattr(GuiWordList, "exec_", lambda *a: None) @@ -110,16 +110,55 @@ def testDlgWordList_Dialog(qtbot, monkeypatch, nwGUI, projPath): assert wList.listBox.findItems("delete_me", Qt.MatchExactly) == [] assert wList.listBox.item(0).text() == "word_a" # type: ignore - # Save files + # Import/Export + # ============= + expFile = fncPath / "wordlist_export.txt" + impFile = fncPath / "wordlist_import.txt" + wList.show() + + # Export File, OS Error + with monkeypatch.context() as mp: + mp.setattr(QFileDialog, "getSaveFileName", lambda *a, **k: (str(expFile), "")) + mp.setattr("builtins.open", causeOSError) + wList.exportButton.click() + assert not expFile.exists() + + # Export File, OK + with monkeypatch.context() as mp: + mp.setattr(QFileDialog, "getSaveFileName", lambda *a, **k: (str(expFile), "")) + wList.exportButton.click() + assert expFile.exists() + assert expFile.read_text() == "word_a\nword_b\nword_c\nword_d\nword_f\nword_g" + + # Write File + impFile.write_text("word_d\nword_e\nword_f\tword_g word_h word_i\n\n\n") + + # Import File, OS Error + with monkeypatch.context() as mp: + mp.setattr(QFileDialog, "getOpenFileName", lambda *a, **k: (str(impFile), "")) + mp.setattr("builtins.open", causeOSError) + wList.importButton.click() + assert wList.listBox.count() == 6 + + # Import File, OK + with monkeypatch.context() as mp: + mp.setattr(QFileDialog, "getOpenFileName", lambda *a, **k: (str(impFile), "")) + wList.importButton.click() + assert wList.listBox.count() == 9 + + # Save and Check List wList._doSave() userDict.load() - assert len(list(userDict)) == 6 + assert len(list(userDict)) == 9 assert "word_a" in userDict assert "word_b" in userDict assert "word_c" in userDict assert "word_d" in userDict + assert "word_e" in userDict assert "word_f" in userDict assert "word_g" in userDict + assert "word_h" in userDict + assert "word_i" in userDict # qtbot.stop()