Skip to content
Snippets Groups Projects
Commit f6565e9b authored by Vincent Texier's avatar Vincent Texier
Browse files

Refactor unit tests

Refactor export account filedialog to be tested
parent 75192da6
No related branches found
No related tags found
No related merge requests found
......@@ -103,6 +103,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.open_ucoin_info = lambda: QDesktopServices.openUrl(QUrl("http://ucoin.io/theoretical/"))
self.homescreen.button_info.clicked.connect(self.open_ucoin_info)
self.export_dialog = None
# TODO: There are too much refresh() calls on startup
self.refresh()
......@@ -350,11 +352,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
dialog.exec_()
def export_account(self):
selected_file = QFileDialog.getSaveFileName(self,
self.tr("Export an account"),
"",
self.tr("All account files (*.acc)"))
path = ""
# Testable way off using a QFileDialog
self.export_dialog = QFileDialog(self)
self.export_dialog.setObjectName('ExportFileDialog')
self.export_dialog.setWindowTitle(self.tr("Export an account"))
self.export_dialog.setNameFilter(self.tr("All account files (*.acc)"))
self.export_dialog.setLabelText(QFileDialog.Accept, self.tr('Export'))
self.export_dialog.accepted.connect(self.export_account_accepted)
self.export_dialog.show()
def export_account_accepted(self):
selected_file = self.export_dialog.selectedFiles()
if selected_file:
if selected_file[0][-4:] == ".acc":
path = selected_file[0]
else:
......
import unittest
# run all tests
unittest.TextTestRunner().run(unittest.defaultTestLoader.discover(start_dir='cutecoin.tests', pattern='test_*'))
# -*- coding: utf-8 -*-
import sys
import unittest
import gc
import PyQt5
from PyQt5.QtWidgets import QApplication, QMenu
from PyQt5.QtCore import QLocale, QTimer
from cutecoin.gui.mainwindow import MainWindow
from cutecoin.core.app import Application
# Qapplication cause a core dumped when re-run in setup
# set it as global var
qapplication = QApplication(sys.argv)
class MainWindowDialogsTest(unittest.TestCase):
def setUp(self):
QLocale.setDefault(QLocale("en_GB"))
self.application = Application(sys.argv)
self.main_window = MainWindow(self.application)
def test_action_about(self):
# select menu
self.main_window.actionAbout.trigger()
widgets = qapplication.topLevelWidgets()
for widget in widgets:
if isinstance(widget, PyQt5.QtWidgets.QDialog):
self.assertEqual(widget.objectName(), 'AboutPopup')
self.assertEqual(widget.isVisible(), True)
widget.close()
break
def test_action_add_account(self):
# asynchronous test, cause dialog is waiting user response
QTimer.singleShot(0, self._async_test_action_add_account)
# select menu
self.main_window.action_add_account.trigger()
def _async_test_action_add_account(self):
widgets = qapplication.topLevelWidgets()
for widget in widgets:
if isinstance(widget, PyQt5.QtWidgets.QDialog):
self.assertEqual(widget.objectName(), 'AccountConfigurationDialog')
self.assertEqual(widget.isVisible(), True)
widget.close()
break
#
# # fixme: require a app.current_account fixture
# # def test_action_configure_account(self):
# # # asynchronous test, cause dialog is waiting user response
# # QTimer.singleShot(0, self._async_test_action_configure_account)
# # # select about menu
# # self.main_window.action_configure_parameters.trigger()
# #
# # def _async_test_action_configure_account(self):
# # widgets = qapplication.topLevelWidgets()
# # for widget in widgets:
# # if isinstance(widget, PyQt5.QtWidgets.QDialog):
# # self.assertEqual(widget.objectName(), 'AccountConfigurationDialog')
# # self.assertEqual(widget.isVisible(), True)
# # widget.close()
# # break
#
def test_action_export_account(self):
# select menu
self.main_window.action_export.trigger()
widgets = qapplication.topLevelWidgets()
for widget in widgets:
if isinstance(widget, PyQt5.QtWidgets.QFileDialog):
self.assertEqual(widget.objectName(), 'ExportFileDialog')
self.assertTrue(widget.isVisible())
widget.close()
break
if __name__ == '__main__':
unittest.main()
......@@ -14,7 +14,7 @@ from cutecoin.core.app import Application
qapplication = QApplication(sys.argv)
class MainWindowTest(unittest.TestCase):
class MainWindowMenusTest(unittest.TestCase):
def setUp(self):
QLocale.setDefault(QLocale("en_GB"))
self.application = Application(sys.argv)
......@@ -64,19 +64,6 @@ class MainWindowTest(unittest.TestCase):
self.assertEqual(actions[0].objectName(), 'actionTransfer_money')
self.assertEqual(actions[1].objectName(), 'actionCertification')
def test_action_about(self):
# select about menu
self.main_window.actionAbout.trigger()
widgets = qapplication.topLevelWidgets()
dialog = None
for widget in widgets:
if isinstance(widget, PyQt5.QtWidgets.QDialog):
dialog = widget
break
self.assertEqual(dialog.objectName(), 'AboutPopup')
self.assertEqual(dialog.isVisible(), True)
if __name__ == '__main__':
main_window_suite = unittest.TestLoader().loadTestsFromTestCase(MainWindowTest)
runner = unittest.TextTestRunner()
runner.run(main_window_suite)
unittest.main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment