add initialized channel tests

Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
Sahil Kumar
2021-06-09 21:01:35 +05:30
parent 89f989003d
commit e2529231fd
9 changed files with 2019 additions and 28 deletions
File diff suppressed because it is too large Load Diff
+21
View File
@@ -82,3 +82,24 @@ class FakeChatApi extends Fake implements StreamChatApi {
AttachmentFileUploader get fileUploader =>
_fileUploader ??= MockAttachmentFileUploader();
}
class FakeClientState extends Fake implements ClientState {
@override
OwnUser? get user => OwnUser(id: 'test-user-id');
var _totalUnreadCount = 0;
@override
int? get totalUnreadCount => _totalUnreadCount;
@override
set totalUnreadCount(int? unreadCount) {
_totalUnreadCount += unreadCount ?? 0;
}
}
class FakeMessage extends Fake implements Message {}
class FakeAttachmentFile extends Fake implements AttachmentFile {}
class FakeEvent extends Fake implements Event {}
@@ -1,4 +1,7 @@
import 'package:collection/collection.dart';
import 'package:dio/dio.dart' show MultipartFile;
import 'package:stream_chat/src/core/models/event.dart';
import 'package:stream_chat/src/core/models/message.dart';
import 'package:test/test.dart';
Matcher isSameMultipartFileAs(MultipartFile targetFile) =>
@@ -17,3 +20,72 @@ class _IsSameMultipartFileAs extends Matcher {
bool matches(covariant MultipartFile file, Map matchState) =>
file.length == targetFile.length;
}
Matcher isSameEventAs(Event targetEvent) =>
_IsSameEventAs(targetEvent: targetEvent);
class _IsSameEventAs extends Matcher {
const _IsSameEventAs({required this.targetEvent});
final Event targetEvent;
@override
Description describe(Description description) =>
description.add('is same event as $targetEvent');
@override
bool matches(covariant Event event, Map matchState) =>
event.type == targetEvent.type;
}
Matcher isSameMessageAs(
Message targetMessage, {
bool matchReactions = false,
bool matchSendingStatus = false,
}) =>
_IsSameMessageAs(
targetMessage: targetMessage,
matchReactions: matchReactions,
matchSendingStatus: matchSendingStatus,
);
class _IsSameMessageAs extends Matcher {
const _IsSameMessageAs({
required this.targetMessage,
this.matchReactions = false,
this.matchSendingStatus = false,
});
final Message targetMessage;
final bool matchReactions;
final bool matchSendingStatus;
@override
Description describe(Description description) =>
description.add('is same message as $targetMessage');
@override
bool matches(covariant Message message, Map matchState) {
var matches = message.id == targetMessage.id;
if (matchSendingStatus) {
matches &= message.status == targetMessage.status;
}
if (matchReactions) {
matches &= const ListEquality().equals(
message.ownReactions
?.map((it) => '${it.type}-${it.messageId}')
.toList(),
targetMessage.ownReactions
?.map((it) => '${it.type}-${it.messageId}')
.toList());
matches &= const ListEquality().equals(
message.latestReactions
?.map((it) => '${it.type}-${it.messageId}')
.toList(),
targetMessage.latestReactions
?.map((it) => '${it.type}-${it.messageId}')
.toList());
}
return matches;
}
}
+27
View File
@@ -1,6 +1,7 @@
import 'package:dio/dio.dart';
import 'package:logging/logging.dart';
import 'package:mocktail/mocktail.dart';
import 'package:stream_chat/src/client/client.dart';
import 'package:stream_chat/src/core/api/attachment_file_uploader.dart';
import 'package:stream_chat/src/core/api/channel_api.dart';
import 'package:stream_chat/src/core/api/device_api.dart';
@@ -12,8 +13,13 @@ import 'package:stream_chat/src/core/api/user_api.dart';
import 'package:stream_chat/src/core/http/connection_id_manager.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/http/token_manager.dart';
import 'package:stream_chat/src/core/models/channel_config.dart';
import 'package:stream_chat/src/core/models/channel_model.dart';
import 'package:stream_chat/src/db/chat_persistence_client.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
import 'db/chat_persistence_client_test.dart';
class MockWebSocketChannel extends Mock implements WebSocketChannel {}
class MockWebSocketSink extends Mock implements WebSocketSink {}
@@ -57,3 +63,24 @@ class MockGeneralApi extends Mock implements GeneralApi {}
class MockAttachmentFileUploader extends Mock
implements AttachmentFileUploader {}
class MockPersistenceClient extends Mock implements ChatPersistenceClient {}
class MockStreamChatClient extends Mock implements StreamChatClient {
@override
bool get persistenceEnabled => false;
}
class MockStreamChatClientWithPersistence extends Mock
implements StreamChatClient {
ChatPersistenceClient? _persistenceClient;
@override
ChatPersistenceClient get chatPersistenceClient =>
_persistenceClient ??= MockPersistenceClient();
@override
bool get persistenceEnabled => true;
}
class MockChannelConfig extends Mock implements ChannelConfig {}