diff --git a/packages/stream_chat/test/src/db/chat_persistence_client_test.dart b/packages/stream_chat/test/src/db/chat_persistence_client_test.dart new file mode 100644 index 00000000..0ab7695f --- /dev/null +++ b/packages/stream_chat/test/src/db/chat_persistence_client_test.dart @@ -0,0 +1,191 @@ +import 'package:stream_chat/src/core/api/requests.dart'; +import 'package:stream_chat/src/core/models/channel_model.dart'; +import 'package:stream_chat/src/core/models/channel_state.dart'; +import 'package:stream_chat/src/core/models/event.dart'; +import 'package:stream_chat/src/core/models/filter.dart'; +import 'package:stream_chat/src/core/models/member.dart'; +import 'package:stream_chat/src/core/models/message.dart'; +import 'package:stream_chat/src/core/models/reaction.dart'; +import 'package:stream_chat/src/core/models/read.dart'; +import 'package:stream_chat/src/core/models/user.dart'; +import 'package:stream_chat/src/db/chat_persistence_client.dart'; +import 'package:test/test.dart'; + +class TestPersistenceClient extends ChatPersistenceClient { + @override + Future connect(String userId) => throw UnimplementedError(); + + @override + Future deleteChannels(List cids) => throw UnimplementedError(); + + @override + Future deleteMembersByCids(List cids) => Future.value(); + + @override + Future deleteMessageByCids(List cids) => Future.value(); + + @override + Future deleteMessageByIds(List messageIds) => Future.value(); + + @override + Future deletePinnedMessageByCids(List cids) => Future.value(); + + @override + Future deletePinnedMessageByIds(List messageIds) => + Future.value(); + + @override + Future deleteReactionsByMessageId(List messageIds) => + Future.value(); + + @override + Future disconnect({bool flush = false}) => throw UnimplementedError(); + + @override + Future getChannelByCid(String cid) async => + ChannelModel(cid: cid); + + @override + Future> getChannelCids() => throw UnimplementedError(); + + @override + Future> getChannelStates( + {Filter? filter, + List>? sort, + PaginationParams? paginationParams}) => + throw UnimplementedError(); + + @override + Future>> getChannelThreads(String cid) => + throw UnimplementedError(); + + @override + Future getConnectionInfo() => throw UnimplementedError(); + + @override + Future getLastSyncAt() => throw UnimplementedError(); + + @override + Future> getMembersByCid(String cid) async => []; + + @override + Future> getMessagesByCid(String cid, + {PaginationParams? messagePagination}) async => + []; + + @override + Future> getPinnedMessagesByCid(String cid, + {PaginationParams? messagePagination}) async => + []; + + @override + Future> getReadsByCid(String cid) async => []; + + @override + Future> getReplies(String parentId, + {PaginationParams? options}) => + throw UnimplementedError(); + + @override + Future updateChannelQueries(Filter? filter, List cids, + {bool clearQueryCache = false}) => + throw UnimplementedError(); + + @override + Future updateChannels(List channels) => Future.value(); + + @override + Future updateConnectionInfo(Event event) => throw UnimplementedError(); + + @override + Future updateLastSyncAt(DateTime lastSyncAt) => + throw UnimplementedError(); + + @override + Future updateMembers(String cid, List members) => + Future.value(); + + @override + Future updateMessages(String cid, List messages) => + Future.value(); + + @override + Future updatePinnedMessages(String cid, List messages) => + Future.value(); + + @override + Future updateReactions(List reactions) => Future.value(); + + @override + Future updateReads(String cid, List reads) => Future.value(); + + @override + Future updateUsers(List users) => Future.value(); +} + +void main() { + group('chatPersistenceClient', () { + final persistenceClient = TestPersistenceClient(); + + test('deleteMessageById', () { + const messageId = 'message-id'; + persistenceClient.deleteMessageById(messageId); + }); + + test('deleteMessageByCid', () { + const messageId = 'message-id'; + persistenceClient.deleteMessageByCid(messageId); + }); + + test('deletePinnedMessageById', () { + const messageId = 'message-id'; + persistenceClient.deletePinnedMessageById(messageId); + }); + + test('deletePinnedMessageByCid', () { + const messageId = 'message-id'; + persistenceClient.deletePinnedMessageByCid(messageId); + }); + + test('getChannelStateByCid', () async { + const cid = 'test:cid'; + final channelState = await persistenceClient.getChannelStateByCid(cid); + expect(channelState, isNotNull); + }); + + test('updateChannelState', () async { + const cid = 'test:cid'; + final channelState = ChannelState(); + persistenceClient.updateChannelState(channelState); + }); + + test('updateChannelStates', () async { + const cid = 'test:cid'; + final user = User(id: 'test-user-id'); + final channelState = ChannelState( + channel: ChannelModel(cid: cid, createdBy: user), + messages: [ + Message( + id: 'test-message', + text: 'test-message', + user: user, + ownReactions: [Reaction(type: 'test', user: user)], + latestReactions: [Reaction(type: 'test', user: user)], + ) + ], + pinnedMessages: [ + Message( + id: 'test-message', + text: 'test-message', + user: user, + ownReactions: [Reaction(type: 'test', user: user)], + latestReactions: [Reaction(type: 'test', user: user)], + ) + ], + read: [Read(lastRead: DateTime.now(), user: user)], + members: [Member(user: user)], + ); + persistenceClient.updateChannelStates([channelState]); + }); + }); +}