Skip to content

Commit 837ec94

Browse files
update event related tests, implement minor fixes
1 parent 0ccfe86 commit 837ec94

File tree

12 files changed

+219
-191
lines changed

12 files changed

+219
-191
lines changed

c-sharp-chat/PubnubChatApi/PubNubChatApi.Tests/ChannelTests.cs

Lines changed: 91 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,16 @@ public class ChannelTests
1515
[SetUp]
1616
public async Task Setup()
1717
{
18-
chat = await Chat.CreateInstance(new PubnubChatConfig(storeUserActivityTimestamp: true), new PNConfiguration(new UserId("ctuuuuuuuuuuuuuuuuuuuuuuuuuuuuu"))
18+
chat = TestUtils.AssertOperation(await Chat.CreateInstance(new PubnubChatConfig(storeUserActivityTimestamp: true), new PNConfiguration(new UserId("ctuuuuuuuuuuuuuuuuuuuuuuuuuuuuu"))
1919
{
2020
PublishKey = PubnubTestsParameters.PublishKey,
2121
SubscribeKey = PubnubTestsParameters.SubscribeKey
22-
});
23-
if (!chat.TryGetCurrentUser(out user))
24-
{
25-
Assert.Fail();
26-
}
27-
await user.Update(new ChatUserData()
22+
}));
23+
user = TestUtils.AssertOperation(await chat.GetCurrentUser());
24+
TestUtils.AssertOperation(await user.Update(new ChatUserData()
2825
{
2926
Username = "Testificate"
30-
});
27+
}));
3128
talkUser = await chat.GetOrCreateUser("talk_user");
3229
}
3330

@@ -41,89 +38,91 @@ public async Task CleanUp()
4138
[Test]
4239
public async Task TestUpdateChannel()
4340
{
44-
var channel = await chat.CreatePublicConversation();
41+
var channel = TestUtils.AssertOperation(await chat.CreatePublicConversation());
4542
channel.SetListeningForUpdates(true);
4643

4744
await Task.Delay(3000);
4845

4946
var updateReset = new ManualResetEvent(false);
5047
var updatedData = new ChatChannelData()
5148
{
52-
ChannelDescription = "some description",
53-
ChannelCustomData = new Dictionary<string, object>(){{"key", "value"}},
54-
ChannelName = "some name",
55-
ChannelStatus = "yes",
56-
ChannelType = "sometype"
49+
Description = "some description",
50+
CustomData = new Dictionary<string, object>(){{"key", "value"}},
51+
Name = "some name",
52+
Status = "yes",
53+
Type = "sometype"
5754
};
5855
channel.OnChannelUpdate += updatedChannel =>
5956
{
60-
Assert.True(updatedChannel.Description == updatedData.ChannelDescription, "updatedChannel.Description != updatedData.ChannelDescription");
57+
Assert.True(updatedChannel.Description == updatedData.Description, "updatedChannel.Description != updatedData.ChannelDescription");
6158
Assert.True(updatedChannel.CustomData.TryGetValue("key", out var value) && value.ToString() == "value", "updatedChannel.CustomDataJson != updatedData.ChannelCustomDataJson");
62-
Assert.True(updatedChannel.Name == updatedData.ChannelName, "updatedChannel.Name != updatedData.ChannelDescription");
63-
Assert.True(updatedChannel.Status == updatedData.ChannelStatus, "updatedChannel.Status != updatedData.ChannelStatus");
64-
Assert.True(updatedChannel.Type == updatedData.ChannelType, "updatedChannel.Type != updatedData.ChannelType");
59+
Assert.True(updatedChannel.Name == updatedData.Name, "updatedChannel.Name != updatedData.ChannelDescription");
60+
Assert.True(updatedChannel.Status == updatedData.Status, "updatedChannel.Status != updatedData.ChannelStatus");
61+
Assert.True(updatedChannel.Type == updatedData.Type, "updatedChannel.Type != updatedData.ChannelType");
6562
updateReset.Set();
6663
};
67-
await channel.Update(updatedData);
64+
TestUtils.AssertOperation(await channel.Update(updatedData));
6865
var updated = updateReset.WaitOne(15000);
6966
Assert.True(updated);
7067
}
7168

7269
[Test]
7370
public async Task TestDeleteChannel()
7471
{
75-
var channel = await chat.CreatePublicConversation();
72+
var channel = TestUtils.AssertOperation(await chat.CreatePublicConversation());
7673

7774
await Task.Delay(3000);
7875

79-
Assert.True(chat.TryGetChannel(channel.Id, out _), "Couldn't fetch created channel from chat");
80-
76+
var channelExists = await chat.GetChannel(channel.Id);
77+
Assert.False(channelExists.Error, "Couldn't fetch created channel from chat");
78+
8179
await channel.Delete();
8280

8381
await Task.Delay(3000);
8482

85-
Assert.False(chat.TryGetChannel(channel.Id, out _), "Fetched the supposedly-deleted channel from chat");
83+
var channelAfterDelete = await chat.GetChannel(channel.Id);
84+
Assert.True(channelAfterDelete.Error, "Fetched the supposedly-deleted channel from chat");
8685
}
8786

8887
[Test]
8988
public async Task TestLeaveChannel()
9089
{
91-
var currentChatUser = await chat.GetCurrentUser();
90+
var currentChatUser = TestUtils.AssertOperation(await chat.GetCurrentUser());
9291

9392
Assert.IsNotNull(currentChatUser, "currentChatUser was null");
9493

95-
var channel = await chat.CreatePublicConversation();
94+
var channel = TestUtils.AssertOperation(await chat.CreatePublicConversation());
9695
channel.Join();
9796

9897
await Task.Delay(3000);
9998

100-
var memberships = await channel.GetMemberships();
99+
var memberships = TestUtils.AssertOperation(await channel.GetMemberships());
101100

102101
Assert.True(memberships.Memberships.Any(x => x.UserId == currentChatUser.Id), "Join failed, current user not found in channel memberships");
103102

104103
channel.Leave();
105104

106105
await Task.Delay(3000);
107106

108-
memberships = await channel.GetMemberships();
107+
memberships = TestUtils.AssertOperation(await channel.GetMemberships());
109108

110109
Assert.False(memberships.Memberships.Any(x => x.UserId == currentChatUser.Id), "Leave failed, current user found in channel memberships");
111110
}
112111

113112
[Test]
114113
public async Task TestGetMemberships()
115114
{
116-
var channel = await chat.CreatePublicConversation("get_members_test_channel");
115+
var channel = TestUtils.AssertOperation(await chat.CreatePublicConversation("get_members_test_channel"));
117116
channel.Join();
118117
await Task.Delay(3500);
119-
var memberships = await channel.GetMemberships();
118+
var memberships = TestUtils.AssertOperation(await channel.GetMemberships());
120119
Assert.That(memberships.Memberships.Count, Is.GreaterThanOrEqualTo(1));
121120
}
122121

123122
[Test]
124123
public async Task TestStartTyping()
125124
{
126-
var channel = (await chat.CreateDirectConversation(talkUser, "sttc")).CreatedChannel;
125+
var channel = TestUtils.AssertOperation(await chat.CreateDirectConversation(talkUser, "sttc")).CreatedChannel;
127126
channel.Join();
128127
await Task.Delay(2500);
129128
channel.SetListeningForTyping(true);
@@ -136,7 +135,7 @@ public async Task TestStartTyping()
136135
Assert.That(typingUsers, Does.Contain(user.Id));
137136
typingManualEvent.Set();
138137
};
139-
await channel.StartTyping();
138+
TestUtils.AssertOperation(await channel.StartTyping());
140139

141140
var receivedTyping = typingManualEvent.WaitOne(12000);
142141
Assert.IsTrue(receivedTyping);
@@ -145,13 +144,13 @@ public async Task TestStartTyping()
145144
[Test]
146145
public async Task TestStopTyping()
147146
{
148-
var channel = (await chat.CreateDirectConversation(talkUser, "stop_typing_test_channel")).CreatedChannel;
147+
var channel = TestUtils.AssertOperation(await chat.CreateDirectConversation(talkUser, "stop_typing_test_channel")).CreatedChannel;
149148
channel.Join();
150149
await Task.Delay(2500);
151150
channel.SetListeningForTyping(true);
152151
await Task.Delay(2500);
153152

154-
await channel.StartTyping();
153+
TestUtils.AssertOperation(await channel.StartTyping());
155154

156155
await Task.Delay(2500);
157156

@@ -161,7 +160,7 @@ public async Task TestStopTyping()
161160
Assert.That(typingUsers, Is.Empty);
162161
typingManualEvent.Set();
163162
};
164-
await channel.StopTyping();
163+
TestUtils.AssertOperation(await channel.StopTyping());
165164

166165
var typingEvent = typingManualEvent.WaitOne(6000);
167166
Assert.IsTrue(typingEvent);
@@ -170,14 +169,14 @@ public async Task TestStopTyping()
170169
[Test]
171170
public async Task TestStopTypingFromTimer()
172171
{
173-
var channel = (await chat.CreateDirectConversation(talkUser, "stop_typing_timeout_test_channel")).CreatedChannel;
172+
var channel = TestUtils.AssertOperation(await chat.CreateDirectConversation(talkUser, "stop_typing_timeout_test_channel")).CreatedChannel;
174173
channel.Join();
175174
await Task.Delay(2500);
176175
channel.SetListeningForTyping(true);
177176

178177
await Task.Delay(4500);
179178

180-
await channel.StartTyping();
179+
TestUtils.AssertOperation(await channel.StartTyping());
181180

182181
await Task.Delay(3000);
183182

@@ -195,7 +194,7 @@ public async Task TestStopTypingFromTimer()
195194
[Test]
196195
public async Task TestPinMessage()
197196
{
198-
var channel = await chat.CreatePublicConversation("pin_message_test_channel_37");
197+
var channel = TestUtils.AssertOperation(await chat.CreatePublicConversation("pin_message_test_channel_37"));
199198
channel.Join();
200199
await Task.Delay(3500);
201200

@@ -206,7 +205,7 @@ public async Task TestPinMessage()
206205

207206
await Task.Delay(4000);
208207

209-
await channel.PinMessage(message);
208+
TestUtils.AssertOperation(await channel.PinMessage(message));
210209

211210
await Task.Delay(2000);
212211

@@ -222,18 +221,18 @@ public async Task TestPinMessage()
222221
[Test]
223222
public async Task TestUnPinMessage()
224223
{
225-
var channel = await chat.CreatePublicConversation("unpin_message_test_channel");
224+
var channel = TestUtils.AssertOperation(await chat.CreatePublicConversation("unpin_message_test_channel"));
226225
channel.Join();
227226
await Task.Delay(3500);
228227
var receivedManualEvent = new ManualResetEvent(false);
229228
channel.OnMessageReceived += async message =>
230229
{
231-
await channel.PinMessage(message);
230+
TestUtils.AssertOperation(await channel.PinMessage(message));
232231

233232
await Task.Delay(2000);
234233

235234
Assert.True(channel.TryGetPinnedMessage(out var pinnedMessage) && pinnedMessage.MessageText == "message to pin");
236-
await channel.UnpinMessage();
235+
TestUtils.AssertOperation(await channel.UnpinMessage());
237236

238237
await Task.Delay(2000);
239238

@@ -249,7 +248,7 @@ public async Task TestUnPinMessage()
249248
[Test]
250249
public async Task TestCreateMessageDraft()
251250
{
252-
var channel = await chat.CreatePublicConversation("message_draft_test_channel");
251+
var channel = TestUtils.AssertOperation(await chat.CreatePublicConversation("message_draft_test_channel"));
253252
try
254253
{
255254
var draft = channel.CreateMessageDraft();
@@ -264,7 +263,7 @@ public async Task TestCreateMessageDraft()
264263
[Test]
265264
public async Task TestEmitUserMention()
266265
{
267-
var channel = await chat.CreatePublicConversation("user_mention_test_channel");
266+
var channel = TestUtils.AssertOperation(await chat.CreatePublicConversation("user_mention_test_channel"));
268267
channel.Join();
269268
await Task.Delay(2500);
270269
var receivedManualEvent = new ManualResetEvent(false);
@@ -283,26 +282,71 @@ public async Task TestEmitUserMention()
283282
[Test]
284283
public async Task TestChannelIsPresent()
285284
{
286-
var someChannel = await chat.CreatePublicConversation();
285+
var someChannel = TestUtils.AssertOperation(await chat.CreatePublicConversation());
287286
someChannel.Join();
288287

289288
await Task.Delay(4000);
290289

291-
var isPresent = await someChannel.IsUserPresent(user.Id);
290+
var isPresent = TestUtils.AssertOperation(await someChannel.IsUserPresent(user.Id));
292291

293292
Assert.True(isPresent, "someChannel.IsUserPresent() doesn't return true for most recently joined channel!");
294293
}
295294

296295
[Test]
297296
public async Task TestChannelWhoIsPresent()
298297
{
299-
var someChannel = await chat.CreatePublicConversation();
298+
var someChannel = TestUtils.AssertOperation(await chat.CreatePublicConversation());
300299
someChannel.Join();
301300

302301
await Task.Delay(4000);
303302

304-
var who = await someChannel.WhoIsPresent();
303+
var who = TestUtils.AssertOperation(await someChannel.WhoIsPresent());
305304

306305
Assert.Contains(user.Id, who, "channel.WhoIsPresent() doesn't have most recently joine user!");
307306
}
307+
308+
[Test]
309+
public async Task TestPresenceCallback()
310+
{
311+
var someChannel = TestUtils.AssertOperation(await chat.CreatePublicConversation());
312+
someChannel.SetListeningForPresence(true);
313+
314+
var reset = new ManualResetEvent(false);
315+
someChannel.OnPresenceUpdate += userIds =>
316+
{
317+
Assert.True(userIds.Contains(user.Id), "presence callback doesn't contain joined user id");
318+
reset.Set();
319+
};
320+
someChannel.Join();
321+
var presenceReceived = reset.WaitOne(12000);
322+
323+
Assert.True(presenceReceived, "did not receive presence callback");
324+
}
325+
326+
[Test]
327+
public async Task TestReportCallback()
328+
{
329+
var someChannel = TestUtils.AssertOperation(await chat.CreatePublicConversation());
330+
someChannel.SetListeningForReportEvents(true);
331+
var reset = new ManualResetEvent(false);
332+
someChannel.OnReportEvent += reportEvent =>
333+
{
334+
var data = chat.PubnubInstance.JsonPluggableLibrary.DeserializeToDictionaryOfObject(reportEvent.Payload);
335+
Assert.True(data.TryGetValue("reason", out var reason) && reason.ToString() == "some_reason", "incorrect report reason received");
336+
reset.Set();
337+
};
338+
339+
someChannel.Join();
340+
await Task.Delay(3000);
341+
342+
someChannel.OnMessageReceived += async message =>
343+
{
344+
await message.Report("some_reason");
345+
};
346+
await someChannel.SendText("message_to_be_reported");
347+
348+
var reportReceived = reset.WaitOne(12000);
349+
350+
Assert.True(reportReceived, "did not receive report callback");
351+
}
308352
}

c-sharp-chat/PubnubChatApi/PubNubChatApi.Tests/ChatEventTests.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,13 @@ public class ChatEventTests
1616
[SetUp]
1717
public async Task Setup()
1818
{
19-
chat = await Chat.CreateInstance(new PubnubChatConfig(storeUserActivityTimestamp: true), new PNConfiguration(new UserId("event_tests_user"))
19+
chat = TestUtils.AssertOperation(await Chat.CreateInstance(new PubnubChatConfig(storeUserActivityTimestamp: true), new PNConfiguration(new UserId("event_tests_user"))
2020
{
2121
PublishKey = PubnubTestsParameters.PublishKey,
2222
SubscribeKey = PubnubTestsParameters.SubscribeKey
23-
});
24-
channel = await chat.CreatePublicConversation("event_tests_channel");
25-
if (!chat.TryGetCurrentUser(out user))
26-
{
27-
Assert.Fail();
28-
}
23+
}));
24+
channel = TestUtils.AssertOperation(await chat.CreatePublicConversation("event_tests_channel"));
25+
user = TestUtils.AssertOperation(await chat.GetCurrentUser());
2926
channel.Join();
3027
await Task.Delay(3500);
3128
}

0 commit comments

Comments
 (0)