diff --git a/src/testutils/blockchain_tests.rs b/src/testutils/blockchain_tests.rs index b44a9718..7174bf58 100644 --- a/src/testutils/blockchain_tests.rs +++ b/src/testutils/blockchain_tests.rs @@ -394,6 +394,9 @@ macro_rules! bdk_blockchain_tests { #[test] fn test_sync_simple() { + use std::ops::Deref; + use crate::database::Database; + let (wallet, descriptors, mut test_client) = init_single_sig(); let tx = testutils! { @@ -402,7 +405,13 @@ macro_rules! bdk_blockchain_tests { println!("{:?}", tx); let txid = test_client.receive(tx); + // the RPC blockchain needs to call `sync()` during initialization to import the + // addresses (see `init_single_sig()`), so we skip this assertion + #[cfg(not(feature = "test-rpc"))] + assert!(wallet.database().deref().get_sync_time().unwrap().is_none(), "initial sync_time not none"); + wallet.sync(noop_progress(), None).unwrap(); + assert!(wallet.database().deref().get_sync_time().unwrap().is_some(), "sync_time hasn't been updated"); assert_eq!(wallet.get_balance().unwrap(), 50_000, "incorrect balance"); assert_eq!(wallet.list_unspent().unwrap()[0].keychain, KeychainKind::External, "incorrect keychain kind"); diff --git a/src/wallet/mod.rs b/src/wallet/mod.rs index b811662b..2244f927 100644 --- a/src/wallet/mod.rs +++ b/src/wallet/mod.rs @@ -1554,6 +1554,15 @@ where } } + let last_sync_time = ConfirmationTime { + height: maybe_await!(self.client.get_height())?, + timestamp: time::get_timestamp(), + }; + debug!("Saving `last_sync_time` = {:?}", last_sync_time); + self.database + .borrow_mut() + .set_last_sync_time(last_sync_time)?; + Ok(()) }