merge origin/develop into ref/segregate-api-layer
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -425,6 +425,54 @@ void main() {
|
||||
});
|
||||
});
|
||||
|
||||
test('`.partialUpdateMessage`', () async {
|
||||
final message = Message(id: 'test-message-id');
|
||||
|
||||
const set = {'text': 'Update Message text'};
|
||||
const unset = ['pinExpires'];
|
||||
|
||||
final updateMessageResponse = UpdateMessageResponse()
|
||||
..message = message.copyWith(text: set['text'], pinExpires: null);
|
||||
|
||||
when(
|
||||
() => client.partialUpdateMessage(message.id, set: set, unset: unset),
|
||||
).thenAnswer((_) async => updateMessageResponse);
|
||||
|
||||
channel.state?.messagesStream.skip(1).listen(print);
|
||||
|
||||
expectLater(
|
||||
// skipping first seed message list -> [] messages
|
||||
channel.state?.messagesStream.skip(1),
|
||||
emitsInOrder([
|
||||
[
|
||||
isSameMessageAs(
|
||||
updateMessageResponse.message.copyWith(
|
||||
status: MessageSendingStatus.sent,
|
||||
),
|
||||
matchText: true,
|
||||
matchSendingStatus: true,
|
||||
),
|
||||
],
|
||||
]),
|
||||
);
|
||||
|
||||
final res = await channel.partialUpdateMessage(
|
||||
message,
|
||||
set: set,
|
||||
unset: unset,
|
||||
);
|
||||
|
||||
expect(res, isNotNull);
|
||||
expect(res.message.id, message.id);
|
||||
expect(res.message.id, message.id);
|
||||
expect(res.message.text, set['text']);
|
||||
expect(res.message.pinExpires, isNull);
|
||||
|
||||
verify(
|
||||
() => client.partialUpdateMessage(message.id, set: set, unset: unset),
|
||||
).called(1);
|
||||
});
|
||||
|
||||
group('`.deleteMessage`', () {
|
||||
test('should work fine', () async {
|
||||
const messageId = 'test-message-id';
|
||||
@@ -493,21 +541,21 @@ void main() {
|
||||
() async {
|
||||
final message = Message(id: 'test-message-id');
|
||||
|
||||
when(() => client.updateMessage(any(that: isSameMessageAs(message))))
|
||||
.thenAnswer((invocation) async => UpdateMessageResponse()
|
||||
..message = (invocation.positionalArguments.first as Message)
|
||||
.copyWith(status: MessageSendingStatus.sent));
|
||||
when(() => client.partialUpdateMessage(
|
||||
message.id,
|
||||
set: any(named: 'set'),
|
||||
unset: any(named: 'unset'),
|
||||
)).thenAnswer((_) async => UpdateMessageResponse()
|
||||
..message = message.copyWith(
|
||||
pinned: true,
|
||||
pinExpires: null,
|
||||
status: MessageSendingStatus.sent,
|
||||
));
|
||||
|
||||
expectLater(
|
||||
// skipping first seed message list -> [] messages
|
||||
channel.state?.messagesStream.skip(1),
|
||||
emitsInOrder([
|
||||
[
|
||||
isSameMessageAs(
|
||||
message.copyWith(status: MessageSendingStatus.updating),
|
||||
matchSendingStatus: true,
|
||||
),
|
||||
],
|
||||
[
|
||||
isSameMessageAs(
|
||||
message.copyWith(status: MessageSendingStatus.sent),
|
||||
@@ -523,8 +571,11 @@ void main() {
|
||||
expect(res.message.pinned, isTrue);
|
||||
expect(res.message.pinExpires, isNull);
|
||||
|
||||
verify(() => client.updateMessage(any(that: isSameMessageAs(message))))
|
||||
.called(1);
|
||||
verify(() => client.partialUpdateMessage(
|
||||
message.id,
|
||||
set: any(named: 'set'),
|
||||
unset: any(named: 'unset'),
|
||||
)).called(1);
|
||||
});
|
||||
|
||||
test(
|
||||
@@ -533,21 +584,23 @@ void main() {
|
||||
final message = Message(id: 'test-message-id');
|
||||
const timeoutOrExpirationDate = 300; // 300 seconds
|
||||
|
||||
when(() => client.updateMessage(any(that: isSameMessageAs(message))))
|
||||
.thenAnswer((invocation) async => UpdateMessageResponse()
|
||||
..message = (invocation.positionalArguments.first as Message)
|
||||
.copyWith(status: MessageSendingStatus.sent));
|
||||
when(() => client.partialUpdateMessage(
|
||||
message.id,
|
||||
set: any(named: 'set'),
|
||||
unset: any(named: 'unset'),
|
||||
)).thenAnswer((_) async => UpdateMessageResponse()
|
||||
..message = message.copyWith(
|
||||
pinned: true,
|
||||
pinExpires: DateTime.now().add(
|
||||
const Duration(seconds: timeoutOrExpirationDate),
|
||||
),
|
||||
status: MessageSendingStatus.sent,
|
||||
));
|
||||
|
||||
expectLater(
|
||||
// skipping first seed message list -> [] messages
|
||||
channel.state?.messagesStream.skip(1),
|
||||
emitsInOrder([
|
||||
[
|
||||
isSameMessageAs(
|
||||
message.copyWith(status: MessageSendingStatus.updating),
|
||||
matchSendingStatus: true,
|
||||
),
|
||||
],
|
||||
[
|
||||
isSameMessageAs(
|
||||
message.copyWith(status: MessageSendingStatus.sent),
|
||||
@@ -566,9 +619,11 @@ void main() {
|
||||
expect(res.message.pinned, isTrue);
|
||||
expect(res.message.pinExpires, isNotNull);
|
||||
|
||||
verify(() =>
|
||||
client.updateMessage(any(that: isSameMessageAs(message))))
|
||||
.called(1);
|
||||
verify(() => client.partialUpdateMessage(
|
||||
message.id,
|
||||
set: any(named: 'set'),
|
||||
unset: any(named: 'unset'),
|
||||
)).called(1);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -579,21 +634,21 @@ void main() {
|
||||
final timeoutOrExpirationDate =
|
||||
DateTime.now().add(const Duration(days: 3)); // 3 days
|
||||
|
||||
when(() => client.updateMessage(any(that: isSameMessageAs(message))))
|
||||
.thenAnswer((invocation) async => UpdateMessageResponse()
|
||||
..message = (invocation.positionalArguments.first as Message)
|
||||
.copyWith(status: MessageSendingStatus.sent));
|
||||
when(() => client.partialUpdateMessage(
|
||||
message.id,
|
||||
set: any(named: 'set'),
|
||||
unset: any(named: 'unset'),
|
||||
)).thenAnswer((_) async => UpdateMessageResponse()
|
||||
..message = message.copyWith(
|
||||
pinned: true,
|
||||
pinExpires: timeoutOrExpirationDate,
|
||||
status: MessageSendingStatus.sent,
|
||||
));
|
||||
|
||||
expectLater(
|
||||
// skipping first seed message list -> [] messages
|
||||
channel.state?.messagesStream.skip(1),
|
||||
emitsInOrder([
|
||||
[
|
||||
isSameMessageAs(
|
||||
message.copyWith(status: MessageSendingStatus.updating),
|
||||
matchSendingStatus: true,
|
||||
),
|
||||
],
|
||||
[
|
||||
isSameMessageAs(
|
||||
message.copyWith(status: MessageSendingStatus.sent),
|
||||
@@ -613,9 +668,11 @@ void main() {
|
||||
expect(res.message.pinExpires, isNotNull);
|
||||
expect(res.message.pinExpires, timeoutOrExpirationDate.toUtc());
|
||||
|
||||
verify(
|
||||
() => client.updateMessage(any(that: isSameMessageAs(message))),
|
||||
).called(1);
|
||||
verify(() => client.partialUpdateMessage(
|
||||
message.id,
|
||||
set: any(named: 'set'),
|
||||
unset: any(named: 'unset'),
|
||||
)).called(1);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -640,21 +697,19 @@ void main() {
|
||||
test('`.unpinMessage`', () async {
|
||||
final message = Message(id: 'test-message-id', pinned: true);
|
||||
|
||||
when(() => client.updateMessage(any(that: isSameMessageAs(message))))
|
||||
.thenAnswer((invocation) async => UpdateMessageResponse()
|
||||
..message = (invocation.positionalArguments.first as Message)
|
||||
.copyWith(status: MessageSendingStatus.sent));
|
||||
when(() => client.partialUpdateMessage(
|
||||
message.id,
|
||||
set: {'pinned': false},
|
||||
)).thenAnswer((_) async => UpdateMessageResponse()
|
||||
..message = message.copyWith(
|
||||
pinned: false,
|
||||
status: MessageSendingStatus.sent,
|
||||
));
|
||||
|
||||
expectLater(
|
||||
// skipping first seed message list -> [] messages
|
||||
channel.state?.messagesStream.skip(1),
|
||||
emitsInOrder([
|
||||
[
|
||||
isSameMessageAs(
|
||||
message.copyWith(status: MessageSendingStatus.updating),
|
||||
matchSendingStatus: true,
|
||||
),
|
||||
],
|
||||
[
|
||||
isSameMessageAs(
|
||||
message.copyWith(status: MessageSendingStatus.sent),
|
||||
@@ -669,44 +724,12 @@ void main() {
|
||||
expect(res, isNotNull);
|
||||
expect(res.message.pinned, isFalse);
|
||||
|
||||
verify(
|
||||
() => client.updateMessage(any(that: isSameMessageAs(message))),
|
||||
).called(1);
|
||||
verify(() => client.partialUpdateMessage(
|
||||
message.id,
|
||||
set: {'pinned': false},
|
||||
)).called(1);
|
||||
});
|
||||
|
||||
//
|
||||
// /// Send a file to this channel
|
||||
// Future<SendFileResponse> sendFile(
|
||||
// AttachmentFile file, {
|
||||
// ProgressCallback? onSendProgress,
|
||||
// CancelToken? cancelToken,
|
||||
// }) {
|
||||
// _checkInitialized();
|
||||
// return _client.sendFile(
|
||||
// file,
|
||||
// id!,
|
||||
// type,
|
||||
// onSendProgress: onSendProgress,
|
||||
// cancelToken: cancelToken,
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// /// Send an image to this channel
|
||||
// Future<SendImageResponse> sendImage(
|
||||
// AttachmentFile file, {
|
||||
// ProgressCallback? onSendProgress,
|
||||
// CancelToken? cancelToken,
|
||||
// }) {
|
||||
// _checkInitialized();
|
||||
// return _client.sendImage(
|
||||
// file,
|
||||
// id!,
|
||||
// type,
|
||||
// onSendProgress: onSendProgress,
|
||||
// cancelToken: cancelToken,
|
||||
// );
|
||||
// }
|
||||
|
||||
group('`.search`', () {
|
||||
final filter = Filter.in_('cid', const [channelCid]);
|
||||
|
||||
@@ -1123,40 +1146,44 @@ void main() {
|
||||
});
|
||||
|
||||
test('`.updatePartial`', () async {
|
||||
const channelData = {
|
||||
const set = {
|
||||
'name': 'Stream Team',
|
||||
'profile_image': 'test-profile-image',
|
||||
};
|
||||
|
||||
const unset = ['tag', 'last_name'];
|
||||
|
||||
final channelModel = ChannelModel(
|
||||
cid: channelCid,
|
||||
extraData: {
|
||||
'coolness': 999,
|
||||
...channelData,
|
||||
...set,
|
||||
},
|
||||
);
|
||||
|
||||
when(() => client.updateChannelPartial(
|
||||
channelId,
|
||||
channelType,
|
||||
channelData,
|
||||
set: set,
|
||||
unset: unset,
|
||||
)).thenAnswer(
|
||||
(_) async => PartialUpdateChannelResponse()..channel = channelModel,
|
||||
);
|
||||
|
||||
final res = await channel.updatePartial(channelData);
|
||||
final res = await channel.updatePartial(set: set, unset: unset);
|
||||
|
||||
expect(res, isNotNull);
|
||||
expect(res.channel.cid, channelModel.cid);
|
||||
expect(
|
||||
res.channel.extraData,
|
||||
{'coolness': 999, ...channelData},
|
||||
{'coolness': 999, ...set},
|
||||
);
|
||||
|
||||
verify(() => client.updateChannelPartial(
|
||||
channelId,
|
||||
channelType,
|
||||
channelData,
|
||||
set: set,
|
||||
unset: unset,
|
||||
)).called(1);
|
||||
});
|
||||
|
||||
@@ -1380,12 +1407,6 @@ void main() {
|
||||
when(() => client.markChannelRead(channelId, channelType,
|
||||
messageId: messageId)).thenAnswer((_) async => EmptyResponse());
|
||||
|
||||
expectLater(
|
||||
// skipping first seed unread count -> 0 unread count
|
||||
channel.state?.unreadCountStream.skip(1),
|
||||
emitsInOrder([0]),
|
||||
);
|
||||
|
||||
final res = await channel.markRead(messageId: messageId);
|
||||
|
||||
expect(res, isNotNull);
|
||||
|
||||
@@ -190,30 +190,39 @@ void main() {
|
||||
test('updateChannelPartial', () async {
|
||||
const channelId = 'test-channel-id';
|
||||
const channelType = 'test-channel-type';
|
||||
const data = {'name': 'test-channel-name'};
|
||||
const set = {
|
||||
'name': 'Stream Team',
|
||||
'profile_image': 'test-profile-image',
|
||||
};
|
||||
|
||||
const unset = ['tag', 'last_name'];
|
||||
|
||||
final path = _getChannelUrl(channelId, channelType);
|
||||
|
||||
final channelModel = ChannelModel(
|
||||
id: channelId,
|
||||
type: channelType,
|
||||
extraData: data,
|
||||
extraData: set,
|
||||
);
|
||||
|
||||
when(() => client.patch(path, data: any(named: 'data')))
|
||||
.thenAnswer((_) async => successResponse(path, data: {
|
||||
'channel': channelModel.toJson(),
|
||||
}));
|
||||
when(
|
||||
() => client.patch(path, data: {'set': set, 'unset': unset}),
|
||||
).thenAnswer((_) async => successResponse(path, data: {
|
||||
'channel': channelModel.toJson(),
|
||||
}));
|
||||
|
||||
final res = await channelApi.updateChannelPartial(
|
||||
channelId,
|
||||
channelType,
|
||||
data,
|
||||
set: set,
|
||||
unset: unset,
|
||||
);
|
||||
|
||||
expect(res, isNotNull);
|
||||
|
||||
verify(() => client.patch(path, data: any(named: 'data'))).called(1);
|
||||
verify(
|
||||
() => client.patch(path, data: {'set': set, 'unset': unset}),
|
||||
).called(1);
|
||||
verifyNoMoreInteractions(client);
|
||||
});
|
||||
|
||||
|
||||
@@ -110,6 +110,40 @@ void main() {
|
||||
verifyNoMoreInteractions(client);
|
||||
});
|
||||
|
||||
test('partialUpdateMessage', () async {
|
||||
const messageId = 'test-message-id';
|
||||
|
||||
const set = {'text': 'Update Message text'};
|
||||
const unset = ['pinExpires'];
|
||||
|
||||
const path = '/messages/$messageId';
|
||||
final message = Message(id: 'test-message-id', text: set['text']);
|
||||
|
||||
when(() => client.put(
|
||||
path,
|
||||
data: {'set': set, 'unset': unset},
|
||||
)).thenAnswer(
|
||||
(_) async => successResponse(path, data: {'message': message.toJson()}),
|
||||
);
|
||||
|
||||
final res = await messageApi.partialUpdateMessage(
|
||||
messageId,
|
||||
set: set,
|
||||
unset: unset,
|
||||
);
|
||||
|
||||
expect(res, isNotNull);
|
||||
expect(res.message.id, message.id);
|
||||
expect(res.message.text, set['text']);
|
||||
expect(res.message.pinExpires, isNull);
|
||||
|
||||
verify(() => client.put(
|
||||
path,
|
||||
data: {'set': set, 'unset': unset},
|
||||
)).called(1);
|
||||
verifyNoMoreInteractions(client);
|
||||
});
|
||||
|
||||
test('deleteMessage', () async {
|
||||
const messageId = 'test-message-id';
|
||||
|
||||
|
||||
@@ -902,7 +902,6 @@ void main() {
|
||||
"show_in_channel": null,
|
||||
"mentioned_users": [],
|
||||
"status": "SENT",
|
||||
"skip_push": false,
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
@@ -919,7 +918,6 @@ void main() {
|
||||
"show_in_channel": null,
|
||||
"mentioned_users": [],
|
||||
"status": "SENT",
|
||||
"skip_push": false,
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
@@ -929,7 +927,6 @@ void main() {
|
||||
{
|
||||
"id": "dry-meadow-0-53e6299f-9b97-4a9c-a27e-7e2dde49b7e0",
|
||||
"text": "test message",
|
||||
"skip_push": false,
|
||||
"attachments": [],
|
||||
"parent_id": null,
|
||||
"quoted_message": null,
|
||||
@@ -952,7 +949,6 @@ void main() {
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
"mentioned_users": [],
|
||||
"skip_push": false,
|
||||
"status": "SENT",
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
@@ -964,7 +960,6 @@ void main() {
|
||||
"id": "dry-meadow-0-64d7970f-ede8-4b31-9738-1bc1756d2bfe",
|
||||
"text": "test",
|
||||
"attachments": [],
|
||||
"skip_push": false,
|
||||
"parent_id": null,
|
||||
"quoted_message": null,
|
||||
"quoted_message_id": null,
|
||||
@@ -982,7 +977,6 @@ void main() {
|
||||
"text": "hi",
|
||||
"attachments": [],
|
||||
"parent_id": null,
|
||||
"skip_push": false,
|
||||
"quoted_message": null,
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
@@ -1000,7 +994,6 @@ void main() {
|
||||
"attachments": [],
|
||||
"parent_id": null,
|
||||
"quoted_message": null,
|
||||
"skip_push": false,
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
"mentioned_users": [],
|
||||
@@ -1023,7 +1016,6 @@ void main() {
|
||||
"status": "SENT",
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"skip_push": false,
|
||||
"pinned_at": null,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
@@ -1041,7 +1033,6 @@ void main() {
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"skip_push": false,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
},
|
||||
@@ -1053,7 +1044,6 @@ void main() {
|
||||
"quoted_message": null,
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
"skip_push": false,
|
||||
"mentioned_users": [],
|
||||
"status": "SENT",
|
||||
"silent": false,
|
||||
@@ -1071,7 +1061,6 @@ void main() {
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
"mentioned_users": [],
|
||||
"skip_push": false,
|
||||
"status": "SENT",
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
@@ -1090,7 +1079,6 @@ void main() {
|
||||
"mentioned_users": [],
|
||||
"status": "SENT",
|
||||
"silent": false,
|
||||
"skip_push": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"pin_expires": null,
|
||||
@@ -1100,7 +1088,6 @@ void main() {
|
||||
"id": "icy-recipe-7-935c396e-ddf8-4a9a-951c-0a12fa5bf055",
|
||||
"text": "what are you doing?",
|
||||
"attachments": [],
|
||||
"skip_push": false,
|
||||
"parent_id": null,
|
||||
"quoted_message": null,
|
||||
"quoted_message_id": null,
|
||||
@@ -1118,7 +1105,6 @@ void main() {
|
||||
"text": "👍",
|
||||
"attachments": [],
|
||||
"parent_id": null,
|
||||
"skip_push": false,
|
||||
"quoted_message": null,
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
@@ -1134,7 +1120,6 @@ void main() {
|
||||
"id": "snowy-credit-3-3e0c1a0d-d22f-42ee-b2a1-f9f49477bf21",
|
||||
"text": "sdasas",
|
||||
"attachments": [],
|
||||
"skip_push": false,
|
||||
"parent_id": null,
|
||||
"quoted_message": null,
|
||||
"quoted_message_id": null,
|
||||
@@ -1155,7 +1140,6 @@ void main() {
|
||||
"quoted_message": null,
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
"skip_push": false,
|
||||
"mentioned_users": [],
|
||||
"status": "SENT",
|
||||
"silent": false,
|
||||
@@ -1168,7 +1152,6 @@ void main() {
|
||||
"id": "snowy-credit-3-cfaf0b46-1daa-49c5-947c-b16d6697487d",
|
||||
"text": "nhisagdhsadz",
|
||||
"attachments": [],
|
||||
"skip_push": false,
|
||||
"parent_id": null,
|
||||
"quoted_message": null,
|
||||
"quoted_message_id": null,
|
||||
@@ -1187,7 +1170,6 @@ void main() {
|
||||
"attachments": [],
|
||||
"parent_id": null,
|
||||
"quoted_message": null,
|
||||
"skip_push": false,
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
"mentioned_users": [],
|
||||
@@ -1204,7 +1186,6 @@ void main() {
|
||||
"attachments": [],
|
||||
"parent_id": null,
|
||||
"quoted_message": null,
|
||||
"skip_push": false,
|
||||
"quoted_message_id": null,
|
||||
"show_in_channel": null,
|
||||
"mentioned_users": [],
|
||||
@@ -1212,7 +1193,6 @@ void main() {
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"skip_push": false,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
},
|
||||
@@ -1229,7 +1209,6 @@ void main() {
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"skip_push": false,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
},
|
||||
@@ -1246,7 +1225,6 @@ void main() {
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"skip_push": false,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
},
|
||||
@@ -1263,7 +1241,6 @@ void main() {
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"skip_push": false,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
},
|
||||
@@ -1280,7 +1257,6 @@ void main() {
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"skip_push": false,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
},
|
||||
@@ -1297,7 +1273,6 @@ void main() {
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"skip_push": false,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
},
|
||||
@@ -1314,7 +1289,6 @@ void main() {
|
||||
"silent": false,
|
||||
"pinned": false,
|
||||
"pinned_at": null,
|
||||
"skip_push": false,
|
||||
"pin_expires": null,
|
||||
"pinned_by": null
|
||||
}
|
||||
|
||||
@@ -133,7 +133,6 @@ void main() {
|
||||
"id": "4637f7e4-a06b-42db-ba5a-8d8270dd926f",
|
||||
"text": "https://giphy.com/gifs/the-lion-king-live-action-5zvN79uTGfLMOVfQaA",
|
||||
"silent": false,
|
||||
"skip_push": false,
|
||||
"attachments": [
|
||||
{
|
||||
"type": "video",
|
||||
|
||||
@@ -87,15 +87,8 @@ 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;
|
||||
}
|
||||
int totalUnreadCount = 0;
|
||||
}
|
||||
|
||||
class FakeMessage extends Fake implements Message {}
|
||||
|
||||
@@ -40,11 +40,13 @@ class _IsSameEventAs extends Matcher {
|
||||
|
||||
Matcher isSameMessageAs(
|
||||
Message targetMessage, {
|
||||
bool matchText = false,
|
||||
bool matchReactions = false,
|
||||
bool matchSendingStatus = false,
|
||||
}) =>
|
||||
_IsSameMessageAs(
|
||||
targetMessage: targetMessage,
|
||||
matchText: matchText,
|
||||
matchReactions: matchReactions,
|
||||
matchSendingStatus: matchSendingStatus,
|
||||
);
|
||||
@@ -52,11 +54,13 @@ Matcher isSameMessageAs(
|
||||
class _IsSameMessageAs extends Matcher {
|
||||
const _IsSameMessageAs({
|
||||
required this.targetMessage,
|
||||
this.matchText = false,
|
||||
this.matchReactions = false,
|
||||
this.matchSendingStatus = false,
|
||||
});
|
||||
|
||||
final Message targetMessage;
|
||||
final bool matchText;
|
||||
final bool matchReactions;
|
||||
final bool matchSendingStatus;
|
||||
|
||||
@@ -67,6 +71,9 @@ class _IsSameMessageAs extends Matcher {
|
||||
@override
|
||||
bool matches(covariant Message message, Map matchState) {
|
||||
var matches = message.id == targetMessage.id;
|
||||
if (matchText) {
|
||||
matches &= message.text == targetMessage.text;
|
||||
}
|
||||
if (matchSendingStatus) {
|
||||
matches &= message.status == targetMessage.status;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user