Skip to content

Commit 9551600

Browse files
victorgesyondonfu
authored andcommitted
test/unit: Add unbond tests for decreaseTotalStake logic
1 parent f0ccafc commit 9551600

File tree

1 file changed

+146
-1
lines changed

1 file changed

+146
-1
lines changed

test/unit/BondingManager.js

Lines changed: 146 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2987,6 +2987,151 @@ describe("BondingManager", () => {
29872987
assert.equal(pool.totalStake.toString(), lastActiveStake.toString())
29882988
})
29892989

2990+
describe("should update next earningsPool totalStake", () => {
2991+
beforeEach(async () => {
2992+
// initialize next round earnings pool
2993+
await bondingManager.connect(transcoder).reward()
2994+
})
2995+
2996+
it("for active transcoder", async () => {
2997+
const startActiveStake = (
2998+
await bondingManager.getTranscoderEarningsPoolForRound(
2999+
transcoder.address,
3000+
currentRound + 2
3001+
)
3002+
).totalStake
3003+
3004+
await bondingManager.connect(delegator).unbond(1000)
3005+
3006+
const endActiveStake = (
3007+
await bondingManager.getTranscoderEarningsPoolForRound(
3008+
transcoder.address,
3009+
currentRound + 2
3010+
)
3011+
).totalStake
3012+
assert.equal(
3013+
startActiveStake.sub(endActiveStake),
3014+
1000,
3015+
"wrong change in next round earnings pool totalStake"
3016+
)
3017+
})
3018+
3019+
it("for deactivating transcoder", async () => {
3020+
// add 2 transcoders with much higher stake to kick the existing transcoder out of the active pool
3021+
for (let i = 0; i < NUM_ACTIVE_TRANSCODERS; i++) {
3022+
const newTranscoder = signers[10 + i]
3023+
await bondingManager
3024+
.connect(newTranscoder)
3025+
.bond(10000, newTranscoder.address)
3026+
await bondingManager
3027+
.connect(newTranscoder)
3028+
.transcoder(50 * PERC_MULTIPLIER, 10)
3029+
}
3030+
const {deactivationRound} =
3031+
await bondingManager.getTranscoder(transcoder.address)
3032+
assert.equal(
3033+
deactivationRound.toNumber(),
3034+
currentRound + 2,
3035+
"transcoder should be deactivating"
3036+
)
3037+
3038+
const startActiveStake = (
3039+
await bondingManager.getTranscoderEarningsPoolForRound(
3040+
transcoder.address,
3041+
currentRound + 2
3042+
)
3043+
).totalStake
3044+
3045+
await bondingManager.connect(delegator).unbond(1000)
3046+
3047+
const endActiveStake = (
3048+
await bondingManager.getTranscoderEarningsPoolForRound(
3049+
transcoder.address,
3050+
currentRound + 2
3051+
)
3052+
).totalStake
3053+
assert.equal(
3054+
startActiveStake.sub(endActiveStake),
3055+
1000,
3056+
"wrong change in next round earnings pool totalStake"
3057+
)
3058+
})
3059+
3060+
it("for deactivating and unregistered transcoder", async () => {
3061+
// full unbond to resign transcoder from active pool
3062+
await bondingManager.connect(transcoder).unbond(1000) // rewards are 0 so its still 1000 stake
3063+
assert.isTrue(
3064+
await bondingManager.isActiveTranscoder(transcoder.address)
3065+
)
3066+
assert.isFalse(
3067+
await bondingManager.isRegisteredTranscoder(
3068+
transcoder.address
3069+
)
3070+
)
3071+
3072+
const startActiveStake = (
3073+
await bondingManager.getTranscoderEarningsPoolForRound(
3074+
transcoder.address,
3075+
currentRound + 2
3076+
)
3077+
).totalStake
3078+
3079+
await bondingManager.connect(delegator).unbond(1000)
3080+
3081+
const endActiveStake = (
3082+
await bondingManager.getTranscoderEarningsPoolForRound(
3083+
transcoder.address,
3084+
currentRound + 2
3085+
)
3086+
).totalStake
3087+
assert.equal(
3088+
startActiveStake.sub(endActiveStake),
3089+
1000,
3090+
"wrong change in next round earnings pool totalStake"
3091+
)
3092+
})
3093+
3094+
it("for activating transcoder", async () => {
3095+
// full unbond to resign transcoder from active pool
3096+
await bondingManager.connect(transcoder).unbond(1000) // rewards are 0 so its still 1000 stake
3097+
await fixture.roundsManager.setMockUint256(
3098+
functionSig("currentRound()"),
3099+
currentRound + 2
3100+
)
3101+
// rebond so transcoder becomes registered but not active yet
3102+
await bondingManager
3103+
.connect(transcoder)
3104+
.bond(1000, transcoder.address)
3105+
assert.isFalse(
3106+
await bondingManager.isActiveTranscoder(transcoder.address)
3107+
)
3108+
assert.isTrue(
3109+
await bondingManager.isRegisteredTranscoder(
3110+
transcoder.address
3111+
)
3112+
)
3113+
3114+
const {totalStake: startActiveStake} =
3115+
await bondingManager.getTranscoderEarningsPoolForRound(
3116+
transcoder.address,
3117+
currentRound + 3
3118+
)
3119+
3120+
await bondingManager.connect(delegator).unbond(1000)
3121+
3122+
const {totalStake: endActiveStake} =
3123+
await bondingManager.getTranscoderEarningsPoolForRound(
3124+
transcoder.address,
3125+
currentRound + 3
3126+
)
3127+
assert.equal(
3128+
startActiveStake.sub(endActiveStake),
3129+
1000,
3130+
"wrong change in next round earnings pool totalStake"
3131+
)
3132+
})
3133+
})
3134+
29903135
it("should not update current earningsPool totalStake when lastActiveStakeUpdateRound = currentRound", async () => {
29913136
assert.equal(
29923137
(
@@ -5419,7 +5564,7 @@ describe("BondingManager", () => {
54195564

54205565
it("when caller is deactivating on the next round", async () => {
54215566
// add 2 transcoders with much higher stake to kick the existing transcoder out of the active pool
5422-
for (let i = 0; i < 2; i++) {
5567+
for (let i = 0; i < NUM_ACTIVE_TRANSCODERS; i++) {
54235568
const newTranscoder = signers[10 + i]
54245569
await bondingManager
54255570
.connect(newTranscoder)

0 commit comments

Comments
 (0)