[LLC] Fix tests and minor refactoring

Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
Sahil Kumar
2021-02-26 19:33:14 +05:30
parent 4368327139
commit d0abad3a3b
2 changed files with 25 additions and 26 deletions
+15 -19
View File
@@ -589,24 +589,6 @@ class StreamChatClient {
bool preferOffline = false, bool preferOffline = false,
bool waitForConnect = true, bool waitForConnect = true,
}) async* { }) 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( final hash = base64.encode(utf8.encode(
'$filter${_asMap(sort)}$options${paginationParams?.toJson()}$messageLimit$preferOffline', '$filter${_asMap(sort)}$options${paginationParams?.toJson()}$messageLimit$preferOffline',
)); ));
@@ -644,7 +626,21 @@ class StreamChatClient {
Map<String, dynamic> options, Map<String, dynamic> options,
int messageLimit, int messageLimit,
PaginationParams paginationParams = const PaginationParams(limit: 10), PaginationParams paginationParams = const PaginationParams(limit: 10),
bool waitForConnect = true,
}) async { }) 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'); logger.info('Query channel start');
final defaultOptions = { final defaultOptions = {
'state': true, 'state': true,
@@ -683,7 +679,7 @@ class StreamChatClient {
QueryChannelsResponse.fromJson, 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. 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 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'''); 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''');
+10 -7
View File
@@ -10,6 +10,7 @@ import 'package:stream_chat/src/client.dart';
import 'package:stream_chat/src/exceptions.dart'; import 'package:stream_chat/src/exceptions.dart';
import 'package:stream_chat/src/models/message.dart'; import 'package:stream_chat/src/models/message.dart';
import 'package:stream_chat/src/models/user.dart'; import 'package:stream_chat/src/models/user.dart';
import 'package:stream_chat/src/models/channel_model.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
class MockDio extends Mock implements DioForNative {} class MockDio extends Mock implements DioForNative {}
@@ -86,7 +87,7 @@ void main() {
}); });
}); });
group('queryChannels', () { group('queryChannelsOnline', () {
test('should pass right default parameters', () async { test('should pass right default parameters', () async {
final mockDio = MockDio(); final mockDio = MockDio();
@@ -106,13 +107,14 @@ void main() {
"watch": true, "watch": true,
"presence": false, "presence": false,
"limit": 10, "limit": 10,
"offset": 0,
}), }),
}; };
when(mockDio.get<String>('/channels', queryParameters: queryParams)) when(mockDio.get<String>('/channels', queryParameters: queryParams))
.thenAnswer((_) async => Response(data: '{}', statusCode: 200)); .thenAnswer((_) async => Response(data: '{}', statusCode: 200));
await client.queryChannels(waitForConnect: false); await client.queryChannelsOnline(filter: null, waitForConnect: false);
verify(mockDio.get<String>('/channels', queryParameters: queryParams)) verify(mockDio.get<String>('/channels', queryParameters: queryParams))
.called(1); .called(1);
@@ -134,7 +136,7 @@ void main() {
"\$in": ["test"], "\$in": ["test"],
}, },
}; };
final sortOptions = <SortOption>[]; final sortOptions = <SortOption<ChannelModel>>[];
final options = {"state": false, "watch": false, "presence": true}; final options = {"state": false, "watch": false, "presence": true};
final paginationParams = PaginationParams( final paginationParams = PaginationParams(
limit: 10, limit: 10,
@@ -152,10 +154,10 @@ void main() {
when(mockDio.get<String>('/channels', queryParameters: queryParams)) when(mockDio.get<String>('/channels', queryParameters: queryParams))
.thenAnswer((_) async { .thenAnswer((_) async {
return Response(data: '{}', statusCode: 200); return Response(data: '{"channels":[]}', statusCode: 200);
}); });
await client.queryChannels( await client.queryChannelsOnline(
filter: queryFilter, filter: queryFilter,
sort: sortOptions, sort: sortOptions,
options: options, options: options,
@@ -229,6 +231,7 @@ void main() {
'query': query, 'query': query,
'sort': sortOptions, 'sort': sortOptions,
'limit': 10, 'limit': 10,
'offset': 0,
}), }),
}; };
@@ -346,7 +349,7 @@ void main() {
}; };
when(mockDio.get<String>('/users', queryParameters: queryParams)) when(mockDio.get<String>('/users', queryParameters: queryParams))
.thenAnswer((_) async => Response(data: '{}', statusCode: 200)); .thenAnswer((_) async => Response(data: '{"users":[]}', statusCode: 200));
await client.queryUsers(); await client.queryUsers();
@@ -382,7 +385,7 @@ void main() {
when(mockDio.get<String>('/users', queryParameters: queryParams)) when(mockDio.get<String>('/users', queryParameters: queryParams))
.thenAnswer((_) async { .thenAnswer((_) async {
return Response(data: '{}', statusCode: 200); return Response(data: '{"users":[]}', statusCode: 200);
}); });
await client.queryUsers( await client.queryUsers(