From 90012aff1757ce2a8e5b3528000d050544dc295e Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Tue, 13 Jun 2023 22:32:17 +0200 Subject: [PATCH] Fix test coverage of writingstats class --- novelwriter/tools/writingstats.py | 2 +- tests/test_tools/test_tools_writingstats.py | 70 +++++++++------------ 2 files changed, 31 insertions(+), 41 deletions(-) diff --git a/novelwriter/tools/writingstats.py b/novelwriter/tools/writingstats.py index ce6833bb..31f91ba7 100644 --- a/novelwriter/tools/writingstats.py +++ b/novelwriter/tools/writingstats.py @@ -471,7 +471,7 @@ class GuiWritingStats(QDialog): self.notesWords.setText(f"{ttNotes:n}") self.totalWords.setText(f"{ttWords:n}") - return True + return ## # Slots diff --git a/tests/test_tools/test_tools_writingstats.py b/tests/test_tools/test_tools_writingstats.py index 8ef82fcb..50ab2e1d 100644 --- a/tests/test_tools/test_tools_writingstats.py +++ b/tests/test_tools/test_tools_writingstats.py @@ -20,14 +20,16 @@ along with this program. If not, see . """ import json +from pathlib import Path import pytest +from tools import getGuiItem, buildTestProject from mocked import causeOSError -from tools import getGuiItem, writeFile, buildTestProject from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QAction, QFileDialog +from novelwriter.constants import nwFiles from novelwriter.tools.writingstats import GuiWritingStats @@ -37,9 +39,11 @@ def testToolWritingStats_Main(qtbot, monkeypatch, nwGUI, projPath, tstPaths): """ # Create a project to work on buildTestProject(nwGUI, projPath) + project = nwGUI.theProject + qtbot.wait(100) assert nwGUI.saveProject() - sessFile = projPath / "meta" / "sessionStats.log" + sessFile: Path = projPath / "meta" / nwFiles.SESS_FILE # Open the Writing Stats dialog nwGUI.mainMenu.aWritingStats.activate(QAction.Trigger) @@ -53,52 +57,38 @@ def testToolWritingStats_Main(qtbot, monkeypatch, nwGUI, projPath, tstPaths): # No initial logfile assert not sessFile.is_file() - assert not sessLog._loadLogFile() + assert list(project.session.iterRecords()) == [] # Make a test log file - writeFile(sessFile, ( - "# Offset 123\n" - "# Start Time End Time Novel Notes Idle\n" - "2020-01-01 21:00:00 2020-01-01 21:00:05 6 0\n" - "2020-01-03 21:00:00 2020-01-03 21:00:15 125 0\n" - "2020-01-03 21:30:00 2020-01-03 21:30:15 125 5\n" - "2020-01-06 21:00:00 2020-01-06 21:00:10 125 5\n" - )) - assert sessFile.is_file() - assert sessLog._loadLogFile() + data = [ + project.session.createInitial(123), + project.session.createRecord("2020-01-01 21:00:00", "2020-01-01 21:00:05", 6, 0, 0), + project.session.createRecord("2020-01-03 21:00:00", "2020-01-03 21:00:15", 125, 0, 0), + project.session.createRecord("2020-01-03 21:30:00", "2020-01-03 21:30:15", 125, 5, 0), + project.session.createRecord("2020-01-06 21:00:00", "2020-01-06 21:00:10", 125, 5, 0), + ] + sessFile.write_text("".join(data), encoding="utf-8") + sessLog._loadLogFile() assert sessLog.wordOffset == 123 assert len(sessLog.logData) == 4 - # Make sure a faulty file can still be read - writeFile(sessFile, ( - "# Offset abc123\n" - "# Start Time End Time Novel Notes Idle\n" - "2020-01-01 21:00:00 2020-01-01 21:00:05 6 0 50\n" - "2020-01-03 21:00:00 2020-01-03 21:00:15 125 0\n" - "2020-01-03 21:30:00 2020-01-03 21:30:15 125 5\n" - "2020-01-06 21:00:00 2020-01-06 21:00:10 125\n" - )) - assert sessLog._loadLogFile() - assert sessLog.wordOffset == 0 - assert len(sessLog.logData) == 3 - # Test Exporting # ============== - writeFile(sessFile, ( - "# Offset 1075\n" - "# Start Time End Time Novel Notes Idle\n" - "2021-01-31 19:00:00 2021-01-31 19:30:00 700 375 0\n" - "2021-02-01 19:00:00 2021-02-01 19:30:00 700 375 10\n" - "2021-02-01 20:00:00 2021-02-01 20:30:00 600 275 20\n" - "2021-02-02 19:00:00 2021-02-02 19:30:00 750 425 30\n" - "2021-02-02 20:00:00 2021-02-02 20:30:00 690 365 40\n" - "2021-02-03 19:00:00 2021-02-03 19:30:00 680 355 50\n" - "2021-02-04 19:00:00 2021-02-04 19:30:00 700 375 60\n" - "2021-02-05 19:00:00 2021-02-05 19:30:00 500 175 70\n" - "2021-02-06 19:00:00 2021-02-06 19:30:00 600 275 80\n" - "2021-02-07 19:00:00 2021-02-07 19:30:00 600 275 90\n" - )) + data = [ + project.session.createInitial(1075), + project.session.createRecord("2021-01-31 19:00:00", "2021-01-31 19:30:00", 700, 375, 0), + project.session.createRecord("2021-02-01 19:00:00", "2021-02-01 19:30:00", 700, 375, 10), + project.session.createRecord("2021-02-01 20:00:00", "2021-02-01 20:30:00", 600, 275, 20), + project.session.createRecord("2021-02-02 19:00:00", "2021-02-02 19:30:00", 750, 425, 30), + project.session.createRecord("2021-02-02 20:00:00", "2021-02-02 20:30:00", 690, 365, 40), + project.session.createRecord("2021-02-03 19:00:00", "2021-02-03 19:30:00", 680, 355, 50), + project.session.createRecord("2021-02-04 19:00:00", "2021-02-04 19:30:00", 700, 375, 60), + project.session.createRecord("2021-02-05 19:00:00", "2021-02-05 19:30:00", 500, 175, 70), + project.session.createRecord("2021-02-06 19:00:00", "2021-02-06 19:30:00", 600, 275, 80), + project.session.createRecord("2021-02-07 19:00:00", "2021-02-07 19:30:00", 600, 275, 90), + ] + sessFile.write_text("".join(data), encoding="utf-8") sessLog.populateGUI() # Make the saving fail