@@ -15,19 +15,16 @@ public class ChannelTests
15
15
[ SetUp ]
16
16
public async Task Setup ( )
17
17
{
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" ) )
19
19
{
20
20
PublishKey = PubnubTestsParameters . PublishKey ,
21
21
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 ( )
28
25
{
29
26
Username = "Testificate"
30
- } ) ;
27
+ } ) ) ;
31
28
talkUser = await chat . GetOrCreateUser ( "talk_user" ) ;
32
29
}
33
30
@@ -41,89 +38,91 @@ public async Task CleanUp()
41
38
[ Test ]
42
39
public async Task TestUpdateChannel ( )
43
40
{
44
- var channel = await chat . CreatePublicConversation ( ) ;
41
+ var channel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( ) ) ;
45
42
channel . SetListeningForUpdates ( true ) ;
46
43
47
44
await Task . Delay ( 3000 ) ;
48
45
49
46
var updateReset = new ManualResetEvent ( false ) ;
50
47
var updatedData = new ChatChannelData ( )
51
48
{
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"
57
54
} ;
58
55
channel . OnChannelUpdate += updatedChannel =>
59
56
{
60
- Assert . True ( updatedChannel . Description == updatedData . ChannelDescription , "updatedChannel.Description != updatedData.ChannelDescription" ) ;
57
+ Assert . True ( updatedChannel . Description == updatedData . Description , "updatedChannel.Description != updatedData.ChannelDescription" ) ;
61
58
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" ) ;
65
62
updateReset . Set ( ) ;
66
63
} ;
67
- await channel . Update ( updatedData ) ;
64
+ TestUtils . AssertOperation ( await channel . Update ( updatedData ) ) ;
68
65
var updated = updateReset . WaitOne ( 15000 ) ;
69
66
Assert . True ( updated ) ;
70
67
}
71
68
72
69
[ Test ]
73
70
public async Task TestDeleteChannel ( )
74
71
{
75
- var channel = await chat . CreatePublicConversation ( ) ;
72
+ var channel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( ) ) ;
76
73
77
74
await Task . Delay ( 3000 ) ;
78
75
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
+
81
79
await channel . Delete ( ) ;
82
80
83
81
await Task . Delay ( 3000 ) ;
84
82
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" ) ;
86
85
}
87
86
88
87
[ Test ]
89
88
public async Task TestLeaveChannel ( )
90
89
{
91
- var currentChatUser = await chat . GetCurrentUser ( ) ;
90
+ var currentChatUser = TestUtils . AssertOperation ( await chat . GetCurrentUser ( ) ) ;
92
91
93
92
Assert . IsNotNull ( currentChatUser , "currentChatUser was null" ) ;
94
93
95
- var channel = await chat . CreatePublicConversation ( ) ;
94
+ var channel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( ) ) ;
96
95
channel . Join ( ) ;
97
96
98
97
await Task . Delay ( 3000 ) ;
99
98
100
- var memberships = await channel . GetMemberships ( ) ;
99
+ var memberships = TestUtils . AssertOperation ( await channel . GetMemberships ( ) ) ;
101
100
102
101
Assert . True ( memberships . Memberships . Any ( x => x . UserId == currentChatUser . Id ) , "Join failed, current user not found in channel memberships" ) ;
103
102
104
103
channel . Leave ( ) ;
105
104
106
105
await Task . Delay ( 3000 ) ;
107
106
108
- memberships = await channel . GetMemberships ( ) ;
107
+ memberships = TestUtils . AssertOperation ( await channel . GetMemberships ( ) ) ;
109
108
110
109
Assert . False ( memberships . Memberships . Any ( x => x . UserId == currentChatUser . Id ) , "Leave failed, current user found in channel memberships" ) ;
111
110
}
112
111
113
112
[ Test ]
114
113
public async Task TestGetMemberships ( )
115
114
{
116
- var channel = await chat . CreatePublicConversation ( "get_members_test_channel" ) ;
115
+ var channel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( "get_members_test_channel" ) ) ;
117
116
channel . Join ( ) ;
118
117
await Task . Delay ( 3500 ) ;
119
- var memberships = await channel . GetMemberships ( ) ;
118
+ var memberships = TestUtils . AssertOperation ( await channel . GetMemberships ( ) ) ;
120
119
Assert . That ( memberships . Memberships . Count , Is . GreaterThanOrEqualTo ( 1 ) ) ;
121
120
}
122
121
123
122
[ Test ]
124
123
public async Task TestStartTyping ( )
125
124
{
126
- var channel = ( await chat . CreateDirectConversation ( talkUser , "sttc" ) ) . CreatedChannel ;
125
+ var channel = TestUtils . AssertOperation ( await chat . CreateDirectConversation ( talkUser , "sttc" ) ) . CreatedChannel ;
127
126
channel . Join ( ) ;
128
127
await Task . Delay ( 2500 ) ;
129
128
channel . SetListeningForTyping ( true ) ;
@@ -136,7 +135,7 @@ public async Task TestStartTyping()
136
135
Assert . That ( typingUsers , Does . Contain ( user . Id ) ) ;
137
136
typingManualEvent . Set ( ) ;
138
137
} ;
139
- await channel . StartTyping ( ) ;
138
+ TestUtils . AssertOperation ( await channel . StartTyping ( ) ) ;
140
139
141
140
var receivedTyping = typingManualEvent . WaitOne ( 12000 ) ;
142
141
Assert . IsTrue ( receivedTyping ) ;
@@ -145,13 +144,13 @@ public async Task TestStartTyping()
145
144
[ Test ]
146
145
public async Task TestStopTyping ( )
147
146
{
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 ;
149
148
channel . Join ( ) ;
150
149
await Task . Delay ( 2500 ) ;
151
150
channel . SetListeningForTyping ( true ) ;
152
151
await Task . Delay ( 2500 ) ;
153
152
154
- await channel . StartTyping ( ) ;
153
+ TestUtils . AssertOperation ( await channel . StartTyping ( ) ) ;
155
154
156
155
await Task . Delay ( 2500 ) ;
157
156
@@ -161,7 +160,7 @@ public async Task TestStopTyping()
161
160
Assert . That ( typingUsers , Is . Empty ) ;
162
161
typingManualEvent . Set ( ) ;
163
162
} ;
164
- await channel . StopTyping ( ) ;
163
+ TestUtils . AssertOperation ( await channel . StopTyping ( ) ) ;
165
164
166
165
var typingEvent = typingManualEvent . WaitOne ( 6000 ) ;
167
166
Assert . IsTrue ( typingEvent ) ;
@@ -170,14 +169,14 @@ public async Task TestStopTyping()
170
169
[ Test ]
171
170
public async Task TestStopTypingFromTimer ( )
172
171
{
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 ;
174
173
channel . Join ( ) ;
175
174
await Task . Delay ( 2500 ) ;
176
175
channel . SetListeningForTyping ( true ) ;
177
176
178
177
await Task . Delay ( 4500 ) ;
179
178
180
- await channel . StartTyping ( ) ;
179
+ TestUtils . AssertOperation ( await channel . StartTyping ( ) ) ;
181
180
182
181
await Task . Delay ( 3000 ) ;
183
182
@@ -195,7 +194,7 @@ public async Task TestStopTypingFromTimer()
195
194
[ Test ]
196
195
public async Task TestPinMessage ( )
197
196
{
198
- var channel = await chat . CreatePublicConversation ( "pin_message_test_channel_37" ) ;
197
+ var channel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( "pin_message_test_channel_37" ) ) ;
199
198
channel . Join ( ) ;
200
199
await Task . Delay ( 3500 ) ;
201
200
@@ -206,7 +205,7 @@ public async Task TestPinMessage()
206
205
207
206
await Task . Delay ( 4000 ) ;
208
207
209
- await channel . PinMessage ( message ) ;
208
+ TestUtils . AssertOperation ( await channel . PinMessage ( message ) ) ;
210
209
211
210
await Task . Delay ( 2000 ) ;
212
211
@@ -222,18 +221,18 @@ public async Task TestPinMessage()
222
221
[ Test ]
223
222
public async Task TestUnPinMessage ( )
224
223
{
225
- var channel = await chat . CreatePublicConversation ( "unpin_message_test_channel" ) ;
224
+ var channel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( "unpin_message_test_channel" ) ) ;
226
225
channel . Join ( ) ;
227
226
await Task . Delay ( 3500 ) ;
228
227
var receivedManualEvent = new ManualResetEvent ( false ) ;
229
228
channel . OnMessageReceived += async message =>
230
229
{
231
- await channel . PinMessage ( message ) ;
230
+ TestUtils . AssertOperation ( await channel . PinMessage ( message ) ) ;
232
231
233
232
await Task . Delay ( 2000 ) ;
234
233
235
234
Assert . True ( channel . TryGetPinnedMessage ( out var pinnedMessage ) && pinnedMessage . MessageText == "message to pin" ) ;
236
- await channel . UnpinMessage ( ) ;
235
+ TestUtils . AssertOperation ( await channel . UnpinMessage ( ) ) ;
237
236
238
237
await Task . Delay ( 2000 ) ;
239
238
@@ -249,7 +248,7 @@ public async Task TestUnPinMessage()
249
248
[ Test ]
250
249
public async Task TestCreateMessageDraft ( )
251
250
{
252
- var channel = await chat . CreatePublicConversation ( "message_draft_test_channel" ) ;
251
+ var channel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( "message_draft_test_channel" ) ) ;
253
252
try
254
253
{
255
254
var draft = channel . CreateMessageDraft ( ) ;
@@ -264,7 +263,7 @@ public async Task TestCreateMessageDraft()
264
263
[ Test ]
265
264
public async Task TestEmitUserMention ( )
266
265
{
267
- var channel = await chat . CreatePublicConversation ( "user_mention_test_channel" ) ;
266
+ var channel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( "user_mention_test_channel" ) ) ;
268
267
channel . Join ( ) ;
269
268
await Task . Delay ( 2500 ) ;
270
269
var receivedManualEvent = new ManualResetEvent ( false ) ;
@@ -283,26 +282,71 @@ public async Task TestEmitUserMention()
283
282
[ Test ]
284
283
public async Task TestChannelIsPresent ( )
285
284
{
286
- var someChannel = await chat . CreatePublicConversation ( ) ;
285
+ var someChannel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( ) ) ;
287
286
someChannel . Join ( ) ;
288
287
289
288
await Task . Delay ( 4000 ) ;
290
289
291
- var isPresent = await someChannel . IsUserPresent ( user . Id ) ;
290
+ var isPresent = TestUtils . AssertOperation ( await someChannel . IsUserPresent ( user . Id ) ) ;
292
291
293
292
Assert . True ( isPresent , "someChannel.IsUserPresent() doesn't return true for most recently joined channel!" ) ;
294
293
}
295
294
296
295
[ Test ]
297
296
public async Task TestChannelWhoIsPresent ( )
298
297
{
299
- var someChannel = await chat . CreatePublicConversation ( ) ;
298
+ var someChannel = TestUtils . AssertOperation ( await chat . CreatePublicConversation ( ) ) ;
300
299
someChannel . Join ( ) ;
301
300
302
301
await Task . Delay ( 4000 ) ;
303
302
304
- var who = await someChannel . WhoIsPresent ( ) ;
303
+ var who = TestUtils . AssertOperation ( await someChannel . WhoIsPresent ( ) ) ;
305
304
306
305
Assert . Contains ( user . Id , who , "channel.WhoIsPresent() doesn't have most recently joine user!" ) ;
307
306
}
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
+ }
308
352
}
0 commit comments