Skip to content

Commit 4c4d741

Browse files
authored
Bugfix/fix flaky test (#176)
* fix formatting * Fix test failing if WS event was not received until API call finished * Fix test failing if the API call took too long due to rate limit error * fix waiting for valid condition
1 parent 5c48f84 commit 4c4d741

File tree

3 files changed

+36
-30
lines changed

3 files changed

+36
-30
lines changed

Assets/Plugins/StreamChat/Samples/UnreadCountsCodeSamples.cs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void ChannelsReadState()
4848
{
4949
IStreamChannel channel = null;
5050

51-
// Every channel maintains a full list of read state for each channel member
51+
// Every channel maintains a full list of read state for each channel member
5252
foreach (var read in channel.Read)
5353
{
5454
Debug.Log(read.User); // User
@@ -62,41 +62,41 @@ public async Task MarkRead2()
6262
IStreamChannel channel = null;
6363
IStreamMessage message = null;
6464

65-
// Mark this message as last read
65+
// Mark this message as last read
6666
await message.MarkMessageAsLastReadAsync();
6767

68-
// Mark whole channel as read
68+
// Mark whole channel as read
6969
await channel.MarkChannelReadAsync();
7070
}
7171

7272
public async Task GetCurrentUnreadCounts()
7373
{
74-
var current = await Client.GetLatestUnreadCountsAsync();
74+
var current = await Client.GetLatestUnreadCountsAsync();
7575

76-
Debug.Log(current.TotalUnreadCount); // Total unread messages
77-
Debug.Log(current.TotalUnreadThreadsCount); // Total unread threads
76+
Debug.Log(current.TotalUnreadCount); // Total unread messages
77+
Debug.Log(current.TotalUnreadThreadsCount); // Total unread threads
7878

79-
foreach (var unreadChannel in current.UnreadChannels)
80-
{
81-
Debug.Log(unreadChannel.ChannelCid); // CID of the channel with unread messages
82-
Debug.Log(unreadChannel.UnreadCount); // Count of unread messages
83-
Debug.Log(unreadChannel.LastRead); // Datetime of the last read message
84-
}
79+
foreach (var unreadChannel in current.UnreadChannels)
80+
{
81+
Debug.Log(unreadChannel.ChannelCid); // CID of the channel with unread messages
82+
Debug.Log(unreadChannel.UnreadCount); // Count of unread messages
83+
Debug.Log(unreadChannel.LastRead); // Datetime of the last read message
84+
}
8585

86-
foreach (var unreadChannelByType in current.UnreadChannelsByType)
87-
{
88-
Debug.Log(unreadChannelByType.ChannelType); // Channel type
89-
Debug.Log(unreadChannelByType.ChannelCount); // How many channels of this type have unread messages
90-
Debug.Log(unreadChannelByType.UnreadCount); // How many unread messages in all channels of this type
91-
}
86+
foreach (var unreadChannelByType in current.UnreadChannelsByType)
87+
{
88+
Debug.Log(unreadChannelByType.ChannelType); // Channel type
89+
Debug.Log(unreadChannelByType.ChannelCount); // How many channels of this type have unread messages
90+
Debug.Log(unreadChannelByType.UnreadCount); // How many unread messages in all channels of this type
91+
}
9292

93-
foreach (var unreadThread in current.UnreadThreads)
94-
{
95-
Debug.Log(unreadThread.ParentMessageId); // Message ID of the parent message for this thread
96-
Debug.Log(unreadThread.LastReadMessageId); // Last read message in this thread
97-
Debug.Log(unreadThread.UnreadCount); // Count of unread messages
98-
Debug.Log(unreadThread.LastRead); // Datetime of the last read message
99-
}
93+
foreach (var unreadThread in current.UnreadThreads)
94+
{
95+
Debug.Log(unreadThread.ParentMessageId); // Message ID of the parent message for this thread
96+
Debug.Log(unreadThread.LastReadMessageId); // Last read message in this thread
97+
Debug.Log(unreadThread.UnreadCount); // Count of unread messages
98+
Debug.Log(unreadThread.LastRead); // Datetime of the last read message
99+
}
100100
}
101101

102102
private IStreamChatClient Client { get; } = StreamChatClient.CreateDefaultClient();

Assets/Plugins/StreamChat/Tests/StatefulClient/ChannelsTests.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,8 +655,13 @@ private async Task When_unfreezing_a_frozen_channel_expect_channel_unfrozen_Asyn
655655
{
656656
var channel = await CreateUniqueTempChannelAsync();
657657
await channel.FreezeAsync();
658+
659+
await WaitWhileFalseAsync(() => channel.Frozen);
658660
Assert.IsTrue(channel.Frozen);
661+
659662
await channel.UnfreezeAsync();
663+
664+
await WaitWhileTrueAsync(() => channel.Frozen);
660665
Assert.IsFalse(channel.Frozen);
661666

662667
await channel.SendNewMessageAsync("MessageAfterUnfrozenChannel");

Assets/Plugins/StreamChat/Tests/StatefulClient/MessagesTests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,14 @@ public async Task When_message_pin_with_expire_expected_message_pinned_with_expi
207207
var sentMessage = await channel.SendNewMessageAsync(MessageText);
208208
Assert.AreEqual(sentMessage.Text, MessageText);
209209

210-
await sentMessage.PinAsync(DateTime.UtcNow.Add(new TimeSpan(0, 0, 10, 0)));
210+
// Use hours because due to rate limit the response can potentially take some time
211+
var targetExpiryDate = DateTime.UtcNow.Add(new TimeSpan(0, 5, 0, 0));
212+
await sentMessage.PinAsync(targetExpiryDate);
213+
await WaitWhileFalseAsync(() => sentMessage.Pinned && sentMessage.PinExpires.HasValue);
211214

212-
var messageInChannel = channel.Messages.FirstOrDefault(_ => _.Id == sentMessage.Id);
213-
Assert.AreEqual(true, messageInChannel.Pinned);
215+
Assert.AreEqual(true, sentMessage.Pinned);
214216

215-
var expiresInMinutes = (messageInChannel.PinExpires.Value - DateTime.UtcNow).TotalMinutes;
216-
Assert.That(expiresInMinutes, Is.InRange(9, 11));
217+
Assert.That(sentMessage.PinExpires.Value, Is.EqualTo(new DateTimeOffset(targetExpiryDate)).Within(3).Minutes);
217218
}
218219

219220
[UnityTest]

0 commit comments

Comments
 (0)