Skip to content

Commit dddc980

Browse files
committed
feat: add utility fn to test network persistence
1 parent 96953e5 commit dddc980

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

wallet/src/persist_test_utils.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ use crate::{
77
miniscript::descriptor::{Descriptor, DescriptorPublicKey},
88
ChangeSet, WalletPersister,
99
};
10+
use bdk_testenv::{block_id, hash};
1011
use std::collections::BTreeMap;
1112
use std::fmt::Debug;
1213
use std::path::Path;
1314
use std::sync::Arc;
14-
use bdk_testenv::{block_id, hash};
1515

1616
pub const DESCRIPTORS: [&str; 4] = [
1717
"tr([5940b9b9/86'/0'/0']tpubDDVNqmq75GNPWQ9UNKfP43UwjaHU4GYfoPavojQbfpyfZp2KetWgjGBRRAy4tYCrAA6SB11mhQAkqxjh1VtQHyKwT4oYxpwLaGHvoKmtxZf/1/*)#ypcpw2dr",
@@ -169,3 +169,33 @@ where
169169

170170
assert_eq!(changeset, changeset_read_new);
171171
}
172+
173+
pub fn persist_network<Db, CreateDb>(filename: &str, create_db: CreateDb)
174+
where
175+
CreateDb: Fn(&Path) -> anyhow::Result<Db>,
176+
Db: WalletPersister,
177+
Db::Error: Debug,
178+
{
179+
// create db
180+
let temp_dir = tempfile::tempdir().expect("must create tempdir");
181+
let file_path = temp_dir.path().join(filename);
182+
let mut db = create_db(&file_path).expect("db should get created");
183+
184+
// initialize db
185+
let changeset =
186+
WalletPersister::initialize(&mut db).expect("should initialize and load empty changeset");
187+
assert_eq!(changeset, ChangeSet::default());
188+
189+
// persist the network
190+
let changeset = ChangeSet {
191+
network: Some(Network::Bitcoin),
192+
..ChangeSet::default()
193+
};
194+
WalletPersister::persist(&mut db, &changeset).expect("should persist changeset");
195+
196+
// read the persisted changeset
197+
let changeset_read =
198+
WalletPersister::initialize(&mut db).expect("should load persisted changeset");
199+
200+
assert_eq!(changeset_read.network, Some(Network::Bitcoin));
201+
}

0 commit comments

Comments
 (0)