fix: tests

Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
Sahil Kumar
2021-07-16 13:35:51 +05:30
committed by xsahil03x
parent c2563c9d5f
commit d2402ba3d0
5 changed files with 94 additions and 94 deletions
@@ -166,15 +166,17 @@ class ChannelImage extends StatelessWidget {
// 1-1 Conversation // 1-1 Conversation
if (otherMembers.length == 1) { if (otherMembers.length == 1) {
final member = otherMembers.first; final member = otherMembers.first;
final user = member.user!; return BetterStreamBuilder<Member>(
return BetterStreamBuilder<User>( stream: channel.state!.membersStream.map(
stream: streamChat.client.state.usersStream (members) => members.firstWhere(
.map((users) => users[member.userId ?? user.id] ?? user) (it) => it.userId == member.userId,
.distinct(), orElse: () => member,
initialData: user, ),
builder: (context, user) => UserAvatar( ),
initialData: member,
builder: (context, member) => UserAvatar(
borderRadius: borderRadius ?? previewTheme?.borderRadius, borderRadius: borderRadius ?? previewTheme?.borderRadius,
user: user, user: member.user!,
constraints: constraints ?? previewTheme?.constraints, constraints: constraints ?? previewTheme?.constraints,
onTap: onTap != null ? (_) => onTap!() : null, onTap: onTap != null ? (_) => onTap!() : null,
selected: selected, selected: selected,
@@ -38,7 +38,6 @@ class GroupImage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final streamChat = StreamChat.of(context);
final channel = StreamChannel.of(context).channel; final channel = StreamChannel.of(context).channel;
assert(channel.state != null, 'Channel ${channel.id} is not initialized'); assert(channel.state != null, 'Channel ${channel.id} is not initialized');
@@ -63,30 +62,34 @@ class GroupImage extends StatelessWidget {
child: Flex( child: Flex(
direction: Axis.horizontal, direction: Axis.horizontal,
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: members.take(2).map((member) { children: members
final user = member.user!; .take(2)
return Flexible( .map(
fit: FlexFit.tight, (member) => Flexible(
child: FittedBox( fit: FlexFit.tight,
fit: BoxFit.cover, child: FittedBox(
clipBehavior: Clip.antiAlias, fit: BoxFit.cover,
child: Transform.scale( clipBehavior: Clip.antiAlias,
scale: 1.2, child: Transform.scale(
child: BetterStreamBuilder<User>( scale: 1.2,
stream: streamChat.client.state.usersStream child: BetterStreamBuilder<Member>(
.map((users) => stream: channel.state!.membersStream.map(
users[member.userId ?? user.id] ?? user) (members) => members.firstWhere(
.distinct(), (it) => it.userId == member.userId,
initialData: user, orElse: () => member,
builder: (context, user) => UserAvatar( ),
user: user, ),
borderRadius: BorderRadius.zero, initialData: member,
builder: (context, member) => UserAvatar(
user: member.user!,
borderRadius: BorderRadius.zero,
),
),
), ),
), ),
), ),
), )
); .toList(),
}).toList(),
), ),
), ),
if (members.length > 2) if (members.length > 2)
@@ -95,30 +98,35 @@ class GroupImage extends StatelessWidget {
child: Flex( child: Flex(
direction: Axis.horizontal, direction: Axis.horizontal,
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: members.skip(2).take(2).map((member) { children: members
final user = member.user!; .skip(2)
return Flexible( .take(2)
fit: FlexFit.tight, .map(
child: FittedBox( (member) => Flexible(
fit: BoxFit.cover, fit: FlexFit.tight,
clipBehavior: Clip.antiAlias, child: FittedBox(
child: Transform.scale( fit: BoxFit.cover,
scale: 1.2, clipBehavior: Clip.antiAlias,
child: BetterStreamBuilder<User>( child: Transform.scale(
stream: streamChat.client.state.usersStream scale: 1.2,
.map((users) => child: BetterStreamBuilder<Member>(
users[member.userId ?? user.id] ?? user) stream: channel.state!.membersStream.map(
.distinct(), (members) => members.firstWhere(
initialData: user, (it) => it.userId == member.userId,
builder: (context, user) => UserAvatar( orElse: () => member,
user: user, ),
borderRadius: BorderRadius.zero, ),
initialData: member,
builder: (context, member) => UserAvatar(
user: member.user!,
borderRadius: BorderRadius.zero,
),
),
), ),
), ),
), ),
), )
); .toList(),
}).toList(),
), ),
), ),
], ],
@@ -14,10 +14,12 @@ void main() {
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel(); final channel = MockChannel();
final channelState = MockChannelState(); final channelState = MockChannelState();
final user = OwnUser(id: 'user-id');
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00'); final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt); when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState); when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client); when(() => channel.client).thenReturn(client);
@@ -76,10 +78,12 @@ void main() {
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel(); final channel = MockChannel();
final channelState = MockChannelState(); final channelState = MockChannelState();
final user = OwnUser(id: 'user-id');
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00'); final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt); when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState); when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client); when(() => channel.client).thenReturn(client);
@@ -141,10 +145,12 @@ void main() {
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel(); final channel = MockChannel();
final channelState = MockChannelState(); final channelState = MockChannelState();
final user = OwnUser(id: 'user-id');
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00'); final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt); when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState); when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client); when(() => channel.client).thenReturn(client);
@@ -207,10 +213,12 @@ void main() {
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel(); final channel = MockChannel();
final channelState = MockChannelState(); final channelState = MockChannelState();
final user = OwnUser(id: 'user-id');
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00'); final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt); when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState); when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client); when(() => channel.client).thenReturn(client);
@@ -281,10 +289,12 @@ void main() {
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel(); final channel = MockChannel();
final channelState = MockChannelState(); final channelState = MockChannelState();
final user = OwnUser(id: 'user-id');
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00'); final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt); when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState); when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client); when(() => channel.client).thenReturn(client);
@@ -346,10 +356,12 @@ void main() {
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel(); final channel = MockChannel();
final channelState = MockChannelState(); final channelState = MockChannelState();
final user = OwnUser(id: 'user-id');
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00'); final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt); when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState); when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client); when(() => channel.client).thenReturn(client);
@@ -132,9 +132,10 @@ void main() {
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel(); final channel = MockChannel();
final channelState = MockChannelState(); final channelState = MockChannelState();
final currentUser = OwnUser(id: 'user-id');
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.user).thenReturn(currentUser);
when(() => channel.state).thenReturn(channelState); when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client); when(() => channel.client).thenReturn(client);
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({ when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
@@ -143,36 +144,7 @@ void main() {
when(() => channel.extraData).thenReturn({ when(() => channel.extraData).thenReturn({
'name': 'test', 'name': 'test',
}); });
when(() => channelState.membersStream).thenAnswer((i) => Stream.value([ final members = [
Member(
userId: 'user-id',
user: User(
id: 'user-id',
extraData: {
'image': 'testimage1',
},
),
),
Member(
userId: 'user-id2',
user: User(
id: 'user-id2',
extraData: {
'image': 'testimage2',
},
),
),
Member(
userId: 'user-id3',
user: User(
id: 'user-id3',
extraData: {
'image': 'testimage3',
},
),
),
]));
when(() => channelState.members).thenReturn([
Member( Member(
userId: 'user-id', userId: 'user-id',
user: User( user: User(
@@ -200,7 +172,10 @@ void main() {
}, },
), ),
), ),
]); ];
when(() => channelState.members).thenReturn(members);
when(() => channelState.membersStream)
.thenAnswer((_) => Stream.value(members));
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
home: StreamChat( home: StreamChat(
@@ -215,10 +190,11 @@ void main() {
)); ));
final image = tester.widget<GroupImage>(find.byType(GroupImage)); final image = tester.widget<GroupImage>(find.byType(GroupImage));
expect(image.images, [ final otherMembers = members.where((it) => it.userId != currentUser.id);
'testimage2', expect(
'testimage3', image.members.map((it) => it.user?.id),
]); otherMembers.map((it) => it.user?.id),
);
}, },
); );
@@ -13,11 +13,13 @@ void main() {
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel(); final channel = MockChannel();
final channelState = MockChannelState(); final channelState = MockChannelState();
final user = OwnUser(id: 'user-id');
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00'); final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => channel.cid).thenReturn('cid'); when(() => channel.cid).thenReturn('cid');
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt); when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState); when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client); when(() => channel.client).thenReturn(client);