test(persistence): add tests for channel mapper
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -0,0 +1,111 @@
|
|||||||
|
import 'dart:math' as math;
|
||||||
|
|
||||||
|
import 'package:test/test.dart';
|
||||||
|
import 'package:stream_chat/stream_chat.dart';
|
||||||
|
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
||||||
|
import 'package:stream_chat_persistence/src/mapper/channel_mapper.dart';
|
||||||
|
import '../utils/date_matcher.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
group('ChannelEntity', () {
|
||||||
|
final user = User(id: 'testUserId');
|
||||||
|
final entity = ChannelEntity(
|
||||||
|
id: 'testId',
|
||||||
|
type: 'testType',
|
||||||
|
cid: 'testCid',
|
||||||
|
config: {'max_message_length': 33},
|
||||||
|
frozen: math.Random().nextBool(),
|
||||||
|
lastMessageAt: DateTime.now(),
|
||||||
|
createdAt: DateTime.now(),
|
||||||
|
updatedAt: DateTime.now(),
|
||||||
|
deletedAt: DateTime.now(),
|
||||||
|
memberCount: 33,
|
||||||
|
createdById: user.id,
|
||||||
|
extraData: {'test_extra_data': 'testData'},
|
||||||
|
);
|
||||||
|
|
||||||
|
test('toChannelModel should map entity into ChannelModel', () {
|
||||||
|
final channelModel = entity.toChannelModel(createdBy: user);
|
||||||
|
expect(channelModel, isA<ChannelModel>());
|
||||||
|
expect(channelModel.id, entity.id);
|
||||||
|
expect(channelModel.config.toJson()['max_message_length'], 33);
|
||||||
|
expect(channelModel.frozen, entity.frozen);
|
||||||
|
expect(channelModel.createdAt, isSameDateAs(entity.createdAt));
|
||||||
|
expect(channelModel.updatedAt, isSameDateAs(entity.updatedAt));
|
||||||
|
expect(channelModel.memberCount, entity.memberCount);
|
||||||
|
expect(channelModel.cid, entity.cid);
|
||||||
|
expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt));
|
||||||
|
expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt));
|
||||||
|
expect(channelModel.extraData, entity.extraData);
|
||||||
|
expect(channelModel.createdBy.id, entity.createdById);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('toChannelState should map entity into ChannelState ', () {
|
||||||
|
final members = List.generate(3, (index) => Member());
|
||||||
|
final reads = List.generate(3, (index) => Read());
|
||||||
|
final messages = List.generate(3, (index) => Message());
|
||||||
|
|
||||||
|
final channelState = entity.toChannelState(
|
||||||
|
createdBy: user,
|
||||||
|
members: members,
|
||||||
|
reads: reads,
|
||||||
|
messages: messages,
|
||||||
|
pinnedMessages: messages,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(channelState, isA<ChannelState>());
|
||||||
|
expect(channelState.members.length, members.length);
|
||||||
|
expect(channelState.read.length, reads.length);
|
||||||
|
expect(channelState.messages.length, messages.length);
|
||||||
|
expect(channelState.pinnedMessages.length, messages.length);
|
||||||
|
|
||||||
|
final channelModel = channelState.channel;
|
||||||
|
expect(channelModel.id, entity.id);
|
||||||
|
expect(channelModel.config.toJson()['max_message_length'], 33);
|
||||||
|
expect(channelModel.frozen, entity.frozen);
|
||||||
|
expect(channelModel.createdAt, isSameDateAs(entity.createdAt));
|
||||||
|
expect(channelModel.updatedAt, isSameDateAs(entity.updatedAt));
|
||||||
|
expect(channelModel.memberCount, entity.memberCount);
|
||||||
|
expect(channelModel.cid, entity.cid);
|
||||||
|
expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt));
|
||||||
|
expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt));
|
||||||
|
expect(channelModel.extraData, entity.extraData);
|
||||||
|
expect(channelModel.createdBy.id, entity.createdById);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('toEntity should map model into ChannelEntity', () {
|
||||||
|
final createdBy = User(id: 'testUserId');
|
||||||
|
final model = ChannelModel(
|
||||||
|
id: 'testId',
|
||||||
|
type: 'testType',
|
||||||
|
cid: 'testCid',
|
||||||
|
config: ChannelConfig(maxMessageLength: 33),
|
||||||
|
frozen: math.Random().nextBool(),
|
||||||
|
lastMessageAt: DateTime.now(),
|
||||||
|
createdAt: DateTime.now(),
|
||||||
|
updatedAt: DateTime.now(),
|
||||||
|
deletedAt: DateTime.now(),
|
||||||
|
memberCount: 33,
|
||||||
|
createdBy: createdBy,
|
||||||
|
extraData: {'test_extra_data': 'testData'},
|
||||||
|
);
|
||||||
|
|
||||||
|
final channelEntity = model.toEntity();
|
||||||
|
expect(channelEntity, isA<ChannelEntity>());
|
||||||
|
expect(channelEntity.id, model.id);
|
||||||
|
expect(
|
||||||
|
channelEntity.config['max_message_length'],
|
||||||
|
model.config.maxMessageLength,
|
||||||
|
);
|
||||||
|
expect(channelEntity.frozen, model.frozen);
|
||||||
|
expect(channelEntity.createdAt, isSameDateAs(model.createdAt));
|
||||||
|
expect(channelEntity.updatedAt, isSameDateAs(model.updatedAt));
|
||||||
|
expect(channelEntity.memberCount, model.memberCount);
|
||||||
|
expect(channelEntity.cid, model.cid);
|
||||||
|
expect(channelEntity.lastMessageAt, isSameDateAs(model.lastMessageAt));
|
||||||
|
expect(channelEntity.deletedAt, isSameDateAs(model.deletedAt));
|
||||||
|
expect(channelEntity.extraData, model.extraData);
|
||||||
|
expect(channelEntity.createdById, model.createdBy.id);
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user