@@ -11,6 +11,7 @@ import 'package:zulip/api/model/events.dart';
11
11
import 'package:zulip/api/model/initial_snapshot.dart' ;
12
12
import 'package:zulip/api/model/model.dart' ;
13
13
import 'package:zulip/api/model/narrow.dart' ;
14
+ import 'package:zulip/api/route/channels.dart' ;
14
15
import 'package:zulip/api/route/messages.dart' ;
15
16
import 'package:zulip/model/actions.dart' ;
16
17
import 'package:zulip/model/localizations.dart' ;
@@ -1359,6 +1360,8 @@ void main() {
1359
1360
final stream = eg.stream ();
1360
1361
const content = 'outbox message content' ;
1361
1362
1363
+ final topicInputFinder = find.byWidgetPredicate (
1364
+ (widget) => widget is TextField && widget.controller is ComposeTopicController );
1362
1365
final contentInputFinder = find.byWidgetPredicate (
1363
1366
(widget) => widget is TextField && widget.controller is ComposeContentController );
1364
1367
@@ -1409,7 +1412,32 @@ void main() {
1409
1412
localMessageId: store.outboxMessages.keys.single));
1410
1413
});
1411
1414
1412
- testWidgets ('failed to send message, retrieve the content to compose box' , (tester) async {
1415
+ testWidgets ('in channel narrow, failed to send message, retrieve both topic and content to compose box' , (tester) async {
1416
+ await setupMessageListPage (tester,
1417
+ narrow: ChannelNarrow (stream.streamId), streams: [stream],
1418
+ messages: []);
1419
+
1420
+ connection.prepare (json: GetStreamTopicsResult (topics: []).toJson ());
1421
+ await tester.enterText (topicInputFinder, 'test topic' );
1422
+ await sendMessageAndFail (tester);
1423
+
1424
+ final controller = tester.state <ComposeBoxState >(find.byType (ComposeBox )).controller;
1425
+ controller as StreamComposeBoxController ;
1426
+ await tester.enterText (topicInputFinder, 'different topic' );
1427
+ check (controller.content).text.isNotNull ().isEmpty ();
1428
+
1429
+ // Tap the message. This should put its content back into the compose box
1430
+ // and remove it.
1431
+ await tester.tap (outboxMessageFinder);
1432
+ await tester.pump ();
1433
+ check (outboxMessageFinder).findsNothing ();
1434
+ check (controller.topic).text.equals ('test topic' );
1435
+ check (controller.content).text.equals ('$content \n\n ' );
1436
+
1437
+ await tester.pump (kLocalEchoDebounceDuration);
1438
+ });
1439
+
1440
+ testWidgets ('in topic narrow, failed to send message, retrieve the content to compose box' , (tester) async {
1413
1441
await setupMessageListPage (tester,
1414
1442
narrow: eg.topicNarrow (stream.streamId, 'topic' ), streams: [stream],
1415
1443
messages: []);
0 commit comments