@@ -11,6 +11,7 @@ import 'package:zulip/api/model/events.dart';
1111import 'package:zulip/api/model/initial_snapshot.dart' ;
1212import 'package:zulip/api/model/model.dart' ;
1313import 'package:zulip/api/model/narrow.dart' ;
14+ import 'package:zulip/api/route/channels.dart' ;
1415import 'package:zulip/api/route/messages.dart' ;
1516import 'package:zulip/model/actions.dart' ;
1617import 'package:zulip/model/localizations.dart' ;
@@ -1422,6 +1423,8 @@ void main() {
14221423 final stream = eg.stream ();
14231424 const content = 'outbox message content' ;
14241425
1426+ final topicInputFinder = find.byWidgetPredicate (
1427+ (widget) => widget is TextField && widget.controller is ComposeTopicController );
14251428 final contentInputFinder = find.byWidgetPredicate (
14261429 (widget) => widget is TextField && widget.controller is ComposeContentController );
14271430
@@ -1472,7 +1475,32 @@ void main() {
14721475 localMessageId: store.outboxMessages.keys.single));
14731476 });
14741477
1475- testWidgets ('failed to send message, retrieve the content to compose box' , (tester) async {
1478+ testWidgets ('in channel narrow, failed to send message, retrieve both topic and content to compose box' , (tester) async {
1479+ await setupMessageListPage (tester,
1480+ narrow: ChannelNarrow (stream.streamId), streams: [stream],
1481+ messages: []);
1482+
1483+ connection.prepare (json: GetStreamTopicsResult (topics: []).toJson ());
1484+ await tester.enterText (topicInputFinder, 'test topic' );
1485+ await sendMessageAndFail (tester);
1486+
1487+ final controller = tester.state <ComposeBoxState >(find.byType (ComposeBox )).controller;
1488+ controller as StreamComposeBoxController ;
1489+ await tester.enterText (topicInputFinder, 'different topic' );
1490+ check (controller.content).text.isNotNull ().isEmpty ();
1491+
1492+ // Tap the message. This should put its content back into the compose box
1493+ // and remove it.
1494+ await tester.tap (outboxMessageFinder);
1495+ await tester.pump ();
1496+ check (outboxMessageFinder).findsNothing ();
1497+ check (controller.topic).text.equals ('test topic' );
1498+ check (controller.content).text.equals ('$content \n\n ' );
1499+
1500+ await tester.pump (kLocalEchoDebounceDuration);
1501+ });
1502+
1503+ testWidgets ('in topic narrow, failed to send message, retrieve the content to compose box' , (tester) async {
14761504 await setupMessageListPage (tester,
14771505 narrow: eg.topicNarrow (stream.streamId, 'topic' ), streams: [stream],
14781506 messages: []);
0 commit comments