@@ -233,3 +233,72 @@ where
233233 assert_eq ! ( changeset_read. descriptor. unwrap( ) , descriptor) ;
234234 assert_eq ! ( changeset_read. change_descriptor. unwrap( ) , change_descriptor) ;
235235}
236+
237+ pub fn persist_keychains_reversed < Db , CreateDb > ( filename : & str , create_db : CreateDb )
238+ where
239+ CreateDb : Fn ( & Path ) -> anyhow:: Result < Db > ,
240+ Db : WalletPersister ,
241+ Db :: Error : Debug ,
242+ {
243+ // create db
244+ let temp_dir = tempfile:: tempdir ( ) . expect ( "must create tempdir" ) ;
245+ let file_path = temp_dir. path ( ) . join ( filename) ;
246+ let mut db = create_db ( & file_path) . expect ( "db should get created" ) ;
247+
248+ // initialize db
249+ let changeset =
250+ WalletPersister :: initialize ( & mut db) . expect ( "should initialize and load empty changeset" ) ;
251+ assert_eq ! ( changeset, ChangeSet :: default ( ) ) ;
252+
253+ let descriptor: Descriptor < DescriptorPublicKey > = DESCRIPTORS [ 1 ] . parse ( ) . unwrap ( ) ;
254+ let change_descriptor: Descriptor < DescriptorPublicKey > = DESCRIPTORS [ 0 ] . parse ( ) . unwrap ( ) ;
255+
256+ let changeset = ChangeSet {
257+ descriptor : Some ( descriptor. clone ( ) ) ,
258+ change_descriptor : Some ( change_descriptor. clone ( ) ) ,
259+ ..ChangeSet :: default ( )
260+ } ;
261+
262+ WalletPersister :: persist ( & mut db, & changeset) . expect ( "should persist descriptors" ) ;
263+
264+ let changeset_read =
265+ WalletPersister :: initialize ( & mut db) . expect ( "should read persisted changeset" ) ;
266+
267+ assert_eq ! ( changeset_read. descriptor. unwrap( ) , descriptor) ;
268+ assert_eq ! ( changeset_read. change_descriptor. unwrap( ) , change_descriptor) ;
269+ }
270+
271+
272+ pub fn persist_single_keychain < Db , CreateDb > ( filename : & str , create_db : CreateDb )
273+ where
274+ CreateDb : Fn ( & Path ) -> anyhow:: Result < Db > ,
275+ Db : WalletPersister ,
276+ Db :: Error : Debug ,
277+ {
278+ // create db
279+ let temp_dir = tempfile:: tempdir ( ) . expect ( "must create tempdir" ) ;
280+ let file_path = temp_dir. path ( ) . join ( filename) ;
281+ let mut db = create_db ( & file_path) . expect ( "db should get created" ) ;
282+
283+ // initialize db
284+ let changeset =
285+ WalletPersister :: initialize ( & mut db) . expect ( "should initialize and load empty changeset" ) ;
286+ assert_eq ! ( changeset, ChangeSet :: default ( ) ) ;
287+
288+ let descriptor: Descriptor < DescriptorPublicKey > = DESCRIPTORS [ 1 ] . parse ( ) . unwrap ( ) ;
289+
290+ let changeset = ChangeSet {
291+ descriptor : Some ( descriptor. clone ( ) ) ,
292+ ..ChangeSet :: default ( )
293+ } ;
294+
295+ WalletPersister :: persist ( & mut db, & changeset) . expect ( "should persist descriptors" ) ;
296+
297+ let changeset_read =
298+ WalletPersister :: initialize ( & mut db) . expect ( "should read persisted changeset" ) ;
299+
300+ assert_eq ! ( changeset_read. descriptor. unwrap( ) , descriptor) ;
301+ assert_eq ! ( changeset_read. change_descriptor, None ) ;
302+ }
303+
304+
0 commit comments