@@ -34,6 +34,7 @@ const handleOutput = utxo.find(
34
34
) ! [ 1 ] ;
35
35
36
36
const expectedHandleInfo : HandleInfo = {
37
+ addresses : { cardano : handleOutput . address } ,
37
38
assetId : handleAssetId ,
38
39
cardanoAddress : handleOutput . address ,
39
40
fingerprint : handleFingerprint ,
@@ -64,10 +65,10 @@ const hydrateHandle = (handleInfo: HandleInfo) =>
64
65
65
66
const exponentialBackoffDelay = ( iteration : number ) => Math . pow ( 2 , iteration ) * HYDRATE_HANDLE_INITIAL_INTERVAL ;
66
67
67
- const lastInteration = HYDRATE_HANDLE_MAX_RETRIES - 1 ;
68
+ const lastIteration = HYDRATE_HANDLE_MAX_RETRIES - 1 ;
68
69
69
70
const retrySyntax = ( retries : number ) =>
70
- Array . from ( { length : retries } , ( _ , i ) => exponentialBackoffDelay ( i ) - ( i === lastInteration ? 2 : 1 ) )
71
+ Array . from ( { length : retries } , ( _ , i ) => exponentialBackoffDelay ( i ) - ( i === lastIteration ? 2 : 1 ) )
71
72
. map ( ( exponentialDelay ) => ` - ${ exponentialDelay } ms ` )
72
73
. join ( '' ) ;
73
74
@@ -81,24 +82,27 @@ const handleReferenceTokenAssetId = Cardano.AssetId.fromParts(
81
82
describe ( 'createHandlesTracker' , ( ) => {
82
83
it ( 'matches utxo$ assets to given handlePolicyIds and adds context from assetInfo$ and tip$ observables' , ( ) => {
83
84
createTestScheduler ( ) . run ( ( { hot, expectObservable } ) => {
84
- const utxo$ = hot ( '-ab-' , { a : utxo , b : utxo2 } ) ;
85
+ const utxo$ = hot ( '-ab-' , { a : utxo , b : utxo2 } ) ;
85
86
const assetInfo$ = hot ( '-a-b' , {
86
87
a : new Map ( ) ,
87
88
b : new Map ( [ [ handleAssetId , handleAssetInfo ] ] )
88
89
} ) ;
89
90
const handlePolicyIds$ = hot ( '-a--' , { a : [ handlePolicyId ] } ) ;
90
91
91
- const handles$ = createHandlesTracker ( {
92
- assetInfo$,
93
- handlePolicyIds$,
94
- handleProvider : {
95
- getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
96
- healthCheck : jest . fn ( ) ,
97
- resolveHandles : async ( ) => [ ]
92
+ const handles$ = createHandlesTracker (
93
+ {
94
+ assetInfo$,
95
+ handlePolicyIds$,
96
+ handleProvider : {
97
+ getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
98
+ healthCheck : jest . fn ( ) ,
99
+ resolveHandles : async ( ) => [ ]
100
+ } ,
101
+ logger,
102
+ utxo$
98
103
} ,
99
- logger,
100
- utxo$
101
- } , { hydrateHandle : ( ) => hydrateHandle } ) ;
104
+ { hydrateHandle : ( ) => hydrateHandle }
105
+ ) ;
102
106
103
107
expectObservable ( handles$ ) . toBe ( '---ab' , {
104
108
a : [ expectedHandleInfo ] ,
@@ -109,7 +113,7 @@ describe('createHandlesTracker', () => {
109
113
110
114
it ( 'filters out handles that have total supply >1' , ( ) => {
111
115
createTestScheduler ( ) . run ( ( { hot, expectObservable } ) => {
112
- const utxo$ = hot ( '-a' , { a : utxo } ) ;
116
+ const utxo$ = hot ( '-a' , { a : utxo } ) ;
113
117
const assetInfo$ = hot ( '-a' , {
114
118
a : new Map ( [
115
119
[
@@ -123,38 +127,46 @@ describe('createHandlesTracker', () => {
123
127
} ) ;
124
128
const handlePolicyIds$ = hot ( '-a-' , { a : [ handlePolicyId ] } ) ;
125
129
126
- const handles$ = createHandlesTracker ( {
127
- assetInfo$,
128
- handlePolicyIds$,
129
- handleProvider : {
130
- getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
131
- healthCheck : jest . fn ( ) ,
132
- resolveHandles : async ( ) => [ ]
130
+ const handles$ = createHandlesTracker (
131
+ {
132
+ assetInfo$,
133
+ handlePolicyIds$,
134
+ handleProvider : {
135
+ getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
136
+ healthCheck : jest . fn ( ) ,
137
+ resolveHandles : async ( ) => [ ]
138
+ } ,
139
+ logger,
140
+ utxo$
133
141
} ,
134
- logger,
135
- utxo$
136
- } , { hydrateHandle : ( ) => hydrateHandle } ) ;
142
+ { hydrateHandle : ( ) => hydrateHandle }
143
+ ) ;
137
144
138
145
expectObservable ( handles$ ) . toBe ( '-a' , { a : [ ] } ) ;
139
146
} ) ;
140
147
} ) ;
141
148
142
149
it ( 'filters out cip68 reference tokens' , ( ) => {
143
150
createTestScheduler ( ) . run ( ( { hot, expectObservable } ) => {
144
- const utxo$ = hot ( '-a' , { a : [ [ utxo [ 0 ] [ 0 ] , {
145
- address : utxo [ 0 ] [ 1 ] . address ,
146
- value : {
147
- assets : new Map ( [
148
- [ handleReferenceTokenAssetId , 1n ]
149
- ] ) ,
150
- coins : 9_825_963n
151
- }
152
- }
153
- ] as Cardano . Utxo ] } ) ;
151
+ const utxo$ = hot ( '-a' , {
152
+ a : [
153
+ [
154
+ utxo [ 0 ] [ 0 ] ,
155
+ {
156
+ address : utxo [ 0 ] [ 1 ] . address ,
157
+ value : {
158
+ assets : new Map ( [ [ handleReferenceTokenAssetId , 1n ] ] ) ,
159
+ coins : 9_825_963n
160
+ }
161
+ }
162
+ ] as Cardano . Utxo
163
+ ]
164
+ } ) ;
154
165
const assetInfo$ = hot ( '-a' , {
155
166
a : new Map ( [
156
167
[
157
- handleReferenceTokenAssetId , {
168
+ handleReferenceTokenAssetId ,
169
+ {
158
170
...handleAssetInfo ,
159
171
supply : 1n
160
172
}
@@ -163,39 +175,45 @@ describe('createHandlesTracker', () => {
163
175
} ) ;
164
176
const handlePolicyIds$ = hot ( '-a-' , { a : [ handlePolicyId ] } ) ;
165
177
166
- const handles$ = createHandlesTracker ( {
167
- assetInfo$,
168
- handlePolicyIds$,
169
- handleProvider : {
170
- getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
171
- healthCheck : jest . fn ( ) ,
172
- resolveHandles : async ( ) => [ ]
178
+ const handles$ = createHandlesTracker (
179
+ {
180
+ assetInfo$,
181
+ handlePolicyIds$,
182
+ handleProvider : {
183
+ getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
184
+ healthCheck : jest . fn ( ) ,
185
+ resolveHandles : async ( ) => [ ]
186
+ } ,
187
+ logger,
188
+ utxo$
173
189
} ,
174
- logger,
175
- utxo$
176
- } , { hydrateHandle : ( ) => hydrateHandle } ) ;
190
+ { hydrateHandle : ( ) => hydrateHandle }
191
+ ) ;
177
192
178
193
expectObservable ( handles$ ) . toBe ( '-a' , { a : [ ] } ) ;
179
194
} ) ;
180
195
} ) ;
181
196
182
197
it ( 'does not emit duplicates with no changes' , ( ) => {
183
198
createTestScheduler ( ) . run ( ( { hot, expectObservable } ) => {
184
- const utxo$ = hot ( '-a-' , { a : utxo } ) ;
185
- const assetInfo$ = hot ( '-aa' , { a : new Map ( [ [ handleAssetId , handleAssetInfo ] ] ) } ) ;
199
+ const utxo$ = hot ( '-a-' , { a : utxo } ) ;
200
+ const assetInfo$ = hot ( '-aa' , { a : new Map ( [ [ handleAssetId , handleAssetInfo ] ] ) } ) ;
186
201
const handlePolicyIds$ = hot ( '-a-' , { a : [ handlePolicyId ] } ) ;
187
202
188
- const handles$ = createHandlesTracker ( {
189
- assetInfo$,
190
- handlePolicyIds$,
191
- handleProvider : {
192
- getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
193
- healthCheck : jest . fn ( ) ,
194
- resolveHandles : async ( ) => [ ]
203
+ const handles$ = createHandlesTracker (
204
+ {
205
+ assetInfo$,
206
+ handlePolicyIds$,
207
+ handleProvider : {
208
+ getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
209
+ healthCheck : jest . fn ( ) ,
210
+ resolveHandles : async ( ) => [ ]
211
+ } ,
212
+ logger,
213
+ utxo$
195
214
} ,
196
- logger,
197
- utxo$
198
- } , { hydrateHandle : ( ) => hydrateHandle } ) ;
215
+ { hydrateHandle : ( ) => hydrateHandle }
216
+ ) ;
199
217
200
218
expectObservable ( handles$ ) . toBe ( '-ab' , {
201
219
a : [ expectedHandleInfo ] ,
@@ -206,22 +224,25 @@ describe('createHandlesTracker', () => {
206
224
207
225
it ( 'shares a single subscription to dependency observables' , ( ) => {
208
226
createTestScheduler ( ) . run ( ( { hot, expectSubscriptions } ) => {
209
- const utxo$ = hot ( '-a' , { a : utxo } ) ;
227
+ const utxo$ = hot ( '-a' , { a : utxo } ) ;
210
228
const assetInfo$ = hot ( '-a' , {
211
229
a : new Map ( [ [ handleAssetId , handleAssetInfo ] ] )
212
230
} ) ;
213
231
const handlePolicyIds$ = hot ( 'a-' , { a : [ handlePolicyId ] } ) ;
214
- const handles$ = createHandlesTracker ( {
215
- assetInfo$,
216
- handlePolicyIds$,
217
- handleProvider : {
218
- getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
219
- healthCheck : jest . fn ( ) ,
220
- resolveHandles : async ( ) => [ ]
232
+ const handles$ = createHandlesTracker (
233
+ {
234
+ assetInfo$,
235
+ handlePolicyIds$,
236
+ handleProvider : {
237
+ getPolicyIds : async ( ) : Promise < Cardano . PolicyId [ ] > => [ handlePolicyId ] ,
238
+ healthCheck : jest . fn ( ) ,
239
+ resolveHandles : async ( ) => [ ]
240
+ } ,
241
+ logger,
242
+ utxo$
221
243
} ,
222
- logger,
223
- utxo$
224
- } , { hydrateHandle : ( ) => hydrateHandle } ) ;
244
+ { hydrateHandle : ( ) => hydrateHandle }
245
+ ) ;
225
246
combineLatest ( [ handles$ , handles$ ] ) . pipe ( take ( 1 ) ) . subscribe ( ) ;
226
247
expectSubscriptions ( utxo$ . subscriptions ) . toBe ( '^!' ) ;
227
248
expectSubscriptions ( assetInfo$ . subscriptions ) . toBe ( '^!' ) ;
0 commit comments