test fixes

This commit is contained in:
Deven Joshi
2022-01-14 16:36:30 +05:30
parent f2ab29d8c6
commit 6729ef1deb
5 changed files with 136 additions and 92 deletions
@@ -46,6 +46,7 @@ extension IterableX<T> on Iterable<T> {
/// Useful extension for [PlatformFile] /// Useful extension for [PlatformFile]
extension PlatformFileX on PlatformFile { extension PlatformFileX on PlatformFile {
/// Converts the [PlatformFile] into [AttachmentFile] /// Converts the [PlatformFile] into [AttachmentFile]
//ignore: avoid_redundant_argument_values
AttachmentFile get toAttachmentFile => AttachmentFile( AttachmentFile get toAttachmentFile => AttachmentFile(
path: kIsWeb ? null : path, path: kIsWeb ? null : path,
name: name, name: name,
@@ -28,7 +28,7 @@ class MessageActionsModal extends StatefulWidget {
this.showReplyMessage = true, this.showReplyMessage = true,
this.showResendMessage = true, this.showResendMessage = true,
this.showThreadReplyMessage, this.showThreadReplyMessage,
this.showFlagButton = true, this.showFlagButton,
this.showPinButton, this.showPinButton,
this.editMessageInputBuilder, this.editMessageInputBuilder,
this.reverse = false, this.reverse = false,
@@ -73,13 +73,13 @@ class MessageActionsModal extends StatefulWidget {
final bool showResendMessage; final bool showResendMessage;
/// Flag for showing reply action /// Flag for showing reply action
final bool showReplyMessage; final bool? showReplyMessage;
/// Flag for showing thread reply action /// Flag for showing thread reply action
final bool? showThreadReplyMessage; final bool? showThreadReplyMessage;
/// Flag for showing flag action /// Flag for showing flag action
final bool showFlagButton; final bool? showFlagButton;
/// Flag for showing pin action /// Flag for showing pin action
final bool? showPinButton; final bool? showPinButton;
@@ -191,14 +191,15 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
if (_userPermissions if (widget.showReplyMessage ??
.contains(PermissionType.quoteMessage) && (_userPermissions
widget.showReplyMessage && .contains(PermissionType.quoteMessage) &&
widget.message.status == MessageSendingStatus.sent) widget.message.status ==
MessageSendingStatus.sent))
_buildReplyButton(context), _buildReplyButton(context),
if ((widget.showThreadReplyMessage ?? if (widget.showThreadReplyMessage ??
_userPermissions _userPermissions
.contains(PermissionType.sendReply)) && .contains(PermissionType.sendReply) &&
(widget.message.status == (widget.message.status ==
MessageSendingStatus.sent) && MessageSendingStatus.sent) &&
widget.message.parentId == null) widget.message.parentId == null)
@@ -209,16 +210,16 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
_isMyMessage && hasEditPermission) _isMyMessage && hasEditPermission)
_buildEditMessage(context), _buildEditMessage(context),
if (widget.showCopyMessage) _buildCopyButton(context), if (widget.showCopyMessage) _buildCopyButton(context),
if (_userPermissions if (widget.showFlagButton ??
.contains(PermissionType.flagMessage) && _userPermissions
widget.showFlagButton) .contains(PermissionType.flagMessage))
_buildFlagButton(context), _buildFlagButton(context),
if (widget.showPinButton ?? if (widget.showPinButton ??
_userPermissions _userPermissions
.contains(PermissionType.pinMessage)) .contains(PermissionType.pinMessage))
_buildPinButton(context), _buildPinButton(context),
if (widget.showDeleteMessage ?? if (widget.showDeleteMessage ??
_isMyMessage && hasDeletePermission) (_isMyMessage && hasDeletePermission))
_buildDeleteButton(context), _buildDeleteButton(context),
...widget.customActions ...widget.customActions
.map((action) => _buildCustomAction( .map((action) => _buildCustomAction(
@@ -686,8 +687,8 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
void didChangeDependencies() { void didChangeDependencies() {
final newStreamChannel = StreamChannel.of(context); final newStreamChannel = StreamChannel.of(context);
_userPermissions = newStreamChannel.channel.ownCapabilities; _userPermissions = newStreamChannel.channel.ownCapabilities;
_isMyMessage = widget.message.user!.id == _isMyMessage =
newStreamChannel.channel.client.state.currentUser!.id; widget.message.user?.id == StreamChat.of(context).currentUser?.id;
super.didChangeDependencies(); super.didChangeDependencies();
} }
} }
@@ -19,6 +19,7 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final client = MockClient(); final client = MockClient();
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel();
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
@@ -32,19 +33,25 @@ void main() {
streamChatThemeData: streamTheme, streamChatThemeData: streamTheme,
client: client, client: client,
child: SizedBox( child: SizedBox(
child: MessageActionsModal( child: StreamChannel(
message: Message( channel: channel,
text: 'test', child: MessageActionsModal(
user: User( message: Message(
id: 'user-id', text: 'test',
user: User(
id: 'user-id',
),
status: MessageSendingStatus.sent,
), ),
status: MessageSendingStatus.sent, messageWidget: const Text(
'test',
key: Key('MessageWidget'),
),
messageTheme: streamTheme.ownMessageTheme,
showThreadReplyMessage: true,
showEditMessage: true,
showDeleteMessage: true,
), ),
messageWidget: const Text(
'test',
key: Key('MessageWidget'),
),
messageTheme: streamTheme.ownMessageTheme,
), ),
), ),
), ),
@@ -66,6 +73,7 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final client = MockClient(); final client = MockClient();
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel();
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
@@ -79,20 +87,23 @@ void main() {
streamChatThemeData: streamTheme, streamChatThemeData: streamTheme,
client: client, client: client,
child: SizedBox( child: SizedBox(
child: MessageActionsModal( child: StreamChannel(
showCopyMessage: false, channel: channel,
showReplyMessage: false, child: MessageActionsModal(
showThreadReplyMessage: false, showCopyMessage: false,
message: Message( showReplyMessage: false,
text: 'test', showThreadReplyMessage: false,
user: User( message: Message(
id: 'user-id', text: 'test',
user: User(
id: 'user-id',
),
),
messageTheme: streamTheme.ownMessageTheme,
messageWidget: const Text(
'test',
key: Key('MessageWidget'),
), ),
),
messageTheme: streamTheme.ownMessageTheme,
messageWidget: const Text(
'test',
key: Key('MessageWidget'),
), ),
), ),
), ),
@@ -115,6 +126,7 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final client = MockClient(); final client = MockClient();
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel();
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
@@ -130,24 +142,27 @@ void main() {
streamChatThemeData: streamTheme, streamChatThemeData: streamTheme,
client: client, client: client,
child: SizedBox( child: SizedBox(
child: MessageActionsModal( child: StreamChannel(
messageWidget: const Text('test'), channel: channel,
message: Message( child: MessageActionsModal(
text: 'test', messageWidget: const Text('test'),
user: User( message: Message(
id: 'user-id', text: 'test',
user: User(
id: 'user-id',
),
), ),
messageTheme: streamTheme.ownMessageTheme,
customActions: [
MessageAction(
leading: const Icon(Icons.check),
title: const Text('title'),
onTap: (m) {
tapped = true;
},
),
],
), ),
messageTheme: streamTheme.ownMessageTheme,
customActions: [
MessageAction(
leading: const Icon(Icons.check),
title: const Text('title'),
onTap: (m) {
tapped = true;
},
),
],
), ),
), ),
), ),
@@ -170,6 +185,7 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final client = MockClient(); final client = MockClient();
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel();
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
@@ -186,19 +202,22 @@ void main() {
streamChatThemeData: streamTheme, streamChatThemeData: streamTheme,
client: client, client: client,
child: SizedBox( child: SizedBox(
child: MessageActionsModal( child: StreamChannel(
messageWidget: const Text('test'), channel: channel,
onReplyTap: (m) { child: MessageActionsModal(
tapped = true; messageWidget: const Text('test'),
}, onReplyTap: (m) {
message: Message( tapped = true;
text: 'test', },
user: User( message: Message(
id: 'user-id', text: 'test',
user: User(
id: 'user-id',
),
status: MessageSendingStatus.sent,
), ),
status: MessageSendingStatus.sent, messageTheme: streamTheme.ownMessageTheme,
), ),
messageTheme: streamTheme.ownMessageTheme,
), ),
), ),
), ),
@@ -217,6 +236,7 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final client = MockClient(); final client = MockClient();
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel();
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
@@ -233,19 +253,23 @@ void main() {
streamChatThemeData: streamTheme, streamChatThemeData: streamTheme,
client: client, client: client,
child: SizedBox( child: SizedBox(
child: MessageActionsModal( child: StreamChannel(
messageWidget: const Text('test'), channel: channel,
onThreadReplyTap: (m) { child: MessageActionsModal(
tapped = true; messageWidget: const Text('test'),
}, onThreadReplyTap: (m) {
message: Message( tapped = true;
text: 'test', },
user: User( message: Message(
id: 'user-id', text: 'test',
user: User(
id: 'user-id',
),
status: MessageSendingStatus.sent,
), ),
status: MessageSendingStatus.sent, messageTheme: streamTheme.ownMessageTheme,
showThreadReplyMessage: true,
), ),
messageTheme: streamTheme.ownMessageTheme,
), ),
), ),
), ),
@@ -295,6 +319,7 @@ void main() {
), ),
), ),
messageTheme: streamTheme.ownMessageTheme, messageTheme: streamTheme.ownMessageTheme,
showEditMessage: true,
), ),
), ),
), ),
@@ -345,6 +370,7 @@ void main() {
), ),
), ),
messageTheme: streamTheme.ownMessageTheme, messageTheme: streamTheme.ownMessageTheme,
showEditMessage: true,
), ),
), ),
), ),
@@ -545,6 +571,7 @@ void main() {
), ),
), ),
messageTheme: streamTheme.ownMessageTheme, messageTheme: streamTheme.ownMessageTheme,
showFlagButton: true,
), ),
), ),
), ),
@@ -601,6 +628,7 @@ void main() {
), ),
), ),
messageTheme: streamTheme.ownMessageTheme, messageTheme: streamTheme.ownMessageTheme,
showFlagButton: true,
), ),
), ),
), ),
@@ -657,6 +685,7 @@ void main() {
), ),
), ),
messageTheme: streamTheme.ownMessageTheme, messageTheme: streamTheme.ownMessageTheme,
showFlagButton: true,
), ),
), ),
), ),
@@ -711,6 +740,7 @@ void main() {
), ),
), ),
messageTheme: streamTheme.ownMessageTheme, messageTheme: streamTheme.ownMessageTheme,
showDeleteMessage: true,
), ),
), ),
), ),
@@ -767,6 +797,7 @@ void main() {
), ),
), ),
messageTheme: streamTheme.ownMessageTheme, messageTheme: streamTheme.ownMessageTheme,
showDeleteMessage: true,
), ),
), ),
), ),
@@ -13,6 +13,7 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final client = MockClient(); final client = MockClient();
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel();
final themeData = ThemeData(); final themeData = ThemeData();
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
@@ -33,13 +34,16 @@ void main() {
home: StreamChat( home: StreamChat(
client: client, client: client,
streamChatThemeData: streamTheme, streamChatThemeData: streamTheme,
child: MessageReactionsModal( child: StreamChannel(
messageWidget: const Text( channel: channel,
'test', child: MessageReactionsModal(
key: Key('MessageWidget'), messageWidget: const Text(
'test',
key: Key('MessageWidget'),
),
message: message,
messageTheme: streamTheme.ownMessageTheme,
), ),
message: message,
messageTheme: streamTheme.ownMessageTheme,
), ),
), ),
), ),
@@ -58,6 +62,7 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final client = MockClient(); final client = MockClient();
final clientState = MockClientState(); final clientState = MockClientState();
final channel = MockChannel();
final themeData = ThemeData(); final themeData = ThemeData();
when(() => client.state).thenReturn(clientState); when(() => client.state).thenReturn(clientState);
@@ -89,16 +94,19 @@ void main() {
home: StreamChat( home: StreamChat(
client: client, client: client,
streamChatThemeData: streamTheme, streamChatThemeData: streamTheme,
child: MessageReactionsModal( child: StreamChannel(
messageWidget: const Text( channel: channel,
'test', child: MessageReactionsModal(
key: Key('MessageWidget'), messageWidget: const Text(
'test',
key: Key('MessageWidget'),
),
message: message,
messageTheme: streamTheme.ownMessageTheme,
reverse: true,
showReactions: false,
onUserAvatarTap: onUserAvatarTap,
), ),
message: message,
messageTheme: streamTheme.ownMessageTheme,
reverse: true,
showReactions: false,
onUserAvatarTap: onUserAvatarTap,
), ),
), ),
), ),
@@ -21,6 +21,9 @@ class MockChannel extends Mock implements Channel {
Future<void> keyStroke([String? parentId]) async { Future<void> keyStroke([String? parentId]) async {
return; return;
} }
@override
List<String> get ownCapabilities => ['send-message'];
} }
class MockChannelState extends Mock implements ChannelClientState { class MockChannelState extends Mock implements ChannelClientState {