@@ -262,4 +262,92 @@ action:
262
262
expect ( callback ) . toHaveBeenLastCalledWith ( 1 ) ;
263
263
} ) ;
264
264
} ) ;
265
+
266
+ describe ( 'update metadata interactions' , ( ) => {
267
+ beforeEach ( ( ) => {
268
+ plugin . file . create ( '' , 'test' , 'md' ) ;
269
+ } ) ;
270
+
271
+ test . each ( [ 'foo' , 'memory^foo' , 'globalMemory^foo' ] ) ( 'view field created after' , async value => {
272
+ const bindTarget = plugin . api . parseBindTarget ( value , 'test.md' ) ;
273
+
274
+ plugin . api . setMetadata ( bindTarget , 123 ) ;
275
+
276
+ expect ( plugin . api . getMetadata ( bindTarget ) ) . toBe ( 123 ) ;
277
+
278
+ const viewField = plugin . api . createViewFieldMountable ( 'test.md' , {
279
+ declaration : `VIEW[{${ value } }]` ,
280
+ renderChildType : RenderChildType . INLINE ,
281
+ } ) ;
282
+
283
+ viewField . mount ( document . body ) ;
284
+
285
+ await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
286
+
287
+ expect ( viewField . viewField ?. getTargetEl ( ) ?. textContent ) . toBe ( '123' ) ;
288
+ } ) ;
289
+
290
+ test . each ( [ 'foo' , 'memory^foo' , 'globalMemory^foo' ] ) ( 'input field created after' , async value => {
291
+ const bindTarget = plugin . api . parseBindTarget ( value , 'test.md' ) ;
292
+
293
+ plugin . api . setMetadata ( bindTarget , 123 ) ;
294
+
295
+ expect ( plugin . api . getMetadata ( bindTarget ) ) . toBe ( 123 ) ;
296
+
297
+ const inputField = plugin . api . createInputFieldMountable ( 'test.md' , {
298
+ declaration : `INPUT[number:${ value } ]` ,
299
+ renderChildType : RenderChildType . INLINE ,
300
+ } ) ;
301
+
302
+ inputField . mount ( document . body ) ;
303
+
304
+ await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
305
+
306
+ expect ( inputField . inputField ?. getValue ( ) ) . toBe ( 123 ) ;
307
+ } ) ;
308
+
309
+ test . each ( [ 'foo' , 'memory^foo' , 'globalMemory^foo' ] ) ( 'view field created before' , async value => {
310
+ const bindTarget = plugin . api . parseBindTarget ( value , 'test.md' ) ;
311
+
312
+ const viewField = plugin . api . createViewFieldMountable ( 'test.md' , {
313
+ declaration : `VIEW[{${ value } }]` ,
314
+ renderChildType : RenderChildType . INLINE ,
315
+ } ) ;
316
+
317
+ viewField . mount ( document . body ) ;
318
+
319
+ await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
320
+
321
+ plugin . api . setMetadata ( bindTarget , 123 ) ;
322
+
323
+ expect ( plugin . api . getMetadata ( bindTarget ) ) . toBe ( 123 ) ;
324
+
325
+ await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
326
+
327
+ expect ( viewField . viewField ?. getTargetEl ( ) ?. textContent ) . toBe ( '123' ) ;
328
+ } ) ;
329
+
330
+ test . each ( [ 'foo' , 'memory^foo' , 'globalMemory^foo' ] ) ( 'input field created before' , async value => {
331
+ const bindTarget = plugin . api . parseBindTarget ( value , 'test.md' ) ;
332
+
333
+ const inputField = plugin . api . createInputFieldMountable ( 'test.md' , {
334
+ declaration : `INPUT[number:${ value } ]` ,
335
+ renderChildType : RenderChildType . INLINE ,
336
+ } ) ;
337
+
338
+ inputField . mount ( document . body ) ;
339
+
340
+ await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
341
+
342
+ plugin . api . setMetadata ( bindTarget , 123 ) ;
343
+
344
+ expect ( plugin . api . getMetadata ( bindTarget ) ) . toBe ( 123 ) ;
345
+
346
+ await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
347
+
348
+ console . log ( plugin . metadataManager . getSource ( 'globalMemory' ) ) ;
349
+
350
+ expect ( inputField . inputField ?. getValue ( ) ) . toBe ( 123 ) ;
351
+ } ) ;
352
+ } ) ;
265
353
} ) ;
0 commit comments