@@ -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' ;
@@ -1419,6 +1420,8 @@ void main() {
1419
1420
final stream = eg.stream ();
1420
1421
const content = 'outbox message content' ;
1421
1422
1423
+ final topicInputFinder = find.byWidgetPredicate (
1424
+ (widget) => widget is TextField && widget.controller is ComposeTopicController );
1422
1425
final contentInputFinder = find.byWidgetPredicate (
1423
1426
(widget) => widget is TextField && widget.controller is ComposeContentController );
1424
1427
@@ -1469,7 +1472,32 @@ void main() {
1469
1472
localMessageId: store.outboxMessages.keys.single));
1470
1473
});
1471
1474
1472
- testWidgets ('failed to send message, retrieve the content to compose box' , (tester) async {
1475
+ testWidgets ('in channel narrow, failed to send message, retrieve both topic and content to compose box' , (tester) async {
1476
+ await setupMessageListPage (tester,
1477
+ narrow: ChannelNarrow (stream.streamId), streams: [stream],
1478
+ messages: []);
1479
+
1480
+ connection.prepare (json: GetStreamTopicsResult (topics: []).toJson ());
1481
+ await tester.enterText (topicInputFinder, 'test topic' );
1482
+ await sendMessageAndFail (tester);
1483
+
1484
+ final controller = tester.state <ComposeBoxState >(find.byType (ComposeBox )).controller;
1485
+ controller as StreamComposeBoxController ;
1486
+ await tester.enterText (topicInputFinder, 'different topic' );
1487
+ check (controller.content).text.isNotNull ().isEmpty ();
1488
+
1489
+ // Tap the message. This should put its content back into the compose box
1490
+ // and remove it.
1491
+ await tester.tap (outboxMessageFinder);
1492
+ await tester.pump ();
1493
+ check (outboxMessageFinder).findsNothing ();
1494
+ check (controller.topic).text.equals ('test topic' );
1495
+ check (controller.content).text.equals ('$content \n\n ' );
1496
+
1497
+ await tester.pump (kLocalEchoDebounceDuration);
1498
+ });
1499
+
1500
+ testWidgets ('in topic narrow, failed to send message, retrieve the content to compose box' , (tester) async {
1473
1501
await setupMessageListPage (tester,
1474
1502
narrow: eg.topicNarrow (stream.streamId, 'topic' ), streams: [stream],
1475
1503
messages: []);
0 commit comments