aboutsummaryrefslogtreecommitdiff
path: root/src/qt/test/wallettests.cpp
diff options
context:
space:
mode:
authorfurszy <matiasfurszyfer@protonmail.com>2022-12-17 09:39:24 -0300
committerfurszy <matiasfurszyfer@protonmail.com>2023-04-03 17:23:43 -0300
commit306aab5bb471904faed325d9f3b38b7e891c7bbb (patch)
tree141dc8478e756c7bb173f835b34eeba413b886dd /src/qt/test/wallettests.cpp
parent2f76ac0383904123676f1b4eeba0f772a4c5cb5d (diff)
downloadbitcoin-306aab5bb471904faed325d9f3b38b7e891c7bbb.tar.xz
test,gui: decouple widgets and model into a MiniGui struct
So it can be reused across tests.
Diffstat (limited to 'src/qt/test/wallettests.cpp')
-rw-r--r--src/qt/test/wallettests.cpp43
1 files changed, 31 insertions, 12 deletions
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<CWallet> SetupDescriptorsWallet(interfaces::Node& node, TestChai
return wallet;
}
+struct MiniGUI {
+public:
+ SendCoinsDialog sendCoinsDialog;
+ TransactionView transactionView;
+ OptionsModel optionsModel;
+ std::unique_ptr<ClientModel> clientModel;
+ std::unique_ptr<WalletModel> 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<ClientModel>(node, &optionsModel);
+ }
+
+ void initModelForWallet(interfaces::Node& node, const std::shared_ptr<CWallet>& wallet, const PlatformStyle* platformStyle)
+ {
+ WalletContext& context = *node.walletLoader().context();
+ AddWallet(context, wallet);
+ walletModel = std::make_unique<WalletModel>(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<CWallet>& wallet)
{
// Create widgets for sending coins and listing transactions.
std::unique_ptr<const PlatformStyle> 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();