Skip to content

Commit 50e487b

Browse files
committed
all_channels test: Test using toggle switch to subscribe/unsubscribe
1 parent 19f63cd commit 50e487b

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

test/widgets/all_channels_test.dart

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import 'dart:convert';
2+
13
import 'package:checks/checks.dart';
24
import 'package:flutter/material.dart';
35
import 'package:flutter_checks/flutter_checks.dart';
46
import 'package:flutter_test/flutter_test.dart';
7+
import 'package:http/http.dart' as http;
58
import 'package:zulip/api/model/model.dart';
69
import 'package:zulip/model/store.dart';
710
import 'package:zulip/widgets/all_channels.dart';
@@ -12,18 +15,21 @@ import 'package:zulip/widgets/icons.dart';
1215
import 'package:zulip/widgets/page.dart';
1316
import 'package:zulip/widgets/theme.dart';
1417

18+
import '../api/fake_api.dart';
1519
import '../api/model/model_checks.dart';
1620
import '../flutter_checks.dart';
1721
import '../model/binding.dart';
1822
import '../example_data.dart' as eg;
1923
import '../model/test_store.dart';
24+
import '../stdlib_checks.dart';
2025
import 'checks.dart';
2126
import 'test_app.dart';
2227

2328
void main() {
2429
TestZulipBinding.ensureInitialized();
2530

2631
late PerAccountStore store;
32+
late FakeApiConnection connection;
2733
late TransitionDurationObserver transitionDurationObserver;
2834

2935
final groupSettingWithSelf = eg.groupSetting(members: [eg.selfUser.userId]);
@@ -40,6 +46,7 @@ void main() {
4046
);
4147
await testBinding.globalStore.add(eg.selfAccount, initialSnapshot);
4248
store = await testBinding.globalStore.perAccount(eg.selfAccount.id);
49+
connection = store.connection as FakeApiConnection;
4350

4451
transitionDurationObserver = TransitionDurationObserver();
4552
await tester.pumpWidget(TestZulipApp(accountId: eg.selfAccount.id,
@@ -207,4 +214,28 @@ void main() {
207214

208215
check(find.byType(BottomSheet)).findsOne();
209216
});
217+
218+
testWidgets('use toggle switch to subscribe/unsubscribe', (tester) async {
219+
final channel = eg.stream();
220+
await setupAllChannelsPage(tester, channels: [channel]);
221+
222+
await tester.tap(find.byType(Toggle));
223+
check(connection.lastRequest).isA<http.Request>()
224+
..method.equals('POST')
225+
..url.path.equals('/api/v1/users/me/subscriptions')
226+
..bodyFields.deepEquals({
227+
'subscriptions': jsonEncode([{'name': channel.name}]),
228+
});
229+
230+
await store.addSubscription(eg.subscription(channel));
231+
await tester.pump(); // Toggle changes state
232+
233+
await tester.tap(find.byType(Toggle));
234+
check(connection.lastRequest).isA<http.Request>()
235+
..method.equals('DELETE')
236+
..url.path.equals('/api/v1/users/me/subscriptions')
237+
..bodyFields.deepEquals({
238+
'subscriptions': jsonEncode([channel.name]),
239+
});
240+
});
210241
}

0 commit comments

Comments
 (0)