@@ -126,19 +126,9 @@ describe('Integration tests', function () {
126126 PocoMode . CLASSIC ,
127127 ) ;
128128 const schedulerRewardPerTask = workerpoolPrice - workerRewardPerTask ;
129- // Check initial balances.
130- // TODO save initial balances and use them in for loop for comparison.
131- await checkBalancesAndFrozens ( {
132- proxyBalance : dealPrice + schedulerStakePerDeal ,
133- accounts : [
134- { signer : sponsor , balance : 0 , frozen : dealPrice } ,
135- { signer : requester , balance : 0 , frozen : 0 } ,
136- { signer : scheduler , balance : 0 , frozen : schedulerStakePerDeal } ,
137- { signer : appProvider , balance : 0 , frozen : 0 } ,
138- { signer : datasetProvider , balance : 0 , frozen : 0 } ,
139- { signer : worker1 , balance : 0 , frozen : 0 } ,
140- ] ,
141- } ) ;
129+ // Save frozens
130+ const accounts = [ sponsor , requester , scheduler , appProvider , datasetProvider , worker1 ] ;
131+ const accountsInitialFrozens = await getInitialFrozens ( accounts ) ;
142132 // Finalize each task and check balance changes.
143133 for ( let taskIndex = 0 ; taskIndex < volume ; taskIndex ++ ) {
144134 const taskId = await iexecWrapper . initializeTask ( dealId , taskIndex ) ;
@@ -152,10 +142,9 @@ describe('Integration tests', function () {
152142 . connect ( worker1 )
153143 . reveal ( taskId , callbackResultDigest )
154144 . then ( ( tx ) => tx . wait ( ) ) ;
155- await iexecPoco
145+ const finalizeTx = await iexecPoco
156146 . connect ( scheduler )
157- . finalize ( taskId , results , resultsCallback )
158- . then ( ( tx ) => tx . wait ( ) ) ;
147+ . finalize ( taskId , results , resultsCallback ) ;
159148 expect ( ( await iexecPoco . viewTask ( taskId ) ) . status ) . to . equal ( TaskStatusEnum . COMPLETED ) ;
160149 // Multiply amount by the number of finalized tasks to correctly compute
161150 // stake and reward amounts.
@@ -174,27 +163,36 @@ describe('Integration tests', function () {
174163 // - Worker:
175164 // - balance: balance before + taskStake + taskReward
176165 // - frozen: frozen before - taskStake
177- await checkBalancesAndFrozens ( {
178- proxyBalance :
179- dealPrice +
180- schedulerStakePerDeal -
181- ( taskPrice + schedulerStakePerTask ) * completedTasks ,
182- accounts : [
183- { signer : sponsor , balance : 0 , frozen : dealPrice - taskPrice * completedTasks } ,
184- { signer : requester , balance : 0 , frozen : 0 } ,
185- {
186- signer : scheduler ,
187- balance : ( schedulerStakePerTask + schedulerRewardPerTask ) * completedTasks ,
188- frozen : schedulerStakePerDeal - schedulerStakePerTask * completedTasks ,
189- } ,
190- { signer : appProvider , balance : appPrice * completedTasks , frozen : 0 } ,
191- { signer : datasetProvider , balance : datasetPrice * completedTasks , frozen : 0 } ,
192- {
193- signer : worker1 ,
194- balance : ( workerStakePerTask + workerRewardPerTask ) * completedTasks ,
195- frozen : 0 ,
196- } ,
166+ // Verify token balance changes
167+ const expectedProxyBalanceChange = - (
168+ taskPrice * completedTasks +
169+ schedulerStakePerTask * completedTasks
170+ ) ;
171+ expect ( finalizeTx ) . to . changeTokenBalances (
172+ iexecPoco ,
173+ [ proxyAddress , sponsor , scheduler , appProvider , datasetProvider , worker1 ] ,
174+ [
175+ expectedProxyBalanceChange , // Proxy
176+ - taskPrice * completedTasks , // Sponsor
177+ schedulerStakePerTask + schedulerRewardPerTask , // Scheduler
178+ appPrice , // AppProvider
179+ datasetPrice , // DatasetProvider
180+ workerStakePerTask + workerRewardPerTask , // Worker
197181 ] ,
182+ ) ;
183+ // Calculate expected frozen changes
184+ const expectedFrozenChanges = [
185+ 0 , // Proxy
186+ - taskPrice * completedTasks , // Sponsor
187+ 0 , // Requester
188+ - schedulerStakePerTask * completedTasks , // Scheduler
189+ 0 , // AppProvider
190+ 0 , // DatasetProvider
191+ 0 , // Worker
192+ ] ;
193+ await changesInFrozen ( {
194+ accountsInitialFrozens,
195+ frozenChanges : expectedFrozenChanges ,
198196 } ) ;
199197 }
200198 } ) ;
@@ -416,21 +414,6 @@ describe('Integration tests', function () {
416414 }
417415} ) ;
418416
419- async function checkBalancesAndFrozens ( args : {
420- proxyBalance : number ;
421- accounts : { signer : SignerWithAddress ; balance : number ; frozen : number } [ ] ;
422- } ) {
423- expect ( await iexecPoco . balanceOf ( proxyAddress ) ) . to . equal ( args . proxyBalance ) ;
424- for ( const account of args . accounts ) {
425- const message = `Failed with account at index ${ args . accounts . indexOf ( account ) } ` ;
426- expect ( await iexecPoco . balanceOf ( account . signer . address ) ) . to . equal (
427- account . balance ,
428- message ,
429- ) ;
430- expect ( await iexecPoco . frozenOf ( account . signer . address ) ) . to . equal ( account . frozen , message ) ;
431- }
432- }
433-
434417async function changesInFrozen ( args : {
435418 accountsInitialFrozens : { address : string ; frozen : number } [ ] ;
436419 frozenChanges : number [ ] ;
0 commit comments