From d0abad3a3b697267539835efa58dce6cbd8aa3e3 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 26 Feb 2021 19:33:14 +0530 Subject: [PATCH] [LLC] Fix tests and minor refactoring Signed-off-by: Sahil Kumar --- packages/stream_chat/lib/src/client.dart | 34 ++++++++----------- .../stream_chat/test/src/client_test.dart | 17 ++++++---- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/packages/stream_chat/lib/src/client.dart b/packages/stream_chat/lib/src/client.dart index 782b7056..2c36f4f6 100644 --- a/packages/stream_chat/lib/src/client.dart +++ b/packages/stream_chat/lib/src/client.dart @@ -589,24 +589,6 @@ class StreamChatClient { bool preferOffline = false, bool waitForConnect = true, }) async* { - if (waitForConnect) { - if (_connectCompleter != null && !_connectCompleter.isCompleted) { - logger.info('awaiting connection completer'); - await _connectCompleter.future; - } - if (wsConnectionStatus != ConnectionStatus.connected) { - final errorMessage = - 'You cannot use queryChannels without an active connection. Please call `connectUser` to connect the client.'; - if (persistenceEnabled) { - logger.warning( - '$errorMessage\nTrying to retrieve channels from the offline storage.'); - preferOffline = true; - } else { - throw Exception(errorMessage); - } - } - } - final hash = base64.encode(utf8.encode( '$filter${_asMap(sort)}$options${paginationParams?.toJson()}$messageLimit$preferOffline', )); @@ -644,7 +626,21 @@ class StreamChatClient { Map options, int messageLimit, PaginationParams paginationParams = const PaginationParams(limit: 10), + bool waitForConnect = true, }) async { + if (waitForConnect) { + if (_connectCompleter != null && !_connectCompleter.isCompleted) { + logger.info('awaiting connection completer'); + await _connectCompleter.future; + } + if (wsConnectionStatus != ConnectionStatus.connected) { + throw Exception( + 'You cannot use queryChannels without an active connection.' + ' Please call `connectUser` to connect the client.', + ); + } + } + logger.info('Query channel start'); final defaultOptions = { 'state': true, @@ -683,7 +679,7 @@ class StreamChatClient { QueryChannelsResponse.fromJson, ); - if (res.channels?.isEmpty == true && (paginationParams?.offset ?? 0) == 0) { + if ((res.channels ?? []).isEmpty && (paginationParams?.offset ?? 0) == 0) { logger.warning('''We could not find any channel for this query. Please make sure to take a look at the Flutter tutorial: https://getstream.io/chat/flutter/tutorial If your application already has users and channels, you might need to adjust your query channel as explained in the docs https://getstream.io/chat/docs/query_channels/?language=dart'''); diff --git a/packages/stream_chat/test/src/client_test.dart b/packages/stream_chat/test/src/client_test.dart index b38185b5..1cdddbf0 100644 --- a/packages/stream_chat/test/src/client_test.dart +++ b/packages/stream_chat/test/src/client_test.dart @@ -10,6 +10,7 @@ import 'package:stream_chat/src/client.dart'; import 'package:stream_chat/src/exceptions.dart'; import 'package:stream_chat/src/models/message.dart'; import 'package:stream_chat/src/models/user.dart'; +import 'package:stream_chat/src/models/channel_model.dart'; import 'package:test/test.dart'; class MockDio extends Mock implements DioForNative {} @@ -86,7 +87,7 @@ void main() { }); }); - group('queryChannels', () { + group('queryChannelsOnline', () { test('should pass right default parameters', () async { final mockDio = MockDio(); @@ -106,13 +107,14 @@ void main() { "watch": true, "presence": false, "limit": 10, + "offset": 0, }), }; when(mockDio.get('/channels', queryParameters: queryParams)) .thenAnswer((_) async => Response(data: '{}', statusCode: 200)); - await client.queryChannels(waitForConnect: false); + await client.queryChannelsOnline(filter: null, waitForConnect: false); verify(mockDio.get('/channels', queryParameters: queryParams)) .called(1); @@ -134,7 +136,7 @@ void main() { "\$in": ["test"], }, }; - final sortOptions = []; + final sortOptions = >[]; final options = {"state": false, "watch": false, "presence": true}; final paginationParams = PaginationParams( limit: 10, @@ -152,10 +154,10 @@ void main() { when(mockDio.get('/channels', queryParameters: queryParams)) .thenAnswer((_) async { - return Response(data: '{}', statusCode: 200); + return Response(data: '{"channels":[]}', statusCode: 200); }); - await client.queryChannels( + await client.queryChannelsOnline( filter: queryFilter, sort: sortOptions, options: options, @@ -229,6 +231,7 @@ void main() { 'query': query, 'sort': sortOptions, 'limit': 10, + 'offset': 0, }), }; @@ -346,7 +349,7 @@ void main() { }; when(mockDio.get('/users', queryParameters: queryParams)) - .thenAnswer((_) async => Response(data: '{}', statusCode: 200)); + .thenAnswer((_) async => Response(data: '{"users":[]}', statusCode: 200)); await client.queryUsers(); @@ -382,7 +385,7 @@ void main() { when(mockDio.get('/users', queryParameters: queryParams)) .thenAnswer((_) async { - return Response(data: '{}', statusCode: 200); + return Response(data: '{"users":[]}', statusCode: 200); }); await client.queryUsers(