@@ -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' ;
@@ -1460,6 +1461,8 @@ void main() {
1460
1461
final stream = eg.stream ();
1461
1462
const content = 'outbox message content' ;
1462
1463
1464
+ final topicInputFinder = find.byWidgetPredicate (
1465
+ (widget) => widget is TextField && widget.controller is ComposeTopicController );
1463
1466
final contentInputFinder = find.byWidgetPredicate (
1464
1467
(widget) => widget is TextField && widget.controller is ComposeContentController );
1465
1468
@@ -1510,7 +1513,32 @@ void main() {
1510
1513
localMessageId: store.outboxMessages.keys.single));
1511
1514
});
1512
1515
1513
- testWidgets ('failed to send message, retrieve the content to compose box' , (tester) async {
1516
+ testWidgets ('in channel narrow, failed to send message, retrieve both topic and content to compose box' , (tester) async {
1517
+ await setupMessageListPage (tester,
1518
+ narrow: ChannelNarrow (stream.streamId), streams: [stream],
1519
+ messages: []);
1520
+
1521
+ connection.prepare (json: GetStreamTopicsResult (topics: []).toJson ());
1522
+ await tester.enterText (topicInputFinder, 'test topic' );
1523
+ await sendMessageAndFail (tester);
1524
+
1525
+ final controller = tester.state <ComposeBoxState >(find.byType (ComposeBox )).controller;
1526
+ controller as StreamComposeBoxController ;
1527
+ await tester.enterText (topicInputFinder, 'different topic' );
1528
+ check (controller.content).text.isNotNull ().isEmpty ();
1529
+
1530
+ // Tap the message. This should put its content back into the compose box
1531
+ // and remove it.
1532
+ await tester.tap (outboxMessageFinder);
1533
+ await tester.pump ();
1534
+ check (outboxMessageFinder).findsNothing ();
1535
+ check (controller.topic).text.equals ('test topic' );
1536
+ check (controller.content).text.equals ('$content \n\n ' );
1537
+
1538
+ await tester.pump (kLocalEchoDebounceDuration);
1539
+ });
1540
+
1541
+ testWidgets ('in topic narrow, failed to send message, retrieve the content to compose box' , (tester) async {
1514
1542
await setupMessageListPage (tester,
1515
1543
narrow: eg.topicNarrow (stream.streamId, 'topic' ), streams: [stream],
1516
1544
messages: []);
0 commit comments