@@ -9,6 +9,7 @@ import 'package:flutter/material.dart';
9
9
import 'package:plugin_platform_interface/plugin_platform_interface.dart' ;
10
10
import 'package:video_player_platform_interface/video_player_platform_interface.dart' ;
11
11
import 'package:video_player/video_player.dart' ;
12
+ import 'package:zulip/api/model/events.dart' ;
12
13
import 'package:zulip/api/model/model.dart' ;
13
14
import 'package:zulip/model/localizations.dart' ;
14
15
import 'package:zulip/model/narrow.dart' ;
@@ -204,6 +205,8 @@ class FakeVideoPlayerPlatform extends Fake
204
205
void main () {
205
206
TestZulipBinding .ensureInitialized ();
206
207
208
+ late PerAccountStore store;
209
+
207
210
group ('LightboxHero' , () {
208
211
late PerAccountStore store;
209
212
late FakeApiConnection connection;
@@ -316,10 +319,16 @@ void main() {
316
319
317
320
Future <void > setupPage (WidgetTester tester, {
318
321
Message ? message,
322
+ List <User >? users,
319
323
required Uri ? thumbnailUrl,
320
324
}) async {
321
325
addTearDown (testBinding.reset);
322
326
await testBinding.globalStore.add (eg.selfAccount, eg.initialSnapshot ());
327
+ store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
328
+
329
+ if (users != null ) {
330
+ await store.addUsers (users);
331
+ }
323
332
324
333
// ZulipApp instead of TestZulipApp because we need the navigator to push
325
334
// the lightbox route. The lightbox page works together with the route;
@@ -351,20 +360,41 @@ void main() {
351
360
debugNetworkImageHttpClientProvider = null ;
352
361
});
353
362
354
- testWidgets ('app bar shows sender name and date' , (tester) async {
355
- prepareBoringImageHttpClient ();
356
- final timestamp = DateTime .parse ("2024-07-23 23:12:24" ).millisecondsSinceEpoch ~ / 1000 ;
357
- final message = eg.streamMessage (sender: eg.otherUser, timestamp: timestamp);
358
- await setupPage (tester, message: message, thumbnailUrl: null );
359
-
360
- // We're looking for a RichText, in the app bar, with both the
361
- // sender's name and the timestamp.
363
+ void checkAppBarNameAndDate (WidgetTester tester, String expectedName, String expectedDate) {
362
364
final labelTextWidget = tester.widget <RichText >(
363
365
find.descendant (of: find.byType (AppBar ).last,
364
- matching: find.textContaining (findRichText: true ,
365
- eg.otherUser.fullName)));
366
+ matching: find.textContaining (findRichText: true , expectedName)));
366
367
check (labelTextWidget.text.toPlainText ())
367
- .contains ('Jul 23, 2024 23:12:24' );
368
+ .contains (expectedDate);
369
+ }
370
+
371
+ testWidgets ('app bar shows sender name and date; updates when name changes' , (tester) async {
372
+ prepareBoringImageHttpClient ();
373
+ final timestamp = DateTime .parse ("2024-07-23 23:12:24" ).millisecondsSinceEpoch ~ / 1000 ;
374
+ final sender = eg.user (fullName: 'Old name' );
375
+ final message = eg.streamMessage (sender: sender, timestamp: timestamp);
376
+ await setupPage (tester, message: message, thumbnailUrl: null , users: [sender]);
377
+ check (store.getUser (sender.userId)).isNotNull ();
378
+
379
+ checkAppBarNameAndDate (tester, 'Old name' , 'Jul 23, 2024 23:12:24' );
380
+
381
+ await store.handleEvent (RealmUserUpdateEvent (id: 1 ,
382
+ userId: sender.userId, fullName: 'New name' ));
383
+ await tester.pump ();
384
+ checkAppBarNameAndDate (tester, 'New name' , 'Jul 23, 2024 23:12:24' );
385
+
386
+ debugNetworkImageHttpClientProvider = null ;
387
+ });
388
+
389
+ testWidgets ('app bar shows sender name and date; unknown sender' , (tester) async {
390
+ prepareBoringImageHttpClient ();
391
+ final timestamp = DateTime .parse ("2024-07-23 23:12:24" ).millisecondsSinceEpoch ~ / 1000 ;
392
+ final sender = eg.user (fullName: 'Sender name' );
393
+ final message = eg.streamMessage (sender: sender, timestamp: timestamp);
394
+ await setupPage (tester, message: message, thumbnailUrl: null , users: []);
395
+ check (store.getUser (sender.userId)).isNull ();
396
+
397
+ checkAppBarNameAndDate (tester, 'Sender name' , 'Jul 23, 2024 23:12:24' );
368
398
369
399
debugNetworkImageHttpClientProvider = null ;
370
400
});
0 commit comments