Allow transfer_keep_alive to transfer all free balance (#8125)

This commit is contained in:
Guillaume Thiolliere
2021-02-22 12:32:41 +01:00
committed by GitHub
parent 84071d6d49
commit 1b2dd6117b
2 changed files with 14 additions and 1 deletions
+1 -1
View File
@@ -1069,7 +1069,7 @@ impl<T: Config<I>, I: 'static> Currency<T::AccountId> for Pallet<T, I> where
// may not even be a provider.
let allow_death = existence_requirement == ExistenceRequirement::AllowDeath;
let allow_death = allow_death && !system::Pallet::<T>::is_provider_required(transactor);
ensure!(allow_death || from_account.free >= ed, Error::<T, I>::KeepAlive);
ensure!(allow_death || from_account.total() >= ed, Error::<T, I>::KeepAlive);
Ok(())
}
+13
View File
@@ -961,5 +961,18 @@ macro_rules! decl_tests {
assert_storage_noop!(assert_eq!(Balances::slash(&1337, 42).1, 42));
});
}
#[test]
fn transfer_keep_alive_all_free_succeed() {
<$ext_builder>::default()
.existential_deposit(100)
.build()
.execute_with(|| {
assert_ok!(Balances::set_balance(Origin::root(), 1, 100, 100));
assert_ok!(Balances::transfer_keep_alive(Some(1).into(), 2, 100));
assert_eq!(Balances::total_balance(&1), 100);
assert_eq!(Balances::total_balance(&2), 100);
});
}
}
}