@@ -328,6 +328,63 @@ void main() {
328
328
});
329
329
});
330
330
331
+ group ("MessageEmbedVideo" , () {
332
+ Future <void > prepareContent (WidgetTester tester, String html) async {
333
+ addTearDown (testBinding.reset);
334
+ await testBinding.globalStore.add (eg.selfAccount, eg.initialSnapshot ());
335
+ prepareBoringImageHttpClient ();
336
+
337
+ await tester.pumpWidget (GlobalStoreWidget (child: MaterialApp (
338
+ home: PerAccountStoreWidget (accountId: eg.selfAccount.id,
339
+ child: MessageContent (
340
+ message: eg.streamMessage (content: html),
341
+ content: parseContent (html))))));
342
+ await tester.pump (); // global store
343
+ await tester.pump (); // per-account store
344
+ debugNetworkImageHttpClientProvider = null ;
345
+ }
346
+
347
+ testWidgets ('video preview for youtube embed' , (tester) async {
348
+ const example = ContentExample .videoEmbedYoutube;
349
+ await prepareContent (tester, example.html);
350
+
351
+ final expectedVideo = example.expectedNodes[1 ] as EmbedVideoNode ;
352
+ final expectedResolvedPreviewUrl = eg
353
+ .store ()
354
+ .tryResolveUrl (expectedVideo.previewImageSrcUrl)! ;
355
+ final image = tester.widget <RealmContentNetworkImage >(
356
+ find.byType (RealmContentNetworkImage ));
357
+ check (image.src)
358
+ .equals (expectedResolvedPreviewUrl);
359
+
360
+ final expectedLaunchUrl = expectedVideo.hrefUrl;
361
+ await tester.tap (find.byIcon (Icons .play_arrow_rounded));
362
+ check (testBinding.takeLaunchUrlCalls ())
363
+ .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .platformDefault));
364
+ });
365
+
366
+ testWidgets ('video preview for vimeo embed' , (tester) async {
367
+ const example = ContentExample .videoEmbedVimeo;
368
+ await prepareContent (tester, example.html);
369
+
370
+ final expectedTitle = (((example.expectedNodes[0 ] as ParagraphNode ).nodes[0 ] as LinkNode ).nodes[0 ] as TextNode ).text;
371
+ await tester.ensureVisible (find.text (expectedTitle));
372
+
373
+ final expectedVideo = example.expectedNodes[1 ] as EmbedVideoNode ;
374
+ final expectedResolvedUrl = eg.store ().tryResolveUrl (expectedVideo.previewImageSrcUrl)! ;
375
+ final image = tester.widget <RealmContentNetworkImage >(
376
+ find.byType (RealmContentNetworkImage ));
377
+ check (image.src)
378
+ .equals (expectedResolvedUrl);
379
+
380
+ final expectedLaunchUrl = expectedVideo.hrefUrl;
381
+ await tester.tap (find.byIcon (Icons .play_arrow_rounded));
382
+ check (testBinding.takeLaunchUrlCalls ())
383
+ .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .platformDefault));
384
+ });
385
+ });
386
+
387
+
331
388
group ("CodeBlock" , () {
332
389
testContentSmoke (ContentExample .codeBlockPlain);
333
390
testContentSmoke (ContentExample .codeBlockHighlightedShort);
0 commit comments