22using System . Collections ;
33using System . Collections . Generic ;
44using System . Linq ;
5+ using System . Threading ;
56using System . Threading . Tasks ;
67using NUnit . Framework ;
78using StreamChat . Core ;
@@ -336,6 +337,39 @@ private async Task When_user_added_to_not_watched_channel_expect_user_receive_ad
336337 Assert . AreEqual ( Client . LocalUserData . User , eventMember . User ) ;
337338 }
338339
340+ [ UnityTest ]
341+ public IEnumerator When_user_added_to_not_watched_channel_expect_user_receive_added_to_channel_event_from_main_thread ( )
342+ => ConnectAndExecute (
343+ When_user_added_to_not_watched_channel_expect_user_receive_added_to_channel_event_from_main_thread_Async ) ;
344+
345+ private async Task When_user_added_to_not_watched_channel_expect_user_receive_added_to_channel_event_from_main_thread_Async ( )
346+ {
347+ var channel = await CreateUniqueTempChannelAsync ( watch : false ) ;
348+
349+ var receivedEvent = false ;
350+ IStreamChannelMember eventMember = null ;
351+ IStreamChannel eventChannel = null ;
352+ var receivedEventThreadId = 0 ;
353+ Client . AddedToChannelAsMember += ( channel2 , member ) =>
354+ {
355+ receivedEvent = true ;
356+ eventMember = member ;
357+ eventChannel = channel2 ;
358+ receivedEventThreadId = GetCurrentThreadId ( ) ;
359+ } ;
360+
361+ await channel . AddMembersAsync ( hideHistory : default , optionalMessage : default , Client . LocalUserData . User ) ;
362+ await WaitWhileFalseAsync ( ( ) => receivedEvent ) ;
363+
364+ Assert . IsTrue ( receivedEvent ) ;
365+ Assert . IsNotNull ( eventChannel ) ;
366+ Assert . IsNotNull ( eventMember ) ;
367+ Assert . AreEqual ( channel , eventChannel ) ;
368+ Assert . AreEqual ( Client . LocalUserData . User , eventMember . User ) ;
369+
370+ Assert . AreEqual ( receivedEventThreadId , MainThreadId ) ;
371+ }
372+
339373 [ UnityTest ]
340374 public IEnumerator When_user_added_to_not_watched_channel_expect_received_channel_being_watched ( )
341375 => ConnectAndExecute (
@@ -349,11 +383,13 @@ private async Task When_user_added_to_not_watched_channel_expect_received_channe
349383 var receivedEvent = false ;
350384 IStreamChannelMember eventMember = null ;
351385 IStreamChannel eventChannel = null ;
386+ var eventThreadId = - 1 ;
352387 Client . AddedToChannelAsMember += ( channel2 , member ) =>
353388 {
354389 receivedEvent = true ;
355390 eventMember = member ;
356391 eventChannel = channel2 ;
392+ eventThreadId = GetCurrentThreadId ( ) ;
357393 } ;
358394
359395 await otherClientChannel . AddMembersAsync ( hideHistory : default , optionalMessage : default , Client . LocalUserData . User ) ;
@@ -364,15 +400,19 @@ private async Task When_user_added_to_not_watched_channel_expect_received_channe
364400 Assert . IsNotNull ( eventMember ) ;
365401 Assert . AreEqual ( otherClientChannel . Cid , eventChannel . Cid ) ;
366402 Assert . AreEqual ( Client . LocalUserData . User , eventMember . User ) ;
403+
404+ Assert . AreEqual ( MainThreadId , eventThreadId ) ;
367405
368406 var receivedMessageEvent = false ;
369407 var receivedMessage = string . Empty ;
370408 IStreamChannel receivedMessageChannel = null ;
409+ var messageEventThreadId = - 1 ;
371410 otherClientChannel . MessageReceived += ( messageChannel , message ) =>
372411 {
373412 receivedMessageEvent = true ;
374413 receivedMessage = message . Text ;
375414 receivedMessageChannel = messageChannel ;
415+ messageEventThreadId = GetCurrentThreadId ( ) ;
376416 } ;
377417
378418 await otherClientChannel . SendNewMessageAsync ( "Hello" ) ;
@@ -381,6 +421,8 @@ private async Task When_user_added_to_not_watched_channel_expect_received_channe
381421 Assert . IsTrue ( receivedMessageEvent ) ;
382422 Assert . AreEqual ( otherClientChannel . Cid , receivedMessageChannel . Cid ) ;
383423 Assert . AreEqual ( receivedMessage , "Hello" ) ;
424+
425+ Assert . AreEqual ( MainThreadId , messageEventThreadId ) ;
384426 }
385427
386428 [ UnityTest ]
0 commit comments