Skip to content

Commit 0ad6089

Browse files
committed
feat: add utility to test keychains persistence
1 parent dddc980 commit 0ad6089

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

wallet/src/persist_test_utils.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,37 @@ where
199199

200200
assert_eq!(changeset_read.network, Some(Network::Bitcoin));
201201
}
202+
203+
pub fn persist_keychains<Db, CreateDb>(filename: &str, create_db: CreateDb)
204+
where
205+
CreateDb: Fn(&Path) -> anyhow::Result<Db>,
206+
Db: WalletPersister,
207+
Db::Error: Debug,
208+
{
209+
// create db
210+
let temp_dir = tempfile::tempdir().expect("must create tempdir");
211+
let file_path = temp_dir.path().join(filename);
212+
let mut db = create_db(&file_path).expect("db should get created");
213+
214+
// initialize db
215+
let changeset =
216+
WalletPersister::initialize(&mut db).expect("should initialize and load empty changeset");
217+
assert_eq!(changeset, ChangeSet::default());
218+
219+
let descriptor: Descriptor<DescriptorPublicKey> = DESCRIPTORS[0].parse().unwrap();
220+
let change_descriptor: Descriptor<DescriptorPublicKey> = DESCRIPTORS[1].parse().unwrap();
221+
222+
let changeset = ChangeSet {
223+
descriptor: Some(descriptor.clone()),
224+
change_descriptor: Some(change_descriptor.clone()),
225+
..ChangeSet::default()
226+
};
227+
228+
WalletPersister::persist(&mut db, &changeset).expect("should persist descriptors");
229+
230+
let changeset_read =
231+
WalletPersister::initialize(&mut db).expect("should read persisted changeset");
232+
233+
assert_eq!(changeset_read.descriptor.unwrap(), descriptor);
234+
assert_eq!(changeset_read.change_descriptor.unwrap(), change_descriptor);
235+
}

0 commit comments

Comments
 (0)