@@ -14,10 +14,12 @@ import ModuleWrapper from '../../module_wrapper';
14
14
import {
15
15
bytes32ArrayToStringArray ,
16
16
bytes32ToString ,
17
+ dateArrayToBigNumberArray ,
17
18
dateToBigNumber ,
18
19
parsePermBytes32Value ,
19
20
stringArrayToBytes32Array ,
20
21
stringToBytes32 ,
22
+ valueArrayToWeiArray ,
21
23
valueToWei ,
22
24
weiToValue ,
23
25
} from '../../../../utils/convert' ;
@@ -592,11 +594,10 @@ describe('LockUpTransferManagerWrapper', () => {
592
594
} ) ;
593
595
} ) ;
594
596
595
-
596
597
describe ( 'addNewLockUpType' , ( ) => {
597
598
test ( 'should call addNewLockUpType' , async ( ) => {
598
599
const expectedOwnerResult = '0x8888888888888888888888888888888888888888' ;
599
- const lockupName = 'Lockup1' ;
600
+ const lockupName = 'Lockup1' ;
600
601
const expectedDecimalsResult = new BigNumber ( 18 ) ;
601
602
const expectedLockupAmount = valueToWei ( new BigNumber ( 0 ) , expectedDecimalsResult ) ;
602
603
const expectedStartTime = new BigNumber ( 0 ) ;
@@ -621,7 +622,7 @@ describe('LockUpTransferManagerWrapper', () => {
621
622
when ( mockedContract . securityToken ) . thenReturn ( instance ( mockedGetSecurityTokenAddressMethod ) ) ;
622
623
when ( mockedGetSecurityTokenAddressMethod . callAsync ( ) ) . thenResolve ( expectedSecurityTokenAddress ) ;
623
624
when ( mockedContractFactory . getSecurityTokenContract ( expectedSecurityTokenAddress ) ) . thenResolve (
624
- instance ( mockedSecurityTokenContract ) ,
625
+ instance ( mockedSecurityTokenContract ) ,
625
626
) ;
626
627
const mockedSecurityTokenDecimalsMethod = mock ( MockedCallMethod ) ;
627
628
when ( mockedSecurityTokenDecimalsMethod . callAsync ( ) ) . thenResolve ( expectedDecimalsResult ) ;
@@ -638,15 +639,15 @@ describe('LockUpTransferManagerWrapper', () => {
638
639
// Stub the method
639
640
when ( mockedContract . getLockUp ) . thenReturn ( instance ( mockedGetLockupMethod ) ) ;
640
641
// Stub the request
641
- when ( mockedGetLockupMethod . callAsync ( objectContaining ( stringToBytes32 ( mockedGetLockupParams . lockupName ) ) ) ) . thenResolve (
642
- expectedGetLockupResult ,
643
- ) ;
642
+ when (
643
+ mockedGetLockupMethod . callAsync ( objectContaining ( stringToBytes32 ( mockedGetLockupParams . lockupName ) ) ) ,
644
+ ) . thenResolve ( expectedGetLockupResult ) ;
644
645
645
646
const mockedParams = {
646
647
lockupAmount : new BigNumber ( 100 ) ,
647
648
startTime : new Date ( 2030 , 1 ) ,
648
649
lockUpPeriodSeconds : new BigNumber ( 3600 ) ,
649
- releaseFrequencySeconds : new BigNumber ( 60 ) ,
650
+ releaseFrequenciesSeconds : new BigNumber ( 60 ) ,
650
651
lockupName,
651
652
txData : { } ,
652
653
safetyFactor : 10 ,
@@ -658,15 +659,15 @@ describe('LockUpTransferManagerWrapper', () => {
658
659
when ( mockedContract . addNewLockUpType ) . thenReturn ( instance ( mockedMethod ) ) ;
659
660
// Stub the request
660
661
when (
661
- mockedMethod . sendTransactionAsync (
662
- objectContaining ( mockedParams . lockupAmount ) ,
663
- objectContaining ( dateToBigNumber ( mockedParams . startTime ) ) ,
664
- objectContaining ( mockedParams . lockUpPeriodSeconds ) ,
665
- objectContaining ( mockedParams . releaseFrequencySeconds ) ,
666
- stringToBytes32 ( mockedParams . lockupName ) ,
667
- mockedParams . txData ,
668
- mockedParams . safetyFactor ,
669
- ) ,
662
+ mockedMethod . sendTransactionAsync (
663
+ objectContaining ( valueToWei ( mockedParams . lockupAmount , expectedDecimalsResult ) ) ,
664
+ objectContaining ( dateToBigNumber ( mockedParams . startTime ) ) ,
665
+ objectContaining ( mockedParams . lockUpPeriodSeconds ) ,
666
+ objectContaining ( mockedParams . releaseFrequenciesSeconds ) ,
667
+ objectContaining ( stringToBytes32 ( mockedParams . lockupName ) ) ,
668
+ mockedParams . txData ,
669
+ mockedParams . safetyFactor ,
670
+ ) ,
670
671
) . thenResolve ( expectedResult ) ;
671
672
672
673
// Real call
@@ -677,24 +678,135 @@ describe('LockUpTransferManagerWrapper', () => {
677
678
// Verifications
678
679
verify ( mockedContract . addNewLockUpType ) . once ( ) ;
679
680
verify (
680
- mockedMethod . sendTransactionAsync (
681
- objectContaining ( mockedParams . lockupAmount ) ,
682
- objectContaining ( dateToBigNumber ( mockedParams . startTime ) ) ,
683
- objectContaining ( mockedParams . lockUpPeriodSeconds ) ,
684
- objectContaining ( mockedParams . releaseFrequencySeconds ) ,
685
- stringToBytes32 ( mockedParams . lockupName ) ,
686
- mockedParams . txData ,
687
- mockedParams . safetyFactor ,
688
- ) ,
681
+ mockedMethod . sendTransactionAsync (
682
+ objectContaining ( valueToWei ( mockedParams . lockupAmount , expectedDecimalsResult ) ) ,
683
+ objectContaining ( dateToBigNumber ( mockedParams . startTime ) ) ,
684
+ objectContaining ( mockedParams . lockUpPeriodSeconds ) ,
685
+ objectContaining ( mockedParams . releaseFrequenciesSeconds ) ,
686
+ objectContaining ( stringToBytes32 ( mockedParams . lockupName ) ) ,
687
+ mockedParams . txData ,
688
+ mockedParams . safetyFactor ,
689
+ ) ,
689
690
) . once ( ) ;
690
691
verify ( mockedSecurityTokenOwnerMethod . callAsync ( ) ) . once ( ) ;
691
692
verify ( mockedSecurityTokenContract . owner ) . once ( ) ;
692
- verify ( mockedContract . securityToken ) . twice ( ) ;
693
- verify ( mockedGetSecurityTokenAddressMethod . callAsync ( ) ) . twice ( ) ;
694
- verify ( mockedContractFactory . getSecurityTokenContract ( expectedSecurityTokenAddress ) ) . twice ( ) ;
693
+ verify ( mockedContract . securityToken ) . thrice ( ) ;
694
+ verify ( mockedGetSecurityTokenAddressMethod . callAsync ( ) ) . thrice ( ) ;
695
+ verify ( mockedContractFactory . getSecurityTokenContract ( expectedSecurityTokenAddress ) ) . thrice ( ) ;
695
696
verify ( mockedWrapper . getAvailableAddressesAsync ( ) ) . once ( ) ;
696
697
verify ( mockedContract . getLockUp ) . once ( ) ;
697
- verify ( mockedGetLockupMethod . callAsync ( objectContaining ( stringToBytes32 ( mockedGetLockupParams . lockupName ) ) ) ) . once ( ) ;
698
+ verify (
699
+ mockedGetLockupMethod . callAsync ( objectContaining ( stringToBytes32 ( mockedGetLockupParams . lockupName ) ) ) ,
700
+ ) . once ( ) ;
701
+ } ) ;
702
+ } ) ;
703
+
704
+ describe ( 'addNewLockUpTypeMulti' , ( ) => {
705
+ test ( 'should call addNewLockUpTypeMulti' , async ( ) => {
706
+ const expectedOwnerResult = '0x8888888888888888888888888888888888888888' ;
707
+ const lockupNames = [ 'Lockup1' , 'Lockup2' ] ;
708
+ const expectedDecimalsResult = new BigNumber ( 18 ) ;
709
+ const expectedLockupAmount = valueToWei ( new BigNumber ( 0 ) , expectedDecimalsResult ) ;
710
+ const expectedStartTime = new BigNumber ( 0 ) ;
711
+ const expectedLockUpPeriodSeconds = new BigNumber ( 0 ) ;
712
+ const expectedReleaseFrequencySeconds = new BigNumber ( 0 ) ;
713
+ const expectedUnlockedAmount = new BigNumber ( 0 ) ;
714
+ const expectedGetLockupResult = [
715
+ expectedLockupAmount ,
716
+ expectedStartTime ,
717
+ expectedLockUpPeriodSeconds ,
718
+ expectedReleaseFrequencySeconds ,
719
+ expectedUnlockedAmount ,
720
+ ] ;
721
+ const mockedGetLockupParams = {
722
+ lockupNames,
723
+ } ;
724
+
725
+ // Security Token Address expected
726
+ const expectedSecurityTokenAddress = '0x3333333333333333333333333333333333333333' ;
727
+ // Setup get Security Token Address
728
+ const mockedGetSecurityTokenAddressMethod = mock ( MockedCallMethod ) ;
729
+ when ( mockedContract . securityToken ) . thenReturn ( instance ( mockedGetSecurityTokenAddressMethod ) ) ;
730
+ when ( mockedGetSecurityTokenAddressMethod . callAsync ( ) ) . thenResolve ( expectedSecurityTokenAddress ) ;
731
+ when ( mockedContractFactory . getSecurityTokenContract ( expectedSecurityTokenAddress ) ) . thenResolve (
732
+ instance ( mockedSecurityTokenContract ) ,
733
+ ) ;
734
+ const mockedSecurityTokenDecimalsMethod = mock ( MockedCallMethod ) ;
735
+ when ( mockedSecurityTokenDecimalsMethod . callAsync ( ) ) . thenResolve ( expectedDecimalsResult ) ;
736
+ when ( mockedSecurityTokenContract . decimals ) . thenReturn ( instance ( mockedSecurityTokenDecimalsMethod ) ) ;
737
+ const mockedSecurityTokenOwnerMethod = mock ( MockedCallMethod ) ;
738
+ when ( mockedSecurityTokenOwnerMethod . callAsync ( ) ) . thenResolve ( expectedOwnerResult ) ;
739
+ when ( mockedSecurityTokenContract . owner ) . thenReturn ( instance ( mockedSecurityTokenOwnerMethod ) ) ;
740
+
741
+ // Mock web3 wrapper owner
742
+ when ( mockedWrapper . getAvailableAddressesAsync ( ) ) . thenResolve ( [ expectedOwnerResult ] ) ;
743
+
744
+ // Mocked method
745
+ const mockedGetLockupMethod = mock ( MockedCallMethod ) ;
746
+ // Stub the method
747
+ when ( mockedContract . getLockUp ) . thenReturn ( instance ( mockedGetLockupMethod ) ) ;
748
+ // Stub the request
749
+ for ( let i = 0 ; i < lockupNames . length ; i += 1 ) {
750
+ when ( mockedGetLockupMethod . callAsync ( objectContaining ( stringToBytes32 ( lockupNames [ i ] ) ) ) ) . thenResolve (
751
+ expectedGetLockupResult ,
752
+ ) ;
753
+ }
754
+
755
+ const mockedParams = {
756
+ lockupAmounts : [ new BigNumber ( 100 ) , new BigNumber ( 200 ) ] ,
757
+ startTimes : [ new Date ( 2030 , 1 ) , new Date ( 2030 , 1 ) ] ,
758
+ lockUpPeriodSeconds : [ new BigNumber ( 3600 ) , new BigNumber ( 3600 ) ] ,
759
+ releaseFrequenciesSeconds : [ new BigNumber ( 60 ) , new BigNumber ( 60 ) ] ,
760
+ lockupNames,
761
+ txData : { } ,
762
+ safetyFactor : 10 ,
763
+ } ;
764
+ const expectedResult = getMockedPolyResponse ( ) ;
765
+ // Mocked method
766
+ const mockedMethod = mock ( MockedSendMethod ) ;
767
+ // Stub the method
768
+ when ( mockedContract . addNewLockUpTypeMulti ) . thenReturn ( instance ( mockedMethod ) ) ;
769
+ // Stub the request
770
+ when (
771
+ mockedMethod . sendTransactionAsync (
772
+ objectContaining ( valueArrayToWeiArray ( mockedParams . lockupAmounts , expectedDecimalsResult ) ) ,
773
+ objectContaining ( dateArrayToBigNumberArray ( mockedParams . startTimes ) ) ,
774
+ objectContaining ( mockedParams . lockUpPeriodSeconds ) ,
775
+ objectContaining ( mockedParams . releaseFrequenciesSeconds ) ,
776
+ objectContaining ( stringArrayToBytes32Array ( mockedParams . lockupNames ) ) ,
777
+ mockedParams . txData ,
778
+ mockedParams . safetyFactor ,
779
+ ) ,
780
+ ) . thenResolve ( expectedResult ) ;
781
+
782
+ // Real call
783
+ const result = await target . addNewLockUpTypeMulti ( mockedParams ) ;
784
+
785
+ // Result expectation
786
+ expect ( result ) . toBe ( expectedResult ) ;
787
+ // Verifications
788
+ verify ( mockedContract . addNewLockUpTypeMulti ) . once ( ) ;
789
+ verify (
790
+ mockedMethod . sendTransactionAsync (
791
+ objectContaining ( valueArrayToWeiArray ( mockedParams . lockupAmounts , expectedDecimalsResult ) ) ,
792
+ objectContaining ( dateArrayToBigNumberArray ( mockedParams . startTimes ) ) ,
793
+ objectContaining ( mockedParams . lockUpPeriodSeconds ) ,
794
+ objectContaining ( mockedParams . releaseFrequenciesSeconds ) ,
795
+ objectContaining ( stringArrayToBytes32Array ( mockedParams . lockupNames ) ) ,
796
+ mockedParams . txData ,
797
+ mockedParams . safetyFactor ,
798
+ ) ,
799
+ ) . once ( ) ;
800
+ verify ( mockedSecurityTokenOwnerMethod . callAsync ( ) ) . once ( ) ;
801
+ verify ( mockedSecurityTokenContract . owner ) . once ( ) ;
802
+ verify ( mockedContract . securityToken ) . times ( 4 ) ;
803
+ verify ( mockedGetSecurityTokenAddressMethod . callAsync ( ) ) . times ( 4 ) ;
804
+ verify ( mockedContractFactory . getSecurityTokenContract ( expectedSecurityTokenAddress ) ) . times ( 4 ) ;
805
+ verify ( mockedWrapper . getAvailableAddressesAsync ( ) ) . once ( ) ;
806
+ verify ( mockedContract . getLockUp ) . times ( mockedGetLockupParams . lockupNames . length ) ;
807
+ for ( let i = 0 ; i < lockupNames . length ; i += 1 ) {
808
+ verify ( mockedGetLockupMethod . callAsync ( objectContaining ( stringToBytes32 ( lockupNames [ i ] ) ) ) ) . once ( ) ;
809
+ }
698
810
} ) ;
699
811
} ) ;
700
812
0 commit comments