From 58fa3e64ec0248ae93f39a71acfb91b86537152d Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 1 Feb 2024 00:15:39 +0100 Subject: [PATCH] Add test coverage --- tests/test_core/test_core_coretools.py | 69 +++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 6 deletions(-) diff --git a/tests/test_core/test_core_coretools.py b/tests/test_core/test_core_coretools.py index bcf545d8..d8dec316 100644 --- a/tests/test_core/test_core_coretools.py +++ b/tests/test_core/test_core_coretools.py @@ -31,7 +31,7 @@ from tools import C, NWD_IGNORE, buildTestProject, cmpFiles, XML_IGNORE from mocked import causeOSError from novelwriter import CONFIG -from novelwriter.constants import nwItemClass +from novelwriter.constants import nwFiles, nwItemClass from novelwriter.core.project import NWProject from novelwriter.core.coretools import DocDuplicator, DocMerger, DocSplitter, ProjectBuilder @@ -466,7 +466,7 @@ def testCoreTools_ProjectBuilderA(monkeypatch, fncPath, tstPaths, mockRnd): @pytest.mark.core -def testCoreTools_ProjectBuilderB(monkeypatch, fncPath, tstPaths, mockRnd): +def testCoreTools_ProjectBuilderB(monkeypatch, fncPath, tstPaths, mockRnd): """Create a new project from a project dictionary, without chapters.""" monkeypatch.setattr("uuid.uuid4", lambda *a: uuid.UUID("d0f3fe10-c6e6-4310-8bfd-181eb4224eed")) @@ -500,11 +500,68 @@ def testCoreTools_ProjectBuilderB(monkeypatch, fncPath, tstPaths, mockRnd): # END Test testCoreTools_ProjectBuilderB +@pytest.mark.core +def testCoreTools_ProjectBuilderTemplate(monkeypatch, mockGUI, prjLipsum, fncPath): + """Create a new project copied from existing project.""" + srcPath = prjLipsum / nwFiles.PROJ_FILE + dstPath = fncPath / "lipsum" + data = { + "name": "Test Project", + "author": "Jane Doe", + "language": "en_US", + "path": dstPath, + "template": srcPath, + } + + builder = ProjectBuilder() + + # No path set + assert builder.buildProject({"template": srcPath}) is False + + # No project at path + assert builder.buildProject({"path": fncPath, "template": fncPath}) is False + + # Cannot copy to existing folder + assert builder.buildProject({"path": fncPath, "template": srcPath}) is False + + # Copy project properly + assert builder.buildProject(data) is True + + # Check Copy + # ========== + + srcProject = NWProject() + srcProject.openProject(srcPath) + + dstProject = NWProject() + dstProject.openProject(dstPath) + + # UUID should be different + assert srcProject.data.uuid != dstProject.data.uuid + + # Name should be different + assert srcProject.data.name == "Lorem Ipsum" + assert dstProject.data.name == "Test Project" + + # Author should be different + assert srcProject.data.author == "lipsum.com" + assert dstProject.data.author == "Jane Doe" + + # Language should be different + assert srcProject.data.language == "en_GB" + assert dstProject.data.language == "en_US" + + # Counts should be more or less zeroed + assert dstProject.data.saveCount < 5 + assert dstProject.data.autoCount < 5 + assert dstProject.data.editTime < 10 + +# END Test testCoreTools_ProjectBuilderTemplate + + @pytest.mark.core def testCoreTools_ProjectBuilderSample(monkeypatch, mockGUI, fncPath, tstPaths): - """Check that we can create a new project can be created from the - provided sample project via a zip file. - """ + """Create a new sample project.""" data = { "name": "Test Sample", "author": "Jane Doe", @@ -515,7 +572,7 @@ def testCoreTools_ProjectBuilderSample(monkeypatch, mockGUI, fncPath, tstPaths): builder = ProjectBuilder() # No path set - assert builder.buildProject({"popSample": True}) is False + assert builder.buildProject({"sample": True}) is False # Force the lookup path for assets to our temp folder srcSample = CONFIG._appRoot / "sample"