Skip to content
This repository was archived by the owner on Jul 6, 2022. It is now read-only.

Commit a67a39c

Browse files
author
Victor Wiebe
committed
feat: change Cost and Type method in module factory
add method with tests. apply prettier on file
1 parent f363bfa commit a67a39c

File tree

2 files changed

+88
-7
lines changed

2 files changed

+88
-7
lines changed

src/contract_wrappers/modules/__tests__/module_factory_wrapper.test.ts

Lines changed: 71 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
// ModuleFactoryWrapper test
2-
import {mock, instance, reset, when, verify, objectContaining} from 'ts-mockito';
2+
import { mock, instance, reset, when, verify, objectContaining } from 'ts-mockito';
33
import {
44
ModuleFactoryContract,
55
BigNumber,
66
Web3Wrapper,
77
EtherDividendCheckpointEvents,
88
} from '@polymathnetwork/abi-wrappers';
9-
import {getMockedPolyResponse, MockedCallMethod, MockedSendMethod} from '../../../test_utils/mocked_methods';
9+
import { getMockedPolyResponse, MockedCallMethod, MockedSendMethod } from '../../../test_utils/mocked_methods';
1010
import ContractFactory from '../../../factories/contractFactory';
1111
import {
1212
bytes32ToString,
1313
parseModuleTypeValue,
1414
stringArrayToBytes32Array,
1515
stringToBytes32,
16-
weiToValue
16+
weiToValue,
1717
} from '../../../utils/convert';
1818
import ModuleFactoryWrapper from '../module_factory_wrapper';
1919
import ContractWrapper from '../../contract_wrapper';
20-
import {FULL_DECIMALS, ModuleType} from '../../../types';
20+
import { FULL_DECIMALS, ModuleType } from '../../../types';
2121

2222
describe('ModuleFactoryWrapper', () => {
2323
let target: ModuleFactoryWrapper;
@@ -66,7 +66,6 @@ describe('ModuleFactoryWrapper', () => {
6666
});
6767
});
6868

69-
7069
describe('Name', () => {
7170
test('should get name', async () => {
7271
// Address expected
@@ -230,7 +229,11 @@ describe('ModuleFactoryWrapper', () => {
230229
when(mockedContract.changeSetupCost).thenReturn(instance(mockedMethod));
231230
// Stub the request
232231
when(
233-
mockedMethod.sendTransactionAsync(objectContaining(mockedParams.setupCost), mockedParams.txData, mockedParams.safetyFactor),
232+
mockedMethod.sendTransactionAsync(
233+
objectContaining(mockedParams.setupCost),
234+
mockedParams.txData,
235+
mockedParams.safetyFactor,
236+
),
234237
).thenResolve(expectedResult);
235238

236239
// Owner Address expected
@@ -254,7 +257,68 @@ describe('ModuleFactoryWrapper', () => {
254257
verify(mockedOwnerMethod.callAsync()).once();
255258
verify(mockedContract.changeSetupCost).once();
256259
verify(
257-
mockedMethod.sendTransactionAsync(objectContaining(mockedParams.setupCost), mockedParams.txData, mockedParams.safetyFactor),
260+
mockedMethod.sendTransactionAsync(
261+
objectContaining(mockedParams.setupCost),
262+
mockedParams.txData,
263+
mockedParams.safetyFactor,
264+
),
265+
).once();
266+
verify(mockedWrapper.getAvailableAddressesAsync()).once();
267+
});
268+
});
269+
270+
describe('changeCostAndType', () => {
271+
test.todo('should fail as changeSetupCost is 0');
272+
test('should send the transaction to changeSetupCost', async () => {
273+
// Mocked parameters
274+
const mockedParams = {
275+
setupCost: new BigNumber(100),
276+
isCostInPoly: true,
277+
txData: {},
278+
safetyFactor: 10,
279+
};
280+
const expectedResult = getMockedPolyResponse();
281+
// Mocked method
282+
const mockedMethod = mock(MockedSendMethod);
283+
// Stub the method
284+
when(mockedContract.changeCostAndType).thenReturn(instance(mockedMethod));
285+
// Stub the request
286+
when(
287+
mockedMethod.sendTransactionAsync(
288+
objectContaining(mockedParams.setupCost),
289+
mockedParams.isCostInPoly,
290+
mockedParams.txData,
291+
mockedParams.safetyFactor,
292+
),
293+
).thenResolve(expectedResult);
294+
295+
// Owner Address expected
296+
const expectedOwnerResult = '0x5555555555555555555555555555555555555555';
297+
// Mocked method
298+
const mockedOwnerMethod = mock(MockedCallMethod);
299+
// Stub the method
300+
when(mockedContract.owner).thenReturn(instance(mockedOwnerMethod));
301+
// Stub the request
302+
when(mockedOwnerMethod.callAsync()).thenResolve(expectedOwnerResult);
303+
// Mock web3 wrapper owner
304+
when(mockedWrapper.getAvailableAddressesAsync()).thenResolve([expectedOwnerResult]);
305+
306+
// Real call
307+
const result = await target.changeCostAndType(mockedParams);
308+
309+
// Result expectation
310+
expect(result).toBe(expectedResult);
311+
// Verifications
312+
verify(mockedContract.owner).once();
313+
verify(mockedOwnerMethod.callAsync()).once();
314+
verify(mockedContract.changeCostAndType).once();
315+
verify(
316+
mockedMethod.sendTransactionAsync(
317+
objectContaining(mockedParams.setupCost),
318+
mockedParams.isCostInPoly,
319+
mockedParams.txData,
320+
mockedParams.safetyFactor,
321+
),
258322
).once();
259323
verify(mockedWrapper.getAvailableAddressesAsync()).once();
260324
});

src/contract_wrappers/modules/module_factory_wrapper.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ interface ChangeSetupCostParams extends TxParams {
7474
setupCost: BigNumber;
7575
}
7676

77+
interface ChangeCostAndTypeParams extends ChangeSetupCostParams {
78+
isCostInPoly: boolean;
79+
}
80+
7781
/**
7882
* This class includes the functionality related to interacting with the ModuleFactory contract.
7983
*/
@@ -163,6 +167,19 @@ export default class ModuleFactoryWrapper extends ContractWrapper {
163167
);
164168
};
165169

170+
/**
171+
* Change the cost and type
172+
*/
173+
public changeCostAndType = async (params: ChangeCostAndTypeParams) => {
174+
await this.checkOnlyOwner(params.txData);
175+
return (await this.contract).changeCostAndType.sendTransactionAsync(
176+
params.setupCost,
177+
params.isCostInPoly,
178+
params.txData,
179+
params.safetyFactor,
180+
);
181+
};
182+
166183
/**
167184
* Get setup cost
168185
*/

0 commit comments

Comments
 (0)