@@ -1052,4 +1052,50 @@ mod test {
1052
1052
assert_eq ! ( filtered. len( ) , 1 ) ;
1053
1053
assert_eq ! ( filtered[ 0 ] . keychain, KeychainKind :: Internal ) ;
1054
1054
}
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
+ }
1055
1101
}
0 commit comments