Add event tests to Nomination Pools (#11349)

* fix a few things with nomination pools

* fix typo

* fix build

* eventify tests

* Update frame/nomination-pools/src/tests.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* fmt

* comments

* split

Co-authored-by: kianenigma <kian@parity.io>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
This commit is contained in:
Ross Bulat
2022-05-06 10:44:21 +01:00
committed by GitHub
parent bcee691ba2
commit 994f8076b1
+275 -21
View File
@@ -407,7 +407,17 @@ mod join {
// When
assert_ok!(Pools::join(Origin::signed(11), 2, 1));
// then
// Then
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 11, pool_id: 1, bonded: 2, joined: true },
]
);
assert_eq!(
PoolMembers::<Runtime>::get(&11).unwrap(),
PoolMember::<Runtime> { pool_id: 1, points: 2, ..Default::default() }
@@ -426,6 +436,11 @@ mod join {
assert_ok!(Pools::join(Origin::signed(12), 12, 1));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::Bonded { member: 12, pool_id: 1, bonded: 12, joined: true }]
);
assert_eq!(
PoolMembers::<Runtime>::get(&12).unwrap(),
PoolMember::<Runtime> { pool_id: 1, points: 24, ..Default::default() }
@@ -536,6 +551,16 @@ mod join {
Balances::make_free_balance_be(&103, 100 + Balances::minimum_balance());
// Then
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 101, pool_id: 1, bonded: 100, joined: true },
Event::Bonded { member: 102, pool_id: 1, bonded: 100, joined: true }
]
);
assert_noop!(
Pools::join(Origin::signed(103), 100, 1),
Error::<Runtime>::MaxPoolMembers
@@ -554,6 +579,14 @@ mod join {
.unwrap();
// Then
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 104, pool_id: 2 },
Event::Bonded { member: 104, pool_id: 2, bonded: 100, joined: true }
]
);
assert_noop!(
Pools::join(Origin::signed(103), 100, pool_account),
Error::<Runtime>::MaxPoolMembers
@@ -595,6 +628,17 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(10)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 40, pool_id: 1, bonded: 40, joined: true },
Event::Bonded { member: 50, pool_id: 1, bonded: 50, joined: true },
Event::PaidOut { member: 10, pool_id: 1, payout: 10 },
]
);
// Expect a payout of 10: (10 del virtual points / 100 pool points) * 100 pool
// balance
assert_eq!(PoolMembers::<Runtime>::get(10).unwrap(), del(10, 100));
@@ -609,6 +653,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(40)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 40, pool_id: 1, payout: 40 }]
);
// Expect payout 40: (400 del virtual points / 900 pool points) * 90 pool balance
assert_eq!(PoolMembers::<Runtime>::get(40).unwrap(), del(40, 100));
assert_eq!(
@@ -622,6 +671,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(50)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 50, pool_id: 1, payout: 50 }]
);
// Expect payout 50: (50 del virtual points / 50 pool points) * 50 pool balance
assert_eq!(PoolMembers::<Runtime>::get(50).unwrap(), del(50, 100));
assert_eq!(RewardPools::<Runtime>::get(&1).unwrap(), rew(0, 0, 100));
@@ -635,6 +689,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(10)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 5 }]
);
// Expect payout 5: (500 del virtual points / 5,000 pool points) * 50 pool balance
assert_eq!(PoolMembers::<Runtime>::get(10).unwrap(), del(10, 150));
assert_eq!(RewardPools::<Runtime>::get(&1).unwrap(), rew(45, 5_000 - 50 * 10, 150));
@@ -645,6 +704,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(40)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 40, pool_id: 1, payout: 20 }]
);
// Expect payout 20: (2,000 del virtual points / 4,500 pool points) * 45 pool
// balance
assert_eq!(PoolMembers::<Runtime>::get(40).unwrap(), del(40, 150));
@@ -660,6 +724,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(50)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 50, pool_id: 1, payout: 50 }]
);
// We expect a payout of 50: (5,000 del virtual points / 7,5000 pool points) * 75
// pool balance
assert_eq!(PoolMembers::<Runtime>::get(50).unwrap(), del(50, 200));
@@ -682,6 +751,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(10)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 5 }]
);
// We expect a payout of 5
assert_eq!(PoolMembers::<Runtime>::get(10).unwrap(), del(10, 200));
assert_eq!(RewardPools::<Runtime>::get(&1).unwrap(), rew(20, 2_500 - 10 * 50, 200));
@@ -696,6 +770,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(10)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 40 }]
);
// We expect a payout of 40
assert_eq!(PoolMembers::<Runtime>::get(10).unwrap(), del(10, 600));
assert_eq!(
@@ -721,6 +800,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(10)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 2 }]
);
// Expect a payout of 2: (200 del virtual points / 38,000 pool points) * 400 pool
// balance
assert_eq!(PoolMembers::<Runtime>::get(10).unwrap(), del(10, 620));
@@ -735,6 +819,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(40)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 40, pool_id: 1, payout: 188 }]
);
// Expect a payout of 188: (18,800 del virtual points / 39,800 pool points) * 399
// pool balance
assert_eq!(PoolMembers::<Runtime>::get(40).unwrap(), del(40, 620));
@@ -749,6 +838,11 @@ mod claim_payout {
assert_ok!(Pools::claim_payout(Origin::signed(50)));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 50, pool_id: 1, payout: 210 }]
);
// Expect payout of 210: (21,000 / 21,000) * 210
assert_eq!(PoolMembers::<Runtime>::get(50).unwrap(), del(50, 620));
assert_eq!(
@@ -830,6 +924,16 @@ mod claim_payout {
Pools::do_reward_payout(&11, &mut member, &mut bonded_pool, &mut reward_pool,),
Error::<Runtime>::FullyUnbonding
);
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 11, pool_id: 1, bonded: 11, joined: true },
Event::Unbonded { member: 11, pool_id: 1, amount: 11 }
]
);
});
}
@@ -910,6 +1014,16 @@ mod claim_payout {
// PoolMember with 50 points
let mut del_50 = PoolMembers::<Runtime>::get(50).unwrap();
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 40, pool_id: 1, bonded: 40, joined: true },
Event::Bonded { member: 50, pool_id: 1, bonded: 50, joined: true }
]
);
// Given we have a total of 100 points split among the members
assert_eq!(del_50.points + del_40.points + del_10.points, 100);
assert_eq!(bonded_pool.points, 100);
@@ -1101,6 +1215,16 @@ mod claim_payout {
let mut reward_pool = RewardPools::<Runtime>::get(1).unwrap();
let ed = Balances::minimum_balance();
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 40, pool_id: 1, bonded: 40, joined: true },
Event::Bonded { member: 50, pool_id: 1, bonded: 50, joined: true }
]
);
// Given the bonded pool has 100 points
assert_eq!(bonded_pool.points, 100);
// Each member currently has a free balance of
@@ -1123,6 +1247,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 10 }]
);
// Expect a payout of 10: (10 del virtual points / 100 pool points) * 100 pool
// balance
assert_eq!(del_10, del(10, 100));
@@ -1139,6 +1268,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 40, pool_id: 1, payout: 40 }]
);
// Expect payout 40: (400 del virtual points / 900 pool points) * 90 pool balance
assert_eq!(del_40, del(40, 100));
assert_eq!(reward_pool, rew(50, 9_000 - 100 * 40, 100));
@@ -1154,6 +1288,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 50, pool_id: 1, payout: 50 }]
);
// Expect payout 50: (50 del virtual points / 50 pool points) * 50 pool balance
assert_eq!(del_50, del(50, 100));
assert_eq!(reward_pool, rew(0, 0, 100));
@@ -1172,6 +1311,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 5 }]
);
// Expect payout 5: (500 del virtual points / 5,000 pool points) * 50 pool balance
assert_eq!(del_10, del(10, 150));
assert_eq!(reward_pool, rew(45, 5_000 - 50 * 10, 150));
@@ -1187,6 +1331,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 40, pool_id: 1, payout: 20 }]
);
// Expect payout 20: (2,000 del virtual points / 4,500 pool points) * 45 pool
// balance
assert_eq!(del_40, del(40, 150));
@@ -1207,6 +1356,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 50, pool_id: 1, payout: 50 }]
);
// We expect a payout of 50: (5,000 del virtual points / 7,5000 pool points) * 75
// pool balance
assert_eq!(del_50, del(50, 200));
@@ -1234,6 +1388,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 5 }]
);
// We expect a payout of 5
assert_eq!(del_10, del(10, 200));
assert_eq!(reward_pool, rew(20, 2_500 - 10 * 50, 200));
@@ -1253,6 +1412,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 40 }]
);
// We expect a payout of 40
assert_eq!(del_10, del(10, 600));
assert_eq!(
@@ -1283,6 +1447,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 10, pool_id: 1, payout: 2 }]
);
// Expect a payout of 2: (200 del virtual points / 38,000 pool points) * 400 pool
// balance
assert_eq!(del_10, del(10, 620));
@@ -1299,6 +1468,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 40, pool_id: 1, payout: 188 }]
);
// Expect a payout of 188: (18,800 del virtual points / 39,800 pool points) * 399
// pool balance
assert_eq!(del_40, del(40, 620));
@@ -1315,6 +1489,11 @@ mod claim_payout {
));
// Then
assert_eq!(
pool_events_since_last_call(),
vec![Event::PaidOut { member: 50, pool_id: 1, payout: 210 }]
);
// Expect payout of 210: (21,000 / 21,000) * 210
assert_eq!(del_50, del(50, 620));
assert_eq!(reward_pool, rew(0, 21_000 - 50 * 420, 620));
@@ -2372,13 +2551,35 @@ mod withdraw_unbonded {
// Given
assert_ok!(Pools::fully_unbond(Origin::signed(100), 100));
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 100, pool_id: 1, bonded: 100, joined: true },
Event::Bonded { member: 200, pool_id: 1, bonded: 200, joined: true },
Event::Unbonded { member: 100, pool_id: 1, amount: 100 }
]
);
let mut current_era = 1;
CurrentEra::set(current_era);
assert_ok!(Pools::fully_unbond(Origin::signed(200), 200));
assert_eq!(
pool_events_since_last_call(),
vec![Event::Unbonded { member: 200, pool_id: 1, amount: 200 }]
);
unsafe_set_state(1, PoolState::Destroying).unwrap();
assert_ok!(Pools::fully_unbond(Origin::signed(10), 10));
assert_eq!(
pool_events_since_last_call(),
vec![Event::Unbonded { member: 10, pool_id: 1, amount: 10 }]
);
assert_eq!(
SubPoolsStorage::<Runtime>::get(1).unwrap(),
SubPools {
@@ -2402,6 +2603,15 @@ mod withdraw_unbonded {
// Given
assert_ok!(Pools::withdraw_unbonded(Origin::signed(420), 100, 0));
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Withdrawn { member: 100, pool_id: 1, amount: 100 },
Event::MemberRemoved { pool_id: 1, member: 100 }
]
);
assert_eq!(
SubPoolsStorage::<Runtime>::get(1).unwrap(),
SubPools {
@@ -2421,6 +2631,15 @@ mod withdraw_unbonded {
// Given
assert_ok!(Pools::withdraw_unbonded(Origin::signed(420), 200, 0));
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Withdrawn { member: 200, pool_id: 1, amount: 200 },
Event::MemberRemoved { pool_id: 1, member: 200 }
]
);
assert_eq!(
SubPoolsStorage::<Runtime>::get(1).unwrap(),
SubPools {
@@ -2433,32 +2652,22 @@ mod withdraw_unbonded {
// The depositor can withdraw
assert_ok!(Pools::withdraw_unbonded(Origin::signed(420), 10, 0));
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Withdrawn { member: 10, pool_id: 1, amount: 10 },
Event::MemberRemoved { pool_id: 1, member: 10 },
Event::Destroyed { pool_id: 1 }
]
);
assert!(!PoolMembers::<Runtime>::contains_key(10));
assert_eq!(Balances::free_balance(10), 10 + 10);
// Pools are removed from storage because the depositor left
assert!(!SubPoolsStorage::<Runtime>::contains_key(1));
assert!(!RewardPools::<Runtime>::contains_key(1));
assert!(!BondedPools::<Runtime>::contains_key(1));
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 100, pool_id: 1, bonded: 100, joined: true },
Event::Bonded { member: 200, pool_id: 1, bonded: 200, joined: true },
Event::Unbonded { member: 100, pool_id: 1, amount: 100 },
Event::Unbonded { member: 200, pool_id: 1, amount: 200 },
Event::Unbonded { member: 10, pool_id: 1, amount: 10 },
Event::Withdrawn { member: 100, pool_id: 1, amount: 100 },
Event::MemberRemoved { pool_id: 1, member: 100 },
Event::Withdrawn { member: 200, pool_id: 1, amount: 200 },
Event::MemberRemoved { pool_id: 1, member: 200 },
Event::Withdrawn { member: 10, pool_id: 1, amount: 10 },
Event::MemberRemoved { pool_id: 1, member: 10 },
Event::Destroyed { pool_id: 1 }
]
);
});
}
@@ -2510,6 +2719,22 @@ mod withdraw_unbonded {
assert!(!SubPoolsStorage::<Runtime>::contains_key(1));
assert!(!RewardPools::<Runtime>::contains_key(1));
assert!(!BondedPools::<Runtime>::contains_key(1));
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 100, pool_id: 1, bonded: 100, joined: true },
Event::Unbonded { member: 100, pool_id: 1, amount: 100 },
Event::Unbonded { member: 10, pool_id: 1, amount: 10 },
Event::Withdrawn { member: 100, pool_id: 1, amount: 100 },
Event::MemberRemoved { pool_id: 1, member: 100 },
Event::Withdrawn { member: 10, pool_id: 1, amount: 10 },
Event::MemberRemoved { pool_id: 1, member: 10 },
Event::Destroyed { pool_id: 1 }
]
);
});
}
@@ -2860,6 +3085,16 @@ mod create {
total_earnings: Zero::zero(),
}
);
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Created { depositor: 11, pool_id: 2 },
Event::Bonded { member: 11, pool_id: 2, bonded: 10, joined: true }
]
);
});
}
@@ -2981,6 +3216,16 @@ mod set_state {
// Root can change state
assert_ok!(Pools::set_state(Origin::signed(900), 1, PoolState::Blocked));
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::StateChanged { pool_id: 1, new_state: PoolState::Blocked }
]
);
assert_eq!(BondedPool::<Runtime>::get(1).unwrap().state, PoolState::Blocked);
// State toggler can change state
@@ -3024,6 +3269,15 @@ mod set_state {
Pools::set_state(Origin::signed(11), 1, PoolState::Blocked),
Error::<Runtime>::CanNotChangeState
);
assert_eq!(
pool_events_since_last_call(),
vec![
Event::StateChanged { pool_id: 1, new_state: PoolState::Destroying },
Event::StateChanged { pool_id: 1, new_state: PoolState::Destroying },
Event::StateChanged { pool_id: 1, new_state: PoolState::Destroying }
]
);
});
}
}