diff --git a/tests/reference/itemedit_nwProject.nwx b/tests/reference/itemedit_nwProject.nwx new file mode 100644 index 00000000..b55ba18e --- /dev/null +++ b/tests/reference/itemedit_nwProject.nwx @@ -0,0 +1,58 @@ + + + + + + + + False + + + + Novel + ROOT + NOVEL + 0 + False + + + New Chapter + FOLDER + NOVEL + 0 + False + + + Just a Page + FILE + NOVEL + 1 + False + PAGE + 0 + 0 + 0 + + + Characters + ROOT + CHARACTER + 0 + False + + + Plot + ROOT + PLOT + 0 + False + + + World + ROOT + WORLD + 0 + False + + + diff --git a/tests/reference/projedit_nwProject.nwx b/tests/reference/projedit_nwProject.nwx new file mode 100644 index 00000000..2cd49256 --- /dev/null +++ b/tests/reference/projedit_nwProject.nwx @@ -0,0 +1,60 @@ + + + + Project Name + Project Title + Jane Doe + John Doh + + + False + + + + Novel + ROOT + NOVEL + 0 + False + + + New Chapter + FOLDER + NOVEL + 0 + False + + + New Scene + FILE + NOVEL + 0 + False + SCENE + 0 + 0 + 0 + + + Characters + ROOT + CHARACTER + 0 + False + + + Plot + ROOT + PLOT + 0 + False + + + World + ROOT + WORLD + 0 + False + + + diff --git a/tests/test_gui.py b/tests/test_gui.py index 842158cc..c5584edf 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -4,9 +4,14 @@ import nw, pytest from nwtools import * + from os import path, unlink from PyQt5.QtCore import Qt +from nw.gui.projecteditor import GuiProjectEditor +from nw.gui.itemeditor import GuiItemEditor +from nw.enum import * + keyDelay = 10 stepDelay = 50 testDir = path.dirname(__file__) @@ -94,8 +99,8 @@ def testMainWindows(qtbot, tmpdir): qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay) qtbot.wait(stepDelay) - nwGUI.docEditor._runCounter() - qtbot.wait(1000) + nwGUI.docEditor.wCounter.run() + qtbot.wait(stepDelay) # Save the document assert nwGUI.docEditor.docChanged @@ -109,3 +114,104 @@ def testMainWindows(qtbot, tmpdir): assert cmpFiles(sceneFile, path.join(testRef,"gui_1489056e0916_main.nwd")) # qtbot.stopForInteraction() + +@pytest.mark.gui +def testProjectEditor(qtbot, tmpdir): + confDir = str(tmpdir.mkdir("conf")) + projDir = str(tmpdir.mkdir("project")) + nwGUI = nw.main(["--testmode","--config=%s" % confDir]) + qtbot.addWidget(nwGUI) + nwGUI.show() + qtbot.waitForWindowShown(nwGUI) + qtbot.wait(stepDelay) + + # Create new, save, open project + nwGUI.theProject.handleSeed = 42 + assert nwGUI.theProject.setProjectPath(projDir) + assert nwGUI.newProject() + assert nwGUI.theProject.setProjectPath(projDir) + + projEdit = GuiProjectEditor(nwGUI, nwGUI.theProject) + qtbot.addWidget(projEdit) + + for c in "Project Name": + qtbot.keyClick(projEdit.editName, c, delay=keyDelay) + for c in "Project Title": + qtbot.keyClick(projEdit.editTitle, c, delay=keyDelay) + for c in "Jane Doe": + qtbot.keyClick(projEdit.editAuthors, c, delay=keyDelay) + qtbot.keyClick(projEdit.editAuthors, Qt.Key_Return, delay=keyDelay) + for c in "John Doh": + qtbot.keyClick(projEdit.editAuthors, c, delay=keyDelay) + + qtbot.mouseClick(projEdit.saveButton, Qt.LeftButton) + + projEdit = GuiProjectEditor(nwGUI, nwGUI.theProject) + qtbot.addWidget(projEdit) + assert projEdit.editName.text() == "Project Name" + assert projEdit.editTitle.text() == "Project Title" + theAuth = projEdit.editAuthors.toPlainText().strip().splitlines() + assert len(theAuth) == 2 + assert theAuth[0] == "Jane Doe" + assert theAuth[1] == "John Doh" + + qtbot.mouseClick(projEdit.closeButton, Qt.LeftButton) + + qtbot.wait(stepDelay) + assert nwGUI.saveProject() + qtbot.wait(stepDelay) + + # Check the files + projFile = path.join(projDir,"nwProject.nwx") + assert cmpFiles(projFile, path.join(testRef,"projedit_nwProject.nwx"), [2]) + + # qtbot.stopForInteraction() + +@pytest.mark.gui +def testItemEditor(qtbot, tmpdir): + confDir = str(tmpdir.mkdir("conf")) + projDir = str(tmpdir.mkdir("project")) + nwGUI = nw.main(["--testmode","--config=%s" % confDir]) + qtbot.addWidget(nwGUI) + nwGUI.show() + qtbot.waitForWindowShown(nwGUI) + qtbot.wait(stepDelay) + + # Create new, save, open project + nwGUI.theProject.handleSeed = 42 + assert nwGUI.theProject.setProjectPath(projDir) + assert nwGUI.newProject() + assert nwGUI.theProject.setProjectPath(projDir) + + itemEdit = GuiItemEditor(nwGUI, nwGUI.theProject, "31489056e0916") + qtbot.addWidget(itemEdit) + + assert itemEdit.editName.text() == "New Scene" + assert itemEdit.editStatus.currentData() == 0 + assert itemEdit.editLayout.currentData() == nwItemLayout.SCENE + + for c in "Just a Page": + qtbot.keyClick(itemEdit.editName, c, delay=keyDelay) + itemEdit.editStatus.setCurrentIndex(1) + layoutIdx = itemEdit.editLayout.findData(nwItemLayout.PAGE) + itemEdit.editLayout.setCurrentIndex(layoutIdx) + + qtbot.mouseClick(itemEdit.saveButton, Qt.LeftButton) + + itemEdit = GuiItemEditor(nwGUI, nwGUI.theProject, "31489056e0916") + qtbot.addWidget(itemEdit) + assert itemEdit.editName.text() == "Just a Page" + assert itemEdit.editStatus.currentData() == 1 + assert itemEdit.editLayout.currentData() == nwItemLayout.PAGE + + qtbot.mouseClick(itemEdit.closeButton, Qt.LeftButton) + + qtbot.wait(stepDelay) + assert nwGUI.saveProject() + qtbot.wait(stepDelay) + + # Check the files + projFile = path.join(projDir,"nwProject.nwx") + assert cmpFiles(projFile, path.join(testRef,"itemedit_nwProject.nwx"), [2]) + + # qtbot.stopForInteraction()