@@ -4,26 +4,31 @@ import { RestClient } from '~/rest';
4
4
import { createAssetParams } from '~/rest/assets' ;
5
5
import { ProcessMode } from '~/rest/common' ;
6
6
import { Identity } from '~/rest/identities/interfaces' ;
7
+ import { fungibleInstructionParams , venueParams } from '~/rest/settlements' ;
7
8
8
- const handles = [ 'issuer' ] ;
9
+ const handles = [ 'issuer' , 'receiver' ] ;
9
10
let factory : TestFactory ;
10
11
11
12
describe ( 'Asset pre-approval' , ( ) => {
12
13
let restClient : RestClient ;
13
- let signer : string ;
14
+ let issuerSigner : string ;
15
+ let receiverSigner : string ;
14
16
let issuer : Identity ;
17
+ let receiver : Identity ;
15
18
let assetParams : ReturnType < typeof createAssetParams > ;
16
19
let assetId : string ;
17
20
18
21
beforeAll ( async ( ) => {
19
22
factory = await TestFactory . create ( { handles } ) ;
20
23
( { restClient } = factory ) ;
21
24
issuer = factory . getSignerIdentity ( handles [ 0 ] ) ;
25
+ receiver = factory . getSignerIdentity ( handles [ 1 ] ) ;
22
26
23
- signer = issuer . signer ;
27
+ issuerSigner = issuer . signer ;
28
+ receiverSigner = receiver . signer ;
24
29
25
30
assetParams = createAssetParams ( {
26
- options : { processMode : ProcessMode . Submit , signer } ,
31
+ options : { processMode : ProcessMode . Submit , signer : issuerSigner } ,
27
32
} ) ;
28
33
assetId = await restClient . assets . createAndGetAssetId ( assetParams ) ;
29
34
} ) ;
@@ -33,7 +38,7 @@ describe('Asset pre-approval', () => {
33
38
} ) ;
34
39
35
40
it ( 'should set asset pre-approval' , async ( ) => {
36
- const params = { options : { processMode : ProcessMode . Submit , signer } } ;
41
+ const params = { options : { processMode : ProcessMode . Submit , signer : receiverSigner } } ;
37
42
const txData = await restClient . assets . preApprove ( assetId , params ) ;
38
43
39
44
expect ( txData ) . toMatchObject ( {
@@ -48,32 +53,52 @@ describe('Asset pre-approval', () => {
48
53
} ) ;
49
54
50
55
it ( 'should return the asset as pre-approved' , async ( ) => {
51
- const result = await restClient . assets . getIsPreApproved ( assetId , issuer . did ) ;
56
+ const result = await restClient . assets . getIsPreApproved ( assetId , receiver . did ) ;
52
57
53
58
expect ( result ) . toEqual ( {
54
- did : issuer . did ,
59
+ did : receiver . did ,
55
60
asset : assetId ,
56
61
isPreApproved : true ,
57
62
} ) ;
58
63
} ) ;
59
64
60
65
it ( 'should return a page of pre-approved assets' , async ( ) => {
61
- const results = await restClient . assets . getPreApprovals ( issuer . did ) ;
66
+ const results = await restClient . assets . getPreApprovals ( receiver . did ) ;
62
67
63
68
expect ( results ) . toEqual ( {
64
69
results : [
65
70
{
66
71
asset : assetId ,
67
- did : issuer . did ,
72
+ did : receiver . did ,
68
73
isPreApproved : true ,
69
74
} ,
70
75
] ,
71
76
} ) ;
72
77
} ) ;
73
78
79
+ it ( 'should create a Venue to trade the Asset' , async ( ) => {
80
+ const params = venueParams ( {
81
+ options : { processMode : ProcessMode . Submit , signer : issuerSigner } ,
82
+ } ) ;
83
+ const txData = await restClient . settlements . createVenue ( params ) ;
84
+
85
+ const { venue : venueId } = txData as { venue : string } ;
86
+
87
+ const instructionParams = fungibleInstructionParams ( assetId , issuer . did , receiver . did , {
88
+ options : { processMode : ProcessMode . Submit , signer : issuerSigner } ,
89
+ } ) ;
90
+ await restClient . settlements . createInstruction ( venueId , instructionParams ) ;
91
+
92
+ const portfolioData = await restClient . portfolios . getPortfolio ( receiver . did , '0' ) ;
93
+
94
+ const hasAsset = portfolioData . assetBalances . find ( ( asset ) => asset . asset === assetId ) ;
95
+
96
+ expect ( hasAsset ) . toBeDefined ( ) ;
97
+ } ) ;
98
+
74
99
it ( 'should remove asset pre-approval' , async ( ) => {
75
100
const txData = await restClient . assets . removePreApproval ( assetId , {
76
- options : { processMode : ProcessMode . Submit , signer } ,
101
+ options : { processMode : ProcessMode . Submit , signer : receiverSigner } ,
77
102
} ) ;
78
103
79
104
expect ( txData ) . toMatchObject ( {
0 commit comments