From b088b79ee862019dffed9206ef7babdd4693e48d Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Tue, 5 Nov 2024 18:32:02 +0100 Subject: [PATCH] Add test coverage --- tests/test_core/test_core_buildsettings.py | 42 ++++++++++++++++++++++ tests/test_tools/test_tools_manuscript.py | 9 +++++ 2 files changed, 51 insertions(+) diff --git a/tests/test_core/test_core_buildsettings.py b/tests/test_core/test_core_buildsettings.py index 5d004834..e41f5f4a 100644 --- a/tests/test_core/test_core_buildsettings.py +++ b/tests/test_core/test_core_buildsettings.py @@ -465,3 +465,45 @@ def testCoreBuildSettings_Collection(monkeypatch, mockGUI, fncPath: Path, mockRn ] assert another.lastBuild == buildIDOne assert another.defaultBuild == buildIDTwo + + +@pytest.mark.core +def testCoreBuildSettings_Duplicate(monkeypatch, mockGUI, fncPath: Path, mockRnd): + """Test duplicating builds.""" + project = NWProject() + buildTestProject(project, fncPath) + buildsFile = project.storage.getMetaFile(nwFiles.BUILDS_FILE) + assert isinstance(buildsFile, Path) + + # No initial builds in a fresh project + builds = BuildCollection(project) + assert len(builds) == 0 + assert not buildsFile.exists() + assert builds.lastBuild == "" + assert builds.defaultBuild == "" + + # Create a default build + buildOne = BuildSettings() + buildOne.setName("Test Build") + buildOne.setValue("headings.fmtScene", nwHeadFmt.TITLE) + buildOne.setValue("headings.fmtAltScene", nwHeadFmt.TITLE) + buildOne.setValue("headings.fmtSection", nwHeadFmt.TITLE) + + # Copy it + buildTwo = BuildSettings().duplicate(buildOne) + assert buildTwo.name == "Test Build 2" + + # Raw data + dataOne = buildOne.pack() + dataTwo = buildTwo.pack() + + # Name and UUID should be different + assert dataOne["name"] != dataTwo["name"] + assert dataOne["uuid"] != dataTwo["uuid"] + + # The rest should be equal + assert dataOne["path"] == dataTwo["path"] + assert dataOne["build"] == dataTwo["build"] + assert dataOne["format"] == dataTwo["format"] + assert dataOne["settings"] == dataTwo["settings"] + assert dataOne["content"] == dataTwo["content"] diff --git a/tests/test_tools/test_tools_manuscript.py b/tests/test_tools/test_tools_manuscript.py index 67f64c2a..df528751 100644 --- a/tests/test_tools/test_tools_manuscript.py +++ b/tests/test_tools/test_tools_manuscript.py @@ -138,6 +138,15 @@ def testToolManuscript_Builds(qtbot, nwGUI, projPath): assert build.name == "Test Build" assert manus.buildList.count() == 1 + # Copy the build + manus._buildMap[build.buildID].setSelected(True) + manus._copySelectedBuild() + assert manus.buildList.count() == 2 + + new = manus._getSelectedBuild() + assert new is not None + assert new.name == "Test Build 2" + # Close the dialog should also close the child dialogs manus.btnClose.click() if isinstance(bSettings, GuiBuildSettings):