123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- use super::mock::*;
- use crate::*;
- use frame_support::traits::Currency;
- pub(crate) fn increase_total_balance_issuance_using_account_id(account_id: u64, balance: u64) {
- let initial_balance = Balances::total_issuance();
- {
- let _ = Balances::deposit_creating(&account_id, balance);
- }
- assert_eq!(Balances::total_issuance(), initial_balance + balance);
- }
- #[test]
- fn lock_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 100;
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- assert_eq!(Balances::usable_balance(&account_id), total_amount);
- TestStakingManager::lock(&account_id, stake);
- assert_eq!(Balances::usable_balance(&account_id), total_amount - stake);
- });
- }
- #[test]
- fn unlock_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 100;
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- TestStakingManager::lock(&account_id, stake);
- assert_eq!(Balances::usable_balance(&account_id), total_amount - stake);
- TestStakingManager::unlock(&account_id);
- assert_eq!(Balances::usable_balance(&account_id), total_amount);
- });
- }
- #[test]
- fn slash_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 100;
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- TestStakingManager::lock(&account_id, stake);
- assert_eq!(Balances::usable_balance(&account_id), total_amount - stake);
- let slash_amount = 50;
- TestStakingManager::slash(&account_id, Some(slash_amount));
- TestStakingManager::unlock(&account_id);
- assert_eq!(
- Balances::usable_balance(&account_id),
- total_amount - slash_amount
- );
- });
- }
- #[test]
- fn slash_full_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 100;
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- TestStakingManager::lock(&account_id, stake);
- assert_eq!(Balances::usable_balance(&account_id), total_amount - stake);
- TestStakingManager::slash(&account_id, None);
- TestStakingManager::unlock(&account_id);
- assert_eq!(Balances::usable_balance(&account_id), total_amount - stake);
- // Lock was removed.
- assert!(TestStakingManager::is_account_free_of_conflicting_stakes(
- &account_id
- ));
- });
- }
- #[test]
- fn slash_down_to_zero_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 100;
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- TestStakingManager::lock(&account_id, stake);
- assert_eq!(Balances::usable_balance(&account_id), total_amount - stake);
- TestStakingManager::slash(&account_id, Some(stake));
- TestStakingManager::unlock(&account_id);
- assert_eq!(Balances::usable_balance(&account_id), total_amount - stake);
- // Lock was removed.
- assert!(TestStakingManager::is_account_free_of_conflicting_stakes(
- &account_id
- ));
- });
- }
- #[test]
- fn current_stake_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 100;
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- TestStakingManager::lock(&account_id, stake);
- assert_eq!(TestStakingManager::current_stake(&account_id), stake);
- });
- }
- #[test]
- fn is_account_free_of_conflicting_stakes_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 100;
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- assert!(TestStakingManager::is_account_free_of_conflicting_stakes(
- &account_id
- ));
- TestStakingManager::lock(&account_id, stake);
- assert!(!TestStakingManager::is_account_free_of_conflicting_stakes(
- &account_id
- ));
- });
- }
- #[test]
- fn is_enough_balance_for_stake_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 100;
- assert!(!TestStakingManager::is_enough_balance_for_stake(
- &account_id,
- stake
- ));
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- assert!(TestStakingManager::is_enough_balance_for_stake(
- &account_id,
- stake
- ));
- });
- }
- // Test stub: not implemented yet.
- #[ignore]
- #[test]
- fn is_member_staking_account_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let member_id = 1;
- assert!(TestStakingManager::is_member_staking_account(
- &member_id,
- &account_id
- ));
- });
- }
- #[test]
- fn set_stake_succeeds() {
- build_test_externalities().execute_with(|| {
- let account_id = 1;
- let total_amount = 300;
- let stake = 300;
- let invalid_stake = 600;
- increase_total_balance_issuance_using_account_id(account_id, total_amount);
- assert_eq!(
- TestStakingManager::set_stake(&account_id, stake),
- DispatchResult::Ok(())
- );
- assert_eq!(TestStakingManager::current_stake(&account_id), stake);
- assert_eq!(
- TestStakingManager::set_stake(&account_id, invalid_stake),
- DispatchResult::Err(DispatchError::Other("Not enough balance for a new stake."))
- );
- assert_eq!(TestStakingManager::current_stake(&account_id), stake);
- });
- }
|