@@ -13,6 +13,7 @@ import { ContractOptions } from 'web3-eth-contract/types';
1313import BigNumber from 'bignumber.js' ;
1414import Web3 from 'web3' ;
1515import { BatchManager } from './batch-manager' ;
16+ import { createAddress } from '../../testing/test-data' ;
1617
1718describe ( 'TokenInfoRetriever' , ( ) => {
1819 let service : TokenInfoRetrieverService ;
@@ -186,6 +187,39 @@ describe('TokenInfoRetriever', () => {
186187 expect ( typeof userToken . decimals ) . toBe ( 'number' ) ;
187188 expect ( BigNumber . isBigNumber ( userToken . balance ) ) . toBe ( true ) ;
188189 } ) ;
190+
191+ it ( 'should have add 4 requests when nothing is cached' , async ( ) => {
192+ const batchManager = createBatchManagerSpy (
193+ new Promise ( ( resolve ) => {
194+ resolve ( [ 'TEST' , 'TST' , 18 , 50 ] ) ;
195+ } )
196+ ) ;
197+ spyOn ( batchManagerFactory , 'create' ) . and . returnValue ( batchManager ) ;
198+
199+ const tokenAddress = createAddress ( ) ;
200+ const tokens = await service . createBatch (
201+ [ tokenAddress ] ,
202+ createAddress ( )
203+ ) ;
204+
205+ expect ( batchManager . add ) . toHaveBeenCalledTimes ( 4 ) ;
206+ expect ( tokens [ tokenAddress ] ) . toBeTruthy ( ) ;
207+
208+ const calls = batchManager . add . calls ;
209+
210+ expect ( calls . argsFor ( 0 ) [ 0 ] . request ) . toBe ( 'name' ) ;
211+ expect ( calls . argsFor ( 1 ) [ 0 ] . request ) . toBe ( 'symbol' ) ;
212+ expect ( calls . argsFor ( 2 ) [ 0 ] . request ) . toBe ( 'decimals' ) ;
213+ expect ( calls . argsFor ( 3 ) [ 0 ] . request ) . toBe ( 'balanceOf' ) ;
214+
215+ const userToken = tokens [ tokenAddress ] ;
216+
217+ expect ( userToken . name ) . toBe ( 'TEST' ) ;
218+ expect ( userToken . symbol ) . toBe ( 'TST' ) ;
219+ expect ( userToken . address ) . toBe ( tokenAddress ) ;
220+ expect ( userToken . decimals ) . toBe ( 18 ) ;
221+ expect ( userToken . balance ) . toEqual ( new BigNumber ( 50 ) ) ;
222+ } ) ;
189223} ) ;
190224
191225describe ( 'BatchManagerFactory' , ( ) => {
0 commit comments