@@ -7,11 +7,11 @@ use crate::{
77 miniscript:: descriptor:: { Descriptor , DescriptorPublicKey } ,
88 ChangeSet , WalletPersister ,
99} ;
10+ use bdk_testenv:: { block_id, hash} ;
1011use std:: collections:: BTreeMap ;
1112use std:: fmt:: Debug ;
1213use std:: path:: Path ;
1314use std:: sync:: Arc ;
14- use bdk_testenv:: { block_id, hash} ;
1515
1616pub 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