@@ -2399,7 +2399,7 @@ contract('KyberNetwork', function(accounts) {
23992399 } ) ;
24002400 } ) ;
24012401
2402- describe ( "test fee handler integrations with 1 mock and 1 apr " , async ( ) => {
2402+ describe ( "test fee handler integrations with 1 mock and 1 fpr " , async ( ) => {
24032403 let platformFee = new BN ( 200 ) ;
24042404 let reserveIdToWallet = [ ] ;
24052405 let rebateWallets ;
@@ -2461,22 +2461,17 @@ contract('KyberNetwork', function(accounts) {
24612461 platformFeeWei = tradeWei . mul ( platfromFeeBps ) . div ( BPS ) ;
24622462 Helper . assertEqual ( await feeHandler . feePerPlatformWallet ( platformWallet ) , beforePlatformFee . add ( platformFeeWei ) , "unexpected rebate value" ) ;
24632463 networkFeeWei = tradeWei . mul ( networkFeeBps ) . div ( BPS ) . mul ( feeAccountedBps ) . div ( BPS ) ;
2464- let hasRebate = false ;
2464+ rebateWei = zeroBN ;
24652465 for ( const [ rebateWallet , beforeBalance ] of Object . entries ( beforeRebate ) ) {
24662466 if ( rebateWallet in rebatePerWallet ) {
2467+ rebateWei = rebateWei . add ( rebatePerWallet [ rebateWallet ] ) ;
24672468 Helper . assertApproximate ( await feeHandler . rebatePerWallet ( rebateWallet ) , beforeBalance . add ( rebatePerWallet [ rebateWallet ] ) , "unexpected rebate value" ) ;
2468- hasRebate = true ;
24692469 } else {
24702470 Helper . assertApproximate ( await feeHandler . rebatePerWallet ( rebateWallet ) , beforeBalance , "unexpected rebate value" ) ;
24712471 }
24722472 }
2473- if ( hasRebate ) {
2474- totalPayout = platformFeeWei . add ( networkFeeWei . mul ( rewardInBPS ) . div ( BPS ) ) . add ( networkFeeWei . mul ( rebateInBPS ) . div ( BPS ) ) ;
2475- } else {
2476- totalPayout = platformFeeWei . add ( networkFeeWei . mul ( rewardInBPS ) . div ( BPS ) ) ;
2477- }
2473+ totalPayout = platformFeeWei . add ( networkFeeWei . mul ( rewardInBPS ) . div ( BPS ) ) . add ( rebateWei ) ;
24782474 Helper . assertApproximate ( await feeHandler . totalPayoutBalance ( ) , beforeTotalBalancePayout . add ( totalPayout ) , "unexpected payout balance" ) ;
2479-
24802475 }
24812476
24822477 it ( "e2t trade. see fee updated in fee handler." , async ( ) => {
@@ -2516,7 +2511,7 @@ contract('KyberNetwork', function(accounts) {
25162511 await assertFeeHandlerUpdate ( tradeEventArgs . ethWeiValue , platformFee , BPS , rebatePerWallet ) ;
25172512 } ) ;
25182513
2519- it ( "should have rebate given only to rebate entitled reserve. " , async ( ) => {
2514+ it ( "check that reserve rebate amount is correct " , async ( ) => {
25202515 await storage . setFeeAccountedPerReserveType ( true , true , true , true , true , true , { from : admin } ) ;
25212516 // set rebate entitled true for FPR
25222517 await storage . setEntitledRebatePerReserveType ( true , false , false , false , false , false , { from : admin } ) ;
@@ -2532,11 +2527,15 @@ contract('KyberNetwork', function(accounts) {
25322527 srcToken . address , destToken . address , srcQty ) ;
25332528 txResult = await network . tradeWithHintAndFee ( networkProxy , srcToken . address , srcQty , destToken . address , taker ,
25342529 maxDestAmt , minConversionRate , platformWallet , platformFee , hint , { from : networkProxy } ) ;
2530+
25352531 // assert first rebateWallet is received enitled rebate value
25362532 let tradeEventArgs = nwHelper . getTradeEventArgs ( txResult ) ;
2537- let rebatePerWallet = { }
2538- let expectedRebate = new BN ( tradeEventArgs . ethWeiValue ) . mul ( networkFeeBps ) . div ( BPS ) . mul ( new BN ( 2 ) ) . mul ( rebateInBPS ) . div ( BPS ) ;
2539- rebatePerWallet [ rebateWallets [ 0 ] ] = expectedRebate
2533+ let rebatePerWallet = { } ;
2534+ let feeAccountedBps = new BN ( 2 ) . mul ( BPS ) ;
2535+ let entitledRebateBps = BPS ;
2536+ let networkFeeWei = new BN ( tradeEventArgs . ethWeiValue ) . mul ( networkFeeBps ) . div ( BPS ) . mul ( new BN ( 2 ) ) ;
2537+ let expectedRebateWei = networkFeeWei . mul ( entitledRebateBps ) . div ( feeAccountedBps ) . mul ( rebateInBPS ) . div ( BPS ) ; ;
2538+ rebatePerWallet [ rebateWallets [ 0 ] ] = expectedRebateWei ;
25402539 await assertFeeHandlerUpdate ( tradeEventArgs . ethWeiValue , platformFee , BPS . mul ( new BN ( 2 ) ) , rebatePerWallet ) ;
25412540 // revert changes
25422541 await storage . setEntitledRebatePerReserveType ( true , true , true , true , true , true , { from : admin } ) ;
0 commit comments