Skip to content
Snippets Groups Projects
Commit 0329a865 authored by inso's avatar inso
Browse files

Some tests

parent c998583e
No related branches found
No related tags found
No related merge requests found
...@@ -56,9 +56,6 @@ class Application(QObject): ...@@ -56,9 +56,6 @@ class Application(QObject):
'ref': 0 'ref': 0
} }
self.load()
self.switch_language()
def switch_language(self): def switch_language(self):
translator = QTranslator(self.qapp) translator = QTranslator(self.qapp)
logging.debug("Loading translations") logging.debug("Loading translations")
......
...@@ -45,7 +45,6 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -45,7 +45,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
QApplication.setWindowIcon(QIcon(":/icons/cutecoin_logo")) QApplication.setWindowIcon(QIcon(":/icons/cutecoin_logo"))
self.app = app self.app = app
self.app.load()
self.initialized = False self.initialized = False
if self.app.preferences["account"] != "": if self.app.preferences["account"] != "":
account = self.app.get_account(self.app.preferences["account"]) account = self.app.get_account(self.app.preferences["account"])
...@@ -65,13 +64,13 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -65,13 +64,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.action_change_account(self.app.get_account(self.app.preferences['account'])) self.action_change_account(self.app.get_account(self.app.preferences['account']))
self.password_asker = None self.password_asker = None
#
self.busybar = QProgressBar(self.statusbar) # self.busybar = QProgressBar(self.statusbar)
self.busybar.setMinimum(0) # self.busybar.setMinimum(0)
self.busybar.setMaximum(0) # self.busybar.setMaximum(0)
self.busybar.setValue(-1) # self.busybar.setValue(-1)
self.statusbar.addWidget(self.busybar) # #self.statusbar.addWidget(self.busybar)
self.busybar.hide() # self.busybar.hide()
self.app.version_requested.connect(self.latest_version_requested) self.app.version_requested.connect(self.latest_version_requested)
self.app.get_last_version() self.app.get_last_version()
...@@ -83,24 +82,24 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -83,24 +82,24 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.status_label.setTextFormat(Qt.RichText) self.status_label.setTextFormat(Qt.RichText)
self.label_time = QLabel("", self) self.label_time = QLabel("", self)
#
self.statusbar.addPermanentWidget(self.status_label, 1) # self.statusbar.addPermanentWidget(self.status_label, 1)
self.statusbar.addPermanentWidget(self.label_time) # self.statusbar.addPermanentWidget(self.label_time)
self.statusbar.addPermanentWidget(self.combo_referential) # self.statusbar.addPermanentWidget(self.combo_referential)
self.update_time() self.update_time()
#
self.homescreen = HomeScreenWidget(self.app) # self.homescreen = HomeScreenWidget(self.app)
self.centralWidget().layout().addWidget(self.homescreen) # self.centralWidget().layout().addWidget(self.homescreen)
self.homescreen.button_new.clicked.connect(self.open_add_account_dialog) # self.homescreen.button_new.clicked.connect(self.open_add_account_dialog)
self.homescreen.button_import.clicked.connect(self.import_account) # self.homescreen.button_import.clicked.connect(self.import_account)
self.open_ucoin_info = lambda: QDesktopServices.openUrl(QUrl("http://ucoin.io/theoretical/")) # self.open_ucoin_info = lambda: QDesktopServices.openUrl(QUrl("http://ucoin.io/theoretical/"))
self.homescreen.button_info.clicked.connect(self.open_ucoin_info) # self.homescreen.button_info.clicked.connect(self.open_ucoin_info)
self.import_dialog = None self.import_dialog = None
self.export_dialog = None self.export_dialog = None
# TODO: There are too much refresh() calls on startup # TODO: There are too much refresh() calls on startup
self.refresh() #self.refresh()
def open_add_account_dialog(self): def open_add_account_dialog(self):
dialog = ProcessConfigureAccount(self.app, None) dialog = ProcessConfigureAccount(self.app, None)
......
...@@ -20,6 +20,8 @@ if __name__ == '__main__': ...@@ -20,6 +20,8 @@ if __name__ == '__main__':
cutecoin = QApplication(sys.argv) cutecoin = QApplication(sys.argv)
loop = QEventLoop(cutecoin) loop = QEventLoop(cutecoin)
app = Application(sys.argv, cutecoin, loop) app = Application(sys.argv, cutecoin, loop)
app.load()
app.switch_language()
asyncio.set_event_loop(loop) asyncio.set_event_loop(loop)
logging.debug("Debug enabled : {0}".format(loop.get_debug())) logging.debug("Debug enabled : {0}".format(loop.get_debug()))
with loop: with loop:
......
import sys import sys
import unittest import unittest
import gc import gc
import os
import asyncio
import quamash
import PyQt5 import PyQt5
from PyQt5.QtWidgets import QApplication, QMenu from PyQt5.QtWidgets import QMenu
from PyQt5.QtCore import QLocale, QTimer from PyQt5.QtCore import QLocale, QTimer
from cutecoin.gui.mainwindow import MainWindow from cutecoin.gui.mainwindow import MainWindow
from cutecoin.core.app import Application from cutecoin.core.app import Application
# Qapplication cause a core dumped when re-run in setup # Qapplication cause a core dumped when re-run in setup
# set it as global var # set it as global var
qapplication = QApplication(sys.argv)
class MainWindowDialogsTest(unittest.TestCase): class MainWindowDialogsTest(unittest.TestCase):
def setUp(self): def setUp(self):
QLocale.setDefault(QLocale("en_GB")) QLocale.setDefault(QLocale("en_GB"))
# self.application = Application(sys.argv, qapplication) self.qapplication = quamash.QApplication([])
# self.main_window = MainWindow(self.application) self.lp = quamash.QEventLoop(self.qapplication)
# asyncio.set_event_loop(self.lp)
self.additional_exceptions = []
self.orig_excepthook = sys.excepthook
def except_handler(loop, ctx):
self.additional_exceptions.append(ctx)
def excepthook(type, *args):
self.lp.stop()
self.orig_excepthook(type, *args)
sys.excepthook = excepthook
self.lp.set_exception_handler(except_handler)
self.application = Application(sys.argv, self.qapplication, self.lp)
self.main_window = MainWindow(self.application)
def tearDown(self):
# delete all top widgets from main QApplication
sys.excepthook = self.orig_excepthook
self.qapplication.quit()
self.lp.stop()
try:
self.lp.close()
finally:
asyncio.set_event_loop(None)
self.qapplication.exit()
for exc in self.additional_exceptions:
if (
os.name == 'nt' and
isinstance(exc['exception'], WindowsError) and
exc['exception'].winerror == 6
):
# ignore Invalid Handle Errors
continue
raise exc['exception']
# def test_action_about(self): # def test_action_about(self):
# # select menu # pass
# select menu
# self.main_window.actionAbout.trigger() # self.main_window.actionAbout.trigger()
# widgets = qapplication.topLevelWidgets() # widgets = self.qapplication.topLevelWidgets()
# for widget in widgets: # for widget in widgets:
# if isinstance(widget, PyQt5.QtWidgets.QDialog): # if isinstance(widget, PyQt5.QtWidgets.QDialog):
# self.assertEqual(widget.objectName(), 'AboutPopup') # if widget.isVisible():
# self.assertEqual(widget.isVisible(), True) # self.assertEqual('AboutPopup', widget.objectName())
# widget.close() # widget.close()
# break # break
# #
# def test_action_add_account(self): # def test_action_add_account(self):
# # asynchronous test, cause dialog is waiting user response # pass
# QTimer.singleShot(0, self._async_test_action_add_account) # asynchronous test, cause dialog is waiting user response
# # select menu #QTimer.singleShot(1, self._async_test_action_add_account)
# select menu
#self.main_window.action_add_account.trigger() #self.main_window.action_add_account.trigger()
# #
# def _async_test_action_add_account(self): # def _async_test_action_add_account(self):
# widgets = self.qapplication.topLevelWidgets()
# for widget in widgets:
# if isinstance(widget, PyQt5.QtWidgets.QDialog):
# if widget.isVisible():
# self.assertEqual('AccountConfigurationDialog', widget.objectName())
# 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() # widgets = qapplication.topLevelWidgets()
# for widget in widgets: # for widget in widgets:
# if isinstance(widget, PyQt5.QtWidgets.QDialog): # if isinstance(widget, PyQt5.QtWidgets.QDialog):
...@@ -43,38 +102,21 @@ class MainWindowDialogsTest(unittest.TestCase): ...@@ -43,38 +102,21 @@ class MainWindowDialogsTest(unittest.TestCase):
# self.assertEqual(widget.isVisible(), True) # self.assertEqual(widget.isVisible(), True)
# widget.close() # widget.close()
# break # 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): # def test_action_export_account(self):
# # select menu # pass
# select menu
# self.main_window.action_export.trigger() # self.main_window.action_export.trigger()
# #
# widgets = qapplication.topLevelWidgets() # widgets = self.qapplication.topLevelWidgets()
# for widget in widgets: # for widget in widgets:
# if isinstance(widget, PyQt5.QtWidgets.QFileDialog): # if isinstance(widget, PyQt5.QtWidgets.QFileDialog):
# self.assertEqual(widget.objectName(), 'ExportFileDialog') # if widget.isVisible():
# self.assertTrue(widget.isVisible()) # self.assertEqual('ExportFileDialog', widget.objectName())
# widget.close() # widget.close()
# break # break
def test_empty(self):
def test_ignoreme(self): self.assertEquals(1, 1)
return
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
import sys import sys
import unittest import unittest
import gc import gc
import PyQt5 import os
import asyncio
import quamash
from PyQt5.QtWidgets import QApplication, QMenu from PyQt5.QtWidgets import QApplication, QMenu
from PyQt5.QtCore import QLocale from PyQt5.QtCore import QLocale
from cutecoin.gui.mainwindow import MainWindow from cutecoin.gui.mainwindow import MainWindow
...@@ -17,52 +19,80 @@ qapplication = QApplication(sys.argv) ...@@ -17,52 +19,80 @@ qapplication = QApplication(sys.argv)
class MainWindowMenusTest(unittest.TestCase): class MainWindowMenusTest(unittest.TestCase):
def setUp(self): def setUp(self):
QLocale.setDefault(QLocale("en_GB")) QLocale.setDefault(QLocale("en_GB"))
# self.application = Application(sys.argv, qapplication) self.lp = quamash.QEventLoop(qapplication)
# self.main_window = MainWindow(self.application) asyncio.set_event_loop(self.lp)
#
# def tearDown(self): self.additional_exceptions = []
# # delete all top widgets from main QApplication
# lw = qapplication.topLevelWidgets() self.orig_excepthook = sys.excepthook
# for w in lw:
# del w def except_handler(loop, ctx):
# gc.collect() self.additional_exceptions.append(ctx)
#
# def test_menubar(self): def excepthook(type, *args):
# children = self.main_window.menubar.children() self.lp.stop()
# menus = [] self.orig_excepthook(type, *args)
# """:type: list[QMenu]"""
# for child in children: sys.excepthook = excepthook
# if isinstance(child, QMenu):
# menus.append(child) self.lp.set_exception_handler(except_handler)
# self.assertEqual(len(menus), 3)
# self.assertEqual(menus[0].objectName(), 'menu_account') self.application = Application(sys.argv, qapplication, self.lp)
# self.assertEqual(menus[1].objectName(), 'menu_contacts') self.main_window = MainWindow(self.application)
# self.assertEqual(menus[2].objectName(), 'menu_actions')
# def tearDown(self):
# def test_menu_account(self): # delete all top widgets from main QApplication
# actions = self.main_window.menu_account.actions()
# """:type: list[QAction]""" sys.excepthook = self.orig_excepthook
# self.assertEqual(len(actions), 10)
# self.assertEqual(actions[0].objectName(), 'action_add_account') try:
# self.assertEqual(actions[2].objectName(), 'action_configure_parameters') self.lp.close()
# self.assertEqual(actions[3].objectName(), 'action_set_as_default') finally:
# self.assertEqual(actions[5].objectName(), 'action_export') asyncio.set_event_loop(None)
# self.assertEqual(actions[6].objectName(), 'action_import')
# self.assertEqual(actions[8].objectName(), 'actionAbout') for exc in self.additional_exceptions:
# self.assertEqual(actions[9].objectName(), 'action_quit') if (
# os.name == 'nt' and
# def test_menu_contacts(self): isinstance(exc['exception'], WindowsError) and
# actions = self.main_window.menu_contacts.actions() exc['exception'].winerror == 6
# """:type: list[QAction]""" ):
# self.assertEqual(len(actions), 3) # ignore Invalid Handle Errors
# self.assertEqual(actions[1].objectName(), 'action_add_a_contact') continue
# raise exc['exception']
# def test_menu_actions(self):
# actions = self.main_window.menu_actions.actions() lw = qapplication.topLevelWidgets()
# """:type: list[QAction]""" for w in lw:
# self.assertEqual(len(actions), 2) del w
# self.assertEqual(actions[0].objectName(), 'actionTransfer_money') gc.collect()
# self.assertEqual(actions[1].objectName(), 'actionCertification')
def test_menubar(self):
children = self.main_window.menubar.children()
menus = []
""":type: list[QMenu]"""
for child in children:
if isinstance(child, QMenu):
menus.append(child)
self.assertEqual(len(menus), 3)
self.assertEqual(menus[0].objectName(), 'menu_file')
self.assertEqual(menus[1].objectName(), 'menu_account')
self.assertEqual(menus[2].objectName(), 'menu_help')
def test_menu_account(self):
actions = self.main_window.menu_account.actions()
""":type: list[QAction]"""
self.assertEqual('action_configure_parameters', actions[1].objectName())
self.assertEqual('action_add_account', actions[2].objectName())
self.assertEqual('actionCertification', actions[4].objectName())
self.assertEqual('actionTransfer_money', actions[5].objectName())
self.assertEqual('action_add_a_contact', actions[7].objectName())
self.assertEqual(9, len(actions))
def test_menu_actions(self):
actions = self.main_window.menu_help.actions()
""":type: list[QAction]"""
self.assertEqual(len(actions), 1)
self.assertEqual(actions[0].objectName(), 'actionAbout')
def test_ignoreme(self): def test_ignoreme(self):
return return
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment