From 1dc54cd13f5eb8256ab3ff88f39c4ac05efff538 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Sun, 6 Sep 2015 14:28:27 +0200 Subject: [PATCH] Fix bugs in process_cfg_account + tests --- res/ui/account_cfg.ui | 43 ------- src/cutecoin/gui/process_cfg_account.py | 23 ++-- .../tests/process_cfg_account/__init__.py | 0 .../process_cfg_account/test_add_account.py | 105 ++++++++++++++++++ .../tests/process_cfg_community/__init__.py | 57 ---------- .../test_add_community.py | 5 + 6 files changed, 121 insertions(+), 112 deletions(-) create mode 100644 src/cutecoin/tests/process_cfg_account/__init__.py create mode 100644 src/cutecoin/tests/process_cfg_account/test_add_account.py diff --git a/res/ui/account_cfg.ui b/res/ui/account_cfg.ui index c76589da..a2c9d012 100644 --- a/res/ui/account_cfg.ui +++ b/res/ui/account_cfg.ui @@ -57,33 +57,6 @@ </item> </layout> </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_7"> - <property name="topMargin"> - <number>6</number> - </property> - <item> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Wallets</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="spinbox_wallets"> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="value"> - <number>1</number> - </property> - </widget> - </item> - </layout> - </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_8"> <property name="topMargin"> @@ -475,22 +448,6 @@ </hint> </hints> </connection> - <connection> - <sender>spinbox_wallets</sender> - <signal>valueChanged(int)</signal> - <receiver>AccountConfigurationDialog</receiver> - <slot>action_edit_account_parameters()</slot> - <hints> - <hint type="sourcelabel"> - <x>285</x> - <y>127</y> - </hint> - <hint type="destinationlabel"> - <x>199</x> - <y>118</y> - </hint> - </hints> - </connection> <connection> <sender>button_delete</sender> <signal>clicked()</signal> diff --git a/src/cutecoin/gui/process_cfg_account.py b/src/cutecoin/gui/process_cfg_account.py index 5906db17..9a5a6ec3 100644 --- a/src/cutecoin/gui/process_cfg_account.py +++ b/src/cutecoin/gui/process_cfg_account.py @@ -4,8 +4,7 @@ Created on 6 mars 2014 @author: inso """ import logging -import requests -from ucoinpy.documents.peer import Peer +import asyncio from ucoinpy.key import SigningKey from ..gen_resources.account_cfg_uic import Ui_AccountConfigurationDialog from ..gui.process_cfg_community import ProcessConfigureCommunity @@ -122,12 +121,9 @@ class StepPageCommunities(Step): if self.config_dialog.password_asker.result() == QDialog.Rejected: return - nb_wallets = self.config_dialog.spinbox_wallets.value() - self.config_dialog.account.set_walletpool_size(nb_wallets, password) - self.config_dialog.app.add_account(self.config_dialog.account) if len(self.config_dialog.app.accounts) == 1: - self.config_dialog.app.default_account = self.config_dialog.account.name + self.config_dialog.app.preferences['account'] = self.config_dialog.account.name self.config_dialog.app.save(self.config_dialog.account) self.config_dialog.app.current_account = self.config_dialog.account @@ -196,17 +192,14 @@ class ProcessConfigureAccount(QDialog, Ui_AccountConfigurationDialog): self.list_communities.setModel(CommunitiesListModel(self.account)) def action_edit_account_key(self): - if self.step.is_valid(): - self.button_next.setEnabled(True) - else: - self.button_next.setEnabled(False) + self.button_generate.setEnabled(self.step.is_valid()) + self.button_next.setEnabled(self.step.is_valid()) def action_show_pubkey(self): salt = self.edit_salt.text() password = self.edit_password.text() pubkey = SigningKey(salt, password).pubkey - QMessageBox.information(self, self.tr("Public key"), - self.tr("These parameters pubkeys are : {0}").format(pubkey)) + self.label_info.setText(pubkey) def action_edit_account_parameters(self): if self.step.is_valid(): @@ -255,5 +248,11 @@ Are you sure ?""")) self.stacked_pages.setCurrentIndex(previous_index) self.step.display_page() + def async_exec(self): + future = asyncio.Future() + self.finished.connect(lambda r: future.set_result(r)) + self.open() + return future + def accept(self): super().accept() diff --git a/src/cutecoin/tests/process_cfg_account/__init__.py b/src/cutecoin/tests/process_cfg_account/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/cutecoin/tests/process_cfg_account/test_add_account.py b/src/cutecoin/tests/process_cfg_account/test_add_account.py new file mode 100644 index 00000000..a34e07d6 --- /dev/null +++ b/src/cutecoin/tests/process_cfg_account/test_add_account.py @@ -0,0 +1,105 @@ +import sys +import unittest +import asyncio +import quamash +import logging +from PyQt5.QtWidgets import QDialog +from PyQt5.QtCore import QLocale, Qt +from PyQt5.QtTest import QTest +from cutecoin.tests.mocks.bma import new_blockchain +from cutecoin.tests.mocks.access_manager import MockNetworkAccessManager +from cutecoin.core.registry.identities import IdentitiesRegistry +from cutecoin.gui.process_cfg_account import ProcessConfigureAccount +from cutecoin.gui.password_asker import PasswordAskerDialog +from cutecoin.core.app import Application +from cutecoin.core.account import Account +from cutecoin.tests import get_application + + +class ProcessAddCommunity(unittest.TestCase): + def setUp(self): + self.qapplication = get_application() + self.network_manager = MockNetworkAccessManager() + QLocale.setDefault(QLocale("en_GB")) + self.lp = quamash.QEventLoop(self.qapplication) + asyncio.set_event_loop(self.lp) + self.identities_registry = IdentitiesRegistry() + + self.application = Application(self.qapplication, self.lp, self.network_manager, self.identities_registry) + self.application.preferences['notifications'] = False + # Salt/password : "testcutecoin/testcutecoin" + # Pubkey : 7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ + self.account = Account("testcutecoin", "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ", + "test", [], [], [], self.identities_registry) + self.password_asker = PasswordAskerDialog(self.account) + self.password_asker.password = "testcutecoin" + self.password_asker.remember = True + + def tearDown(self): + try: + self.lp.close() + finally: + asyncio.set_event_loop(None) + + def test_create_account(self): + process_account = ProcessConfigureAccount(self.application, + None) + + @asyncio.coroutine + def open_dialog(process_account): + result = yield from process_account.async_exec() + self.assertEqual(result, QDialog.Accepted) + + def close_dialog(): + if process_account.isVisible(): + process_account.close() + + @asyncio.coroutine + def exec_test(): + QTest.keyClicks(process_account.edit_account_name, "test") + self.assertEqual(process_account.stacked_pages.currentWidget(), + process_account.page_init, + msg="Current widget : {0}".format(process_account.stacked_pages.currentWidget().objectName())) + QTest.mouseClick(process_account.button_next, Qt.LeftButton) + + self.assertEqual(process_account.stacked_pages.currentWidget(), + process_account.page_gpg, + msg="Current widget : {0}".format(process_account.stacked_pages.currentWidget().objectName())) + + QTest.keyClicks(process_account.edit_salt, "testcutecoin") + self.assertFalse(process_account.button_next.isEnabled()) + self.assertFalse(process_account.button_generate.isEnabled()) + QTest.keyClicks(process_account.edit_password, "testcutecoin") + self.assertFalse(process_account.button_next.isEnabled()) + self.assertFalse(process_account.button_generate.isEnabled()) + QTest.keyClicks(process_account.edit_password_repeat, "wrongpassword") + self.assertFalse(process_account.button_next.isEnabled()) + self.assertFalse(process_account.button_generate.isEnabled()) + process_account.edit_password_repeat.setText("") + QTest.keyClicks(process_account.edit_password_repeat, "testcutecoin") + self.assertTrue(process_account.button_next.isEnabled()) + self.assertTrue(process_account.button_generate.isEnabled()) + QTest.mouseClick(process_account.button_generate, Qt.LeftButton) + self.assertEqual(process_account.label_info.text(), + "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ") + QTest.mouseClick(process_account.button_next, Qt.LeftButton) + + self.assertEqual(process_account.stacked_pages.currentWidget(), + process_account.page__communities, + msg="Current widget : {0}".format(process_account.stacked_pages.currentWidget().objectName())) + process_account.password_asker.password = "testcutecoin" + process_account.password_asker.remember = True + yield from asyncio.sleep(1) + QTest.mouseClick(process_account.button_next, Qt.LeftButton) + self.assertEqual(len(self.application.accounts), 1) + self.assertEqual(self.application.current_account.name, "test") + self.assertEqual(self.application.preferences['account'], "test") + + self.lp.call_later(10, close_dialog) + asyncio.async(exec_test()) + self.lp.run_until_complete(open_dialog(process_account)) + +if __name__ == '__main__': + logging.basicConfig( stream=sys.stderr ) + logging.getLogger().setLevel( logging.DEBUG ) + unittest.main() diff --git a/src/cutecoin/tests/process_cfg_community/__init__.py b/src/cutecoin/tests/process_cfg_community/__init__.py index 95c3e6e1..e69de29b 100644 --- a/src/cutecoin/tests/process_cfg_community/__init__.py +++ b/src/cutecoin/tests/process_cfg_community/__init__.py @@ -1,57 +0,0 @@ -import sys -import unittest -import os -import asyncio -import quamash -from PyQt5.QtWidgets import QMenu -from PyQt5.QtCore import QLocale -from cutecoin.gui.mainwindow import MainWindow -from cutecoin.core.app import Application -from cutecoin.tests import get_application - -class MainWindowMenusTest(unittest.TestCase): - def setUp(self): - self.qapplication = get_application() - QLocale.setDefault(QLocale("en_GB")) - self.lp = quamash.QEventLoop(self.qapplication) - asyncio.set_event_loop(self.lp) - - self.application = Application(self.qapplication, self.lp, None, None) - self.main_window = MainWindow(self.application) - - def tearDown(self): - try: - self.lp.close() - finally: - asyncio.set_event_loop(None) - - 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') - -if __name__ == '__main__': - unittest.main() diff --git a/src/cutecoin/tests/process_cfg_community/test_add_community.py b/src/cutecoin/tests/process_cfg_community/test_add_community.py index 2a716636..ca2c06e3 100644 --- a/src/cutecoin/tests/process_cfg_community/test_add_community.py +++ b/src/cutecoin/tests/process_cfg_community/test_add_community.py @@ -51,6 +51,10 @@ class ProcessAddCommunity(unittest.TestCase): result = yield from process_community.async_exec() self.assertEqual(result, QDialog.Accepted) + def close_dialog(): + if process_community.isVisible(): + process_community.close() + @asyncio.coroutine def exec_test(): mock = new_blockchain.get_mock() @@ -88,6 +92,7 @@ class ProcessAddCommunity(unittest.TestCase): msg="Current widget : {0}".format(process_community.stacked_pages.currentWidget().objectName())) QTest.mouseClick(process_community.button_next, Qt.LeftButton) + self.lp.call_later(15, close_dialog) asyncio.async(exec_test()) self.lp.run_until_complete(open_dialog(process_community)) -- GitLab