Add test coverage
This commit is contained in:
@@ -31,7 +31,7 @@ from tools import C, NWD_IGNORE, buildTestProject, cmpFiles, XML_IGNORE
|
|||||||
from mocked import causeOSError
|
from mocked import causeOSError
|
||||||
|
|
||||||
from novelwriter import CONFIG
|
from novelwriter import CONFIG
|
||||||
from novelwriter.constants import nwItemClass
|
from novelwriter.constants import nwFiles, nwItemClass
|
||||||
from novelwriter.core.project import NWProject
|
from novelwriter.core.project import NWProject
|
||||||
from novelwriter.core.coretools import DocDuplicator, DocMerger, DocSplitter, ProjectBuilder
|
from novelwriter.core.coretools import DocDuplicator, DocMerger, DocSplitter, ProjectBuilder
|
||||||
|
|
||||||
@@ -466,7 +466,7 @@ def testCoreTools_ProjectBuilderA(monkeypatch, fncPath, tstPaths, mockRnd):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.core
|
@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."""
|
"""Create a new project from a project dictionary, without chapters."""
|
||||||
monkeypatch.setattr("uuid.uuid4", lambda *a: uuid.UUID("d0f3fe10-c6e6-4310-8bfd-181eb4224eed"))
|
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
|
# 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
|
@pytest.mark.core
|
||||||
def testCoreTools_ProjectBuilderSample(monkeypatch, mockGUI, fncPath, tstPaths):
|
def testCoreTools_ProjectBuilderSample(monkeypatch, mockGUI, fncPath, tstPaths):
|
||||||
"""Check that we can create a new project can be created from the
|
"""Create a new sample project."""
|
||||||
provided sample project via a zip file.
|
|
||||||
"""
|
|
||||||
data = {
|
data = {
|
||||||
"name": "Test Sample",
|
"name": "Test Sample",
|
||||||
"author": "Jane Doe",
|
"author": "Jane Doe",
|
||||||
@@ -515,7 +572,7 @@ def testCoreTools_ProjectBuilderSample(monkeypatch, mockGUI, fncPath, tstPaths):
|
|||||||
builder = ProjectBuilder()
|
builder = ProjectBuilder()
|
||||||
|
|
||||||
# No path set
|
# 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
|
# Force the lookup path for assets to our temp folder
|
||||||
srcSample = CONFIG._appRoot / "sample"
|
srcSample = CONFIG._appRoot / "sample"
|
||||||
|
|||||||
Reference in New Issue
Block a user