From e04c67ac4c8a686832e7a1136a8f32465a0e0956 Mon Sep 17 00:00:00 2001
From: Ilya Kitaev <mbg033@gmail.com>
Date: Thu, 31 Mar 2016 16:38:57 +0300
Subject: [PATCH] Wallet::refresh + tests

---
 src/wallet/wallet2_api.cpp         | 13 +++++++++++++
 src/wallet/wallet2_api.h           |  3 +++
 tests/libwallet_api_tests/main.cpp | 12 ++++++++++++
 3 files changed, 28 insertions(+)

diff --git a/src/wallet/wallet2_api.cpp b/src/wallet/wallet2_api.cpp
index faf2778d3..e6ed249cc 100644
--- a/src/wallet/wallet2_api.cpp
+++ b/src/wallet/wallet2_api.cpp
@@ -76,6 +76,7 @@ public:
     uint64_t balance() const;
     uint64_t unlockedBalance() const;
     std::string displayAmount(uint64_t amount) const;
+    bool refresh();
 
 
 private:
@@ -293,6 +294,18 @@ std::string WalletImpl::displayAmount(uint64_t amount) const
     return cryptonote::print_money(amount);
 }
 
+bool WalletImpl::refresh()
+{
+    clearStatus();
+    try {
+        m_wallet->refresh();
+    } catch (const std::exception &e) {
+        m_status = Status_Error;
+        m_errorString = e.what();
+    }
+    return m_status == Status_Ok;
+}
+
 bool WalletImpl::connectToDaemon()
 {
     bool result = m_wallet->check_connection();
diff --git a/src/wallet/wallet2_api.h b/src/wallet/wallet2_api.h
index a56043e9e..c818608ed 100644
--- a/src/wallet/wallet2_api.h
+++ b/src/wallet/wallet2_api.h
@@ -74,6 +74,9 @@ struct Wallet
     virtual std::string displayAmount(uint64_t amount) const = 0;
     // TODO?
     // virtual uint64_t unlockedDustBalance() const = 0;
+    // TODO refresh
+    virtual bool refresh() = 0;
+    // TODO transfer
 };
 
 /**
diff --git a/tests/libwallet_api_tests/main.cpp b/tests/libwallet_api_tests/main.cpp
index d5bdc8d67..d935a38b7 100644
--- a/tests/libwallet_api_tests/main.cpp
+++ b/tests/libwallet_api_tests/main.cpp
@@ -71,10 +71,13 @@ struct WalletManagerTest : public testing::Test
     const char * WALLET_PASS2 = "password22";
     const char * WALLET_LANG = "English";
 
+
     // TODO: add test wallets to the source tree (as they have some balance mined)?
     const char * TESTNET_WALLET_NAME = "/home/mbg033/dev/monero/testnet/wallet_01.bin";
     const char * TESTNET_WALLET_PASS = "";
 
+    const char * TESTNET_DAEMON_ADDRESS = "localhost:38081";
+
     WalletManagerTest()
     {
         std::cout << __FUNCTION__ << std::endl;
@@ -249,6 +252,15 @@ TEST_F(WalletManagerTest, WalletShowsBalance)
     ASSERT_TRUE(wmgr->closeWallet(wallet2));
 }
 
+TEST_F(WalletManagerTest, WalletRefresh)
+{
+    Bitmonero::Wallet * wallet1 = wmgr->openWallet(TESTNET_WALLET_NAME, TESTNET_WALLET_PASS, true);
+    // make sure testnet daemon is running
+    ASSERT_TRUE(wallet1->init(TESTNET_DAEMON_ADDRESS, 0));
+    ASSERT_TRUE(wallet1->refresh());
+    ASSERT_TRUE(wmgr->closeWallet(wallet1));
+}
+
 
 int main(int argc, char** argv)
 {