@@ -8,6 +8,7 @@ import 'package:flutter_checks/flutter_checks.dart';
88import 'package:flutter_test/flutter_test.dart' ;
99import 'package:url_launcher/url_launcher.dart' ;
1010import 'package:zulip/api/core.dart' ;
11+ import 'package:zulip/api/model/model.dart' ;
1112import 'package:zulip/model/content.dart' ;
1213import 'package:zulip/model/narrow.dart' ;
1314import 'package:zulip/model/settings.dart' ;
@@ -139,9 +140,16 @@ void main() {
139140 Future <void > prepareContent (WidgetTester tester, Widget child, {
140141 List <NavigatorObserver > navObservers = const [],
141142 bool wrapWithPerAccountStoreWidget = false ,
143+ TwentyFourHourTimeMode ? twentyFourHourTimeMode
142144 }) async {
143145 if (wrapWithPerAccountStoreWidget) {
144- await testBinding.globalStore.add (eg.selfAccount, eg.initialSnapshot ());
146+ final initialSnapshot = eg.initialSnapshot ();
147+ if (twentyFourHourTimeMode != null ) {
148+ initialSnapshot.userSettings.twentyFourHourTime = twentyFourHourTimeMode;
149+ }
150+ await testBinding.globalStore.add (eg.selfAccount, initialSnapshot);
151+ } else {
152+ assert (twentyFourHourTimeMode == null );
145153 }
146154
147155 addTearDown (testBinding.reset);
@@ -1102,11 +1110,45 @@ void main() {
11021110 // the timezone of the environment running these tests. Accept here a wide
11031111 // range of times. See comments in "show dates" test in
11041112 // `test/widgets/message_list_test.dart`.
1105- final renderedTextRegexp = RegExp (r'^(Tue, Jan 30|Wed, Jan 31), 2024, \d+:\d\d [AP]M$' );
1113+ final renderedTextRegexp = RegExp (r'^(Tue, Jan 30|Wed, Jan 31), 2024, \d+:\d\d(?: [AP]M)?$' );
1114+ final renderedTextRegexpTwelveHour = RegExp (r'^(Tue, Jan 30|Wed, Jan 31), 2024, \d+:\d\d [AP]M$' );
1115+ final renderedTextRegexpTwentyFourHour = RegExp (r'^(Tue, Jan 30|Wed, Jan 31), 2024, \d+:\d\d$' );
11061116
11071117 testWidgets ('smoke' , (tester) async {
1108- await prepareContent (tester, plainContent ('<p>$timeSpanHtml </p>' ));
1118+ await prepareContent (tester,
1119+ wrapWithPerAccountStoreWidget: false ,
1120+ plainContent ('<p>$timeSpanHtml </p>' ));
11091121 tester.widget (find.textContaining (renderedTextRegexp));
1122+
1123+ // TODO(#1727) test with different locales
1124+ tester.widget (find.textContaining (renderedTextRegexpTwelveHour));
1125+ });
1126+
1127+ testWidgets ('TwentyFourHourTimeMode.twelveHour' , (tester) async {
1128+ await prepareContent (tester,
1129+ wrapWithPerAccountStoreWidget: true ,
1130+ twentyFourHourTimeMode: TwentyFourHourTimeMode .twelveHour,
1131+ plainContent ('<p>$timeSpanHtml </p>' ));
1132+ check (find.textContaining (renderedTextRegexpTwelveHour)).findsOne ();
1133+ });
1134+
1135+ testWidgets ('TwentyFourHourTimeMode.twentyFourHour' , (tester) async {
1136+ await prepareContent (tester,
1137+ wrapWithPerAccountStoreWidget: true ,
1138+ twentyFourHourTimeMode: TwentyFourHourTimeMode .twentyFourHour,
1139+ plainContent ('<p>$timeSpanHtml </p>' ));
1140+ check (find.textContaining (renderedTextRegexpTwentyFourHour)).findsOne ();
1141+ });
1142+
1143+ testWidgets ('TwentyFourHourTimeMode.localeDefault' , (tester) async {
1144+ await prepareContent (tester,
1145+ wrapWithPerAccountStoreWidget: true ,
1146+ twentyFourHourTimeMode: TwentyFourHourTimeMode .localeDefault,
1147+ plainContent ('<p>$timeSpanHtml </p>' ));
1148+ tester.widget (find.textContaining (renderedTextRegexp));
1149+
1150+ // TODO(#1727) test with different locales
1151+ check (find.textContaining (renderedTextRegexpTwelveHour)).findsOne ();
11101152 });
11111153
11121154 void testIconAndTextSameColor (String description, String html) {
0 commit comments