@@ -1411,31 +1411,49 @@ void main() {
14111411 void checkComposeBox ({required bool isShown}) => checkComposeBoxIsShown (isShown,
14121412 bannerLabel: zulipLocalizations.errorBannerCannotPostInChannelLabel);
14131413
1414- final narrowTestCases = [
1415- ('channel' , const ChannelNarrow (1 )),
1416- ('topic' , eg.topicNarrow (1 , 'topic' )),
1417- ];
1418-
1419- for (final (String narrowType, Narrow narrow) in narrowTestCases) {
1420- testWidgets ('compose box is shown in $narrowType narrow' , (tester) async {
1414+ const channelNarrow = ChannelNarrow (1 );
1415+ final topicNarrow = eg.topicNarrow (1 , 'topic' );
1416+
1417+ void testComposeBoxShown ({
1418+ required Narrow narrow,
1419+ required bool canSend,
1420+ required bool expected,
1421+ }) {
1422+ final description = [
1423+ narrow.toString (),
1424+ 'can send?: $canSend ' ,
1425+ ].join (', ' );
1426+ testWidgets (description, (tester) async {
14211427 await prepareComposeBox (tester,
14221428 narrow: narrow,
1423- selfUser: eg.user (role: UserRole .administrator),
1429+ selfUser: eg.user (
1430+ role: canSend ? UserRole .administrator : UserRole .member),
14241431 subscriptions: [eg.subscription (eg.stream (streamId: 1 ,
14251432 channelPostPolicy: ChannelPostPolicy .moderators))]);
1426- checkComposeBox (isShown: true );
1427- });
1428-
1429- testWidgets ('error banner is shown in $narrowType narrow' , (tester) async {
1430- await prepareComposeBox (tester,
1431- narrow: narrow,
1432- selfUser: eg.user (role: UserRole .moderator),
1433- subscriptions: [eg.subscription (eg.stream (streamId: 1 ,
1434- channelPostPolicy: ChannelPostPolicy .administrators))]);
1435- checkComposeBox (isShown: false );
1433+ checkComposeBox (isShown: expected);
14361434 });
14371435 }
14381436
1437+ testComposeBoxShown (
1438+ narrow: channelNarrow,
1439+ canSend: true ,
1440+ expected: true );
1441+
1442+ testComposeBoxShown (
1443+ narrow: topicNarrow,
1444+ canSend: true ,
1445+ expected: true );
1446+
1447+ testComposeBoxShown (
1448+ narrow: channelNarrow,
1449+ canSend: false ,
1450+ expected: false );
1451+
1452+ testComposeBoxShown (
1453+ narrow: topicNarrow,
1454+ canSend: false ,
1455+ expected: false );
1456+
14391457 testWidgets ('user loses privilege -> compose box is replaced with the banner' , (tester) async {
14401458 final selfUser = eg.user (role: UserRole .administrator);
14411459 await prepareComposeBox (tester,
0 commit comments