@@ -472,6 +472,35 @@ describe('Graph Integration Test', () => {
472472 it ( 'should emit Withdraw event from Tenderizer' , async ( ) => {
473473 expect ( tx ) . to . emit ( Tenderizer , 'Withdraw' ) . withArgs ( deployer , withdrawAmount , unbondLockID )
474474 } )
475+
476+ it ( 'should withdraw tenderizer GRT balance if < requested amount' , async ( ) => {
477+ await Controller . connect ( signers [ 2 ] ) . unlock ( secondDeposit )
478+ let txData = ethers . utils . arrayify ( Tenderizer . interface . encodeFunctionData ( 'unstake' ,
479+ [ Controller . address , ethers . utils . parseEther ( '0' ) ] ) )
480+ await Controller . execute ( Tenderizer . address , 0 , txData )
481+ txData = txData = ethers . utils . arrayify ( Tenderizer . interface . encodeFunctionData ( 'withdraw' ,
482+ [ Controller . address , 3 ] ) )
483+ await Controller . execute ( Tenderizer . address , 0 , txData )
484+ const amountToBurn = ( await GraphToken . balanceOf ( Tenderizer . address ) ) . sub ( secondDeposit ) . add ( 1 )
485+ await hre . network . provider . request ( {
486+ method : 'hardhat_impersonateAccount' ,
487+ params : [ Tenderizer . address ]
488+ }
489+ )
490+ const signer = await ethers . provider . getSigner ( Tenderizer . address )
491+ await hre . network . provider . send ( 'hardhat_setBalance' , [
492+ Tenderizer . address ,
493+ `0x${ ethers . utils . parseEther ( '10' ) } `
494+ ] )
495+ await GraphToken . connect ( signer ) . transfer ( deployer , amountToBurn )
496+ await hre . network . provider . request ( {
497+ method : 'hardhat_stopImpersonatingAccount' ,
498+ params : [ Tenderizer . address ]
499+ }
500+ )
501+ await Controller . connect ( signers [ 2 ] ) . withdraw ( 2 )
502+ expect ( await GraphToken . balanceOf ( signers [ 2 ] . address ) ) . to . eq ( secondDeposit . sub ( 1 ) )
503+ } )
475504 } )
476505 } )
477506
0 commit comments