@@ -2,12 +2,22 @@ import { ImportMock, MockManager } from 'ts-mock-imports';
22import { stub , spy , restore } from 'sinon' ;
33import * as contractWrappersModule from '@polymathnetwork/contract-wrappers' ;
44import * as contextModule from '../../Context' ;
5+ import { Factories } from '../../Context' ;
56import * as wrappersModule from '../../PolymathBase' ;
67import * as tokenFactoryModule from '../../testUtils/MockedTokenFactoryObject' ;
78import { SetDividendsWallet } from '../../procedures/SetDividendsWallet' ;
9+ import * as setDividendsWalletModule from '../../procedures/SetDividendsWallet' ;
810import { Procedure } from '~/procedures/Procedure' ;
911import { ProcedureType , DividendType , ErrorCode } from '~/types' ;
1012import { PolymathError } from '~/PolymathError' ;
13+ import { mockFactories } from '~/testUtils/mockFactories' ;
14+ import * as erc20FactoryModule from '~/entities/factories/Erc20DividendsManagerFactory' ;
15+ import * as ethFactoryModule from '~/entities/factories/EthDividendsManagerFactory' ;
16+ import {
17+ SecurityToken ,
18+ Erc20DividendsManager ,
19+ EthDividendsManager ,
20+ } from '~/entities' ;
1121
1222const params = {
1323 symbol : 'TEST1' ,
@@ -30,6 +40,11 @@ describe('SetDividendsWallet', () => {
3040 let ethDividendMock : MockManager <
3141 contractWrappersModule . EtherDividendCheckpointContract_3_0_0
3242 > ;
43+ let erc20FactoryMock : MockManager <
44+ erc20FactoryModule . Erc20DividendsManagerFactory
45+ > ;
46+ let ethFactoryMock : MockManager < ethFactoryModule . EthDividendsManagerFactory > ;
47+ let factoriesMockedSetup : Factories ;
3348
3449 beforeEach ( ( ) => {
3550 // Mock the context, wrappers, tokenFactory and securityToken to test SetDividendsWallet
@@ -51,6 +66,19 @@ describe('SetDividendsWallet', () => {
5166
5267 contextMock . set ( 'contractWrappers' , wrappersMock . getMockInstance ( ) ) ;
5368 wrappersMock . set ( 'tokenFactory' , tokenFactoryMock . getMockInstance ( ) ) ;
69+
70+ erc20FactoryMock = ImportMock . mockClass (
71+ erc20FactoryModule ,
72+ 'Erc20DividendsManagerFactory'
73+ ) ;
74+ ethFactoryMock = ImportMock . mockClass (
75+ ethFactoryModule ,
76+ 'EthDividendsManagerFactory'
77+ ) ;
78+ factoriesMockedSetup = mockFactories ( ) ;
79+ factoriesMockedSetup . erc20DividendsManagerFactory = erc20FactoryMock . getMockInstance ( ) ;
80+ factoriesMockedSetup . ethDividendsManagerFactory = ethFactoryMock . getMockInstance ( ) ;
81+ contextMock . set ( 'factories' , factoriesMockedSetup ) ;
5482 } ) ;
5583
5684 afterEach ( ( ) => {
@@ -199,5 +227,51 @@ describe('SetDividendsWallet', () => {
199227 ) . toEqual ( true ) ;
200228 expect ( addTransactionSpy . callCount ) . toEqual ( 1 ) ;
201229 } ) ;
230+
231+ test ( 'should successfully refresh ERC20 dividends factory' , async ( ) => {
232+ const refreshStub = erc20FactoryMock . mock (
233+ 'refresh' ,
234+ Promise . resolve ( undefined )
235+ ) ;
236+ const resolverValue = setDividendsWalletModule . createSetDividendWalletResolver (
237+ DividendType . Erc20 ,
238+ factoriesMockedSetup ,
239+ params . symbol
240+ ) ( ) ;
241+ expect (
242+ refreshStub . getCall ( 0 ) . calledWithExactly (
243+ Erc20DividendsManager . generateId ( {
244+ securityTokenId : SecurityToken . generateId ( {
245+ symbol : params . symbol ,
246+ } ) ,
247+ dividendType : DividendType . Erc20 ,
248+ } )
249+ )
250+ ) . toEqual ( true ) ;
251+ expect ( await resolverValue ) . toEqual ( undefined ) ;
252+ expect ( refreshStub . callCount ) . toEqual ( 1 ) ;
253+ } ) ;
254+ } ) ;
255+
256+ test ( 'should successfully refresh Eth dividends factory' , async ( ) => {
257+ const refreshStub = ethFactoryMock . mock (
258+ 'refresh' ,
259+ Promise . resolve ( undefined )
260+ ) ;
261+ const resolverValue = setDividendsWalletModule . createSetDividendWalletResolver (
262+ DividendType . Eth ,
263+ factoriesMockedSetup ,
264+ params . symbol
265+ ) ( ) ;
266+ expect (
267+ refreshStub . getCall ( 0 ) . calledWithExactly (
268+ EthDividendsManager . generateId ( {
269+ securityTokenId : SecurityToken . generateId ( { symbol : params . symbol } ) ,
270+ dividendType : DividendType . Eth ,
271+ } )
272+ )
273+ ) . toEqual ( true ) ;
274+ expect ( await resolverValue ) . toEqual ( undefined ) ;
275+ expect ( refreshStub . callCount ) . toEqual ( 1 ) ;
202276 } ) ;
203277} ) ;
0 commit comments