@@ -1052,4 +1052,50 @@ mod test {
10521052 assert_eq ! ( filtered. len( ) , 1 ) ;
10531053 assert_eq ! ( filtered[ 0 ] . keychain, KeychainKind :: Internal ) ;
10541054 }
1055+
1056+ #[ test]
1057+ fn test_build_fee_bump_remove_change_output_single_desc ( ) {
1058+ use crate :: test_utils:: * ;
1059+ use bdk_chain:: BlockId ;
1060+ use bitcoin:: { hashes:: Hash , BlockHash , Network } ;
1061+
1062+ let mut wallet = Wallet :: create_single ( get_test_tr_single_sig ( ) )
1063+ . network ( Network :: Regtest )
1064+ . create_wallet_no_persist ( )
1065+ . unwrap ( ) ;
1066+
1067+ insert_checkpoint (
1068+ & mut wallet,
1069+ BlockId {
1070+ height : 1 ,
1071+ hash : BlockHash :: all_zeros ( ) ,
1072+ } ,
1073+ ) ;
1074+
1075+ receive_output_in_latest_block ( & mut wallet, Amount :: ONE_BTC . to_sat ( ) ) ;
1076+
1077+ // tx1 sending 15k sat to a recipient
1078+ let recip = ScriptBuf :: from_hex (
1079+ "5120e8f5c4dc2f5d6a7595e7b108cb063da9c7550312da1e22875d78b9db62b59cd5" ,
1080+ )
1081+ . unwrap ( ) ;
1082+ let mut builder = wallet. build_tx ( ) ;
1083+ builder. add_recipient ( recip. clone ( ) , Amount :: from_sat ( 15_000 ) ) ;
1084+ builder. fee_absolute ( Amount :: from_sat ( 1_000 ) ) ;
1085+ let psbt = builder. finish ( ) . unwrap ( ) ;
1086+
1087+ let tx = psbt. extract_tx ( ) . unwrap ( ) ;
1088+ let txid = tx. compute_txid ( ) ;
1089+ let feerate = wallet. calculate_fee_rate ( & tx) . unwrap ( ) . to_sat_per_kwu ( ) ;
1090+ insert_tx ( & mut wallet, tx) ;
1091+
1092+ // build fee bump
1093+ let mut builder = wallet. build_fee_bump ( txid) . unwrap ( ) ;
1094+ assert_eq ! (
1095+ builder. params. recipients,
1096+ vec![ ( recip, Amount :: from_sat( 15_000 ) ) ]
1097+ ) ;
1098+ builder. fee_rate ( FeeRate :: from_sat_per_kwu ( feerate + 250 ) ) ;
1099+ let _ = builder. finish ( ) . unwrap ( ) ;
1100+ }
10551101}
0 commit comments