@@ -270,6 +270,63 @@ void main() {
270
270
});
271
271
});
272
272
273
+ group ("MessageEmbedVideo" , () {
274
+ Future <void > prepareContent (WidgetTester tester, String html) async {
275
+ addTearDown (testBinding.reset);
276
+ await testBinding.globalStore.add (eg.selfAccount, eg.initialSnapshot ());
277
+ prepareBoringImageHttpClient ();
278
+
279
+ await tester.pumpWidget (GlobalStoreWidget (child: MaterialApp (
280
+ home: PerAccountStoreWidget (accountId: eg.selfAccount.id,
281
+ child: MessageContent (
282
+ message: eg.streamMessage (content: html),
283
+ content: parseContent (html))))));
284
+ await tester.pump (); // global store
285
+ await tester.pump (); // per-account store
286
+ debugNetworkImageHttpClientProvider = null ;
287
+ }
288
+
289
+ testWidgets ('video preview for youtube embed' , (tester) async {
290
+ const example = ContentExample .videoEmbedYoutube;
291
+ await prepareContent (tester, example.html);
292
+
293
+ final expectedVideo = example.expectedNodes[1 ] as EmbedVideoNode ;
294
+ final expectedResolvedPreviewUrl = eg
295
+ .store ()
296
+ .tryResolveUrl (expectedVideo.previewImageSrcUrl)! ;
297
+ final image = tester.widget <RealmContentNetworkImage >(
298
+ find.byType (RealmContentNetworkImage ));
299
+ check (image.src)
300
+ .equals (expectedResolvedPreviewUrl);
301
+
302
+ final expectedLaunchUrl = expectedVideo.hrefUrl;
303
+ await tester.tap (find.byIcon (Icons .play_arrow_rounded));
304
+ check (testBinding.takeLaunchUrlCalls ())
305
+ .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .platformDefault));
306
+ });
307
+
308
+ testWidgets ('video preview for vimeo embed' , (tester) async {
309
+ const example = ContentExample .videoEmbedVimeo;
310
+ await prepareContent (tester, example.html);
311
+
312
+ final expectedTitle = (((example.expectedNodes[0 ] as ParagraphNode ).nodes[0 ] as LinkNode ).nodes[0 ] as TextNode ).text;
313
+ await tester.ensureVisible (find.text (expectedTitle));
314
+
315
+ final expectedVideo = example.expectedNodes[1 ] as EmbedVideoNode ;
316
+ final expectedResolvedUrl = eg.store ().tryResolveUrl (expectedVideo.previewImageSrcUrl)! ;
317
+ final image = tester.widget <RealmContentNetworkImage >(
318
+ find.byType (RealmContentNetworkImage ));
319
+ check (image.src)
320
+ .equals (expectedResolvedUrl);
321
+
322
+ final expectedLaunchUrl = expectedVideo.hrefUrl;
323
+ await tester.tap (find.byIcon (Icons .play_arrow_rounded));
324
+ check (testBinding.takeLaunchUrlCalls ())
325
+ .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .platformDefault));
326
+ });
327
+ });
328
+
329
+
273
330
group ("CodeBlock" , () {
274
331
testContentSmoke (ContentExample .codeBlockPlain);
275
332
testContentSmoke (ContentExample .codeBlockHighlightedShort);
0 commit comments