From 306aab5bb471904faed325d9f3b38b7e891c7bbb Mon Sep 17 00:00:00 2001 From: furszy Date: Sat, 17 Dec 2022 09:39:24 -0300 Subject: test,gui: decouple widgets and model into a MiniGui struct So it can be reused across tests. --- src/qt/test/wallettests.cpp | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) (limited to 'src/qt/test/wallettests.cpp') diff --git a/src/qt/test/wallettests.cpp b/src/qt/test/wallettests.cpp index 0f6a166ecc..d3d67969a5 100644 --- a/src/qt/test/wallettests.cpp +++ b/src/qt/test/wallettests.cpp @@ -206,6 +206,32 @@ std::shared_ptr SetupDescriptorsWallet(interfaces::Node& node, TestChai return wallet; } +struct MiniGUI { +public: + SendCoinsDialog sendCoinsDialog; + TransactionView transactionView; + OptionsModel optionsModel; + std::unique_ptr clientModel; + std::unique_ptr walletModel; + + MiniGUI(interfaces::Node& node, const PlatformStyle* platformStyle) : sendCoinsDialog(platformStyle), transactionView(platformStyle), optionsModel(node) { + bilingual_str error; + QVERIFY(optionsModel.Init(error)); + clientModel = std::make_unique(node, &optionsModel); + } + + void initModelForWallet(interfaces::Node& node, const std::shared_ptr& wallet, const PlatformStyle* platformStyle) + { + WalletContext& context = *node.walletLoader().context(); + AddWallet(context, wallet); + walletModel = std::make_unique(interfaces::MakeWallet(context, wallet), *clientModel, platformStyle); + RemoveWallet(context, wallet, /* load_on_start= */ std::nullopt); + sendCoinsDialog.setModel(walletModel.get()); + transactionView.setModel(walletModel.get()); + } + +}; + //! Simple qt wallet tests. // // Test widgets can be debugged interactively calling show() on them and @@ -223,18 +249,11 @@ void TestGUI(interfaces::Node& node, const std::shared_ptr& wallet) { // Create widgets for sending coins and listing transactions. std::unique_ptr platformStyle(PlatformStyle::instantiate("other")); - SendCoinsDialog sendCoinsDialog(platformStyle.get()); - TransactionView transactionView(platformStyle.get()); - OptionsModel optionsModel(node); - bilingual_str error; - QVERIFY(optionsModel.Init(error)); - ClientModel clientModel(node, &optionsModel); - WalletContext& context = *node.walletLoader().context(); - AddWallet(context, wallet); - WalletModel walletModel(interfaces::MakeWallet(context, wallet), clientModel, platformStyle.get()); - RemoveWallet(context, wallet, /* load_on_start= */ std::nullopt); - sendCoinsDialog.setModel(&walletModel); - transactionView.setModel(&walletModel); + MiniGUI mini_gui(node, platformStyle.get()); + mini_gui.initModelForWallet(node, wallet, platformStyle.get()); + WalletModel& walletModel = *mini_gui.walletModel; + SendCoinsDialog& sendCoinsDialog = mini_gui.sendCoinsDialog; + TransactionView& transactionView = mini_gui.transactionView; // Update walletModel cached balance which will trigger an update for the 'labelBalance' QLabel. walletModel.pollBalanceChanged(); -- cgit v1.2.3