Skip to content

Commit dc555ff

Browse files
committed
fix: add tests to cover 100%
1 parent 0036f40 commit dc555ff

File tree

2 files changed

+80
-2
lines changed

2 files changed

+80
-2
lines changed

src/procedures/SetDividendsWallet.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
EthDividendsManager,
2020
} from '../entities';
2121

22-
export const createResolver = (
22+
export const createSetDividendWalletResolver = (
2323
dividendType: DividendType,
2424
factories: Factories,
2525
symbol: string
@@ -102,7 +102,11 @@ export class SetDividendsWallet extends Procedure<
102102

103103
await this.addTransaction(dividendModule.changeWallet, {
104104
tag: PolyTransactionTag.SetDividendsWallet,
105-
resolver: createResolver(dividendType, factories, symbol),
105+
resolver: createSetDividendWalletResolver(
106+
dividendType,
107+
factories,
108+
symbol
109+
),
106110
})({ wallet: address });
107111
}
108112
}

src/procedures/__tests__/SetDividendsWallet.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,22 @@ import { ImportMock, MockManager } from 'ts-mock-imports';
22
import { stub, spy, restore } from 'sinon';
33
import * as contractWrappersModule from '@polymathnetwork/contract-wrappers';
44
import * as contextModule from '../../Context';
5+
import { Factories } from '../../Context';
56
import * as wrappersModule from '../../PolymathBase';
67
import * as tokenFactoryModule from '../../testUtils/MockedTokenFactoryObject';
78
import { SetDividendsWallet } from '../../procedures/SetDividendsWallet';
9+
import * as setDividendsWalletModule from '../../procedures/SetDividendsWallet';
810
import { Procedure } from '~/procedures/Procedure';
911
import { ProcedureType, DividendType, ErrorCode } from '~/types';
1012
import { 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

1222
const 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

Comments
 (0)