Skip to content

Commit 939a504

Browse files
author
Victor Wiebe
committed
feat: refresh st factory when there is a redemption
1 parent b12a55e commit 939a504

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/procedures/ControllerRedeem.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,21 @@ export class ControllerRedeem extends Procedure<ControllerRedeemProcedureArgs> {
6767
*/
6868
await this.addTransaction(securityToken.controllerRedeem, {
6969
tag: PolyTransactionTag.ControllerRedeem,
70-
resolvers: [createControllerRedeemResolver(factories, symbol, from)],
70+
resolvers: [
71+
createControllerRedeemResolver(factories, symbol, from),
72+
refreshSecurityTokenFactoryResolver(factories, symbol),
73+
],
7174
})({ from, value: amount, data, operatorData: reason });
7275
}
7376
}
77+
78+
export const refreshSecurityTokenFactoryResolver = (
79+
factories: Factories,
80+
symbol: string
81+
) => async () => {
82+
return factories.securityTokenFactory.refresh(SecurityToken.generateId({ symbol }));
83+
};
84+
7485
export const createControllerRedeemResolver = (
7586
factories: Factories,
7687
symbol: string,

src/procedures/__tests__/ControllerRedeem.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
} from '../../types';
1919
import { mockFactories } from '../../testUtils/mockFactories';
2020
import * as shareholderFactoryModule from '../../entities/factories/ShareholderFactory';
21+
import * as securityTokenFactoryModule from '../../entities/factories/SecurityTokenFactory';
2122
import { Factories } from '../../Context';
2223
import { SecurityToken, Shareholder } from '../../entities';
2324

@@ -37,6 +38,7 @@ describe('ControllerRedeem', () => {
3738
let tokenFactoryMock: MockManager<tokenFactoryModule.MockedTokenFactoryModule>;
3839
let securityTokenMock: MockManager<contractWrappersModule.SecurityToken_3_0_0>;
3940
let shareholderFactoryMock: MockManager<shareholderFactoryModule.ShareholderFactory>;
41+
let securityTokenFactoryMock: MockManager<securityTokenFactoryModule.SecurityTokenFactory>;
4042
let factoriesMockedSetup: Factories;
4143

4244
beforeEach(() => {
@@ -58,8 +60,13 @@ describe('ControllerRedeem', () => {
5860
contextMock.set('contractWrappers', wrappersMock.getMockInstance());
5961
wrappersMock.set('tokenFactory', tokenFactoryMock.getMockInstance());
6062
shareholderFactoryMock = ImportMock.mockClass(shareholderFactoryModule, 'ShareholderFactory');
63+
securityTokenFactoryMock = ImportMock.mockClass(
64+
securityTokenFactoryModule,
65+
'SecurityTokenFactory'
66+
);
6167
factoriesMockedSetup = mockFactories();
6268
factoriesMockedSetup.shareholderFactory = shareholderFactoryMock.getMockInstance();
69+
factoriesMockedSetup.securityTokenFactory = securityTokenFactoryMock.getMockInstance();
6370
contextMock.set('factories', factoriesMockedSetup);
6471

6572
// Instantiate ControllerRedeem
@@ -166,4 +173,19 @@ describe('ControllerRedeem', () => {
166173
expect(resolverValue).toEqual(undefined);
167174
expect(refreshStub.callCount).toEqual(1);
168175
});
176+
177+
test('should refresh the security token factory with resolver', async () => {
178+
const refreshStub = securityTokenFactoryMock.mock('refresh', Promise.resolve(undefined));
179+
180+
const resolverValue = await controllerRedeemModule.refreshSecurityTokenFactoryResolver(
181+
factoriesMockedSetup,
182+
params.symbol
183+
)();
184+
185+
expect(
186+
refreshStub.getCall(0).calledWithExactly(SecurityToken.generateId({ symbol: params.symbol }))
187+
).toEqual(true);
188+
expect(resolverValue).toEqual(undefined);
189+
expect(refreshStub.callCount).toEqual(1);
190+
});
169191
});

0 commit comments

Comments
 (0)