@@ -489,96 +489,103 @@ class IMMessageTestCase: RTMBaseTestCase {
489489 }
490490
491491 func testSendMessageToChatRoom( ) {
492- guard
493- let clientA = newOpenedClient ( ) ,
494- let clientB = newOpenedClient ( )
495- else
496- {
492+ guard let client1 = newOpenedClient ( clientIDSuffix: " 1 " ) ,
493+ let client2 = newOpenedClient ( clientIDSuffix: " 2 " , options: [ ] ) ,
494+ let client3 = newOpenedClient ( clientIDSuffix: " 3 " , options: [ ] ) else {
497495 XCTFail ( )
498496 return
499497 }
500498
501- let delegatorA = IMClientTestCase . Delegator ( )
502- clientA. delegate = delegatorA
503- let delegatorB = IMClientTestCase . Delegator ( )
504- clientB. delegate = delegatorB
505-
506- var chatRoomA : IMChatRoom ? = nil
507- var chatRoomB : IMChatRoom ? = nil
499+ let delegator1 = IMClientTestCase . Delegator ( )
500+ client1. delegate = delegator1
501+ let delegator2 = IMClientTestCase . Delegator ( )
502+ client2. delegate = delegator2
503+ let delegator3 = IMClientTestCase . Delegator ( )
504+ client3. delegate = delegator3
505+ var chatRoom1 : IMChatRoom ?
506+ var chatRoom2 : IMChatRoom ?
507+ var chatRoom3 : IMChatRoom ?
508508
509- let prepareExp = expectation ( description: " create chat room " )
510- prepareExp. expectedFulfillmentCount = 3
511- try ? clientA. createChatRoom ( completion: { ( result) in
512- XCTAssertTrue ( result. isSuccess)
513- XCTAssertNil ( result. error)
514- chatRoomA = result. value
515- prepareExp. fulfill ( )
516- if let ID = chatRoomA? . ID {
517- try ? clientB. conversationQuery. getConversation ( by: ID, completion: { ( result) in
518- XCTAssertTrue ( result. isSuccess)
519- XCTAssertNil ( result. error)
520- chatRoomB = result. value as? IMChatRoom
521- prepareExp. fulfill ( )
522- try ? chatRoomB? . join ( completion: { ( result) in
509+ expecting ( count: 5 ) { ( exp) in
510+ try ? client1. createChatRoom ( completion: { ( result) in
511+ XCTAssertTrue ( result. isSuccess)
512+ XCTAssertNil ( result. error)
513+ chatRoom1 = result. value
514+ exp. fulfill ( )
515+ if let ID = chatRoom1? . ID {
516+ try ? client2. conversationQuery. getConversation ( by: ID) { result in
523517 XCTAssertTrue ( result. isSuccess)
524518 XCTAssertNil ( result. error)
525- prepareExp. fulfill ( )
526- } )
527- } )
528- }
529- } )
530- wait ( for: [ prepareExp] , timeout: timeout)
519+ chatRoom2 = result. value as? IMChatRoom
520+ exp. fulfill ( )
521+ try ? chatRoom2? . join ( completion: { ( result) in
522+ XCTAssertTrue ( result. isSuccess)
523+ XCTAssertNil ( result. error)
524+ exp. fulfill ( )
525+ } )
526+ }
527+ try ? client3. conversationQuery. getConversation ( by: ID) { result in
528+ XCTAssertTrue ( result. isSuccess)
529+ XCTAssertNil ( result. error)
530+ chatRoom3 = result. value as? IMChatRoom
531+ exp. fulfill ( )
532+ try ? chatRoom3? . join ( completion: { ( result) in
533+ XCTAssertTrue ( result. isSuccess)
534+ XCTAssertNil ( result. error)
535+ exp. fulfill ( )
536+ } )
537+ }
538+ }
539+ } )
540+ }
531541
532- let sendExp = expectation ( description: " send message " )
533- sendExp. expectedFulfillmentCount = 12
534- delegatorA. messageEvent = { client, conv, event in
535- if conv === chatRoomA {
542+ expecting ( count: 6 ) { ( exp) in
543+ delegator1. messageEvent = { client, conv, event in
536544 switch event {
537- case . received( message: let message) :
538- XCTAssertEqual ( message. content? . string, " test " )
539- sendExp. fulfill ( )
545+ case . received( message: _) :
546+ exp. fulfill ( )
540547 default :
541548 break
542549 }
543550 }
544- }
545- delegatorB. messageEvent = { client, conv, event in
546- if conv === chatRoomB {
551+ delegator2. messageEvent = { client, conv, event in
547552 switch event {
548- case . received( message: let message) :
549- XCTAssertEqual ( message. content? . string, " test " )
550- sendExp. fulfill ( )
553+ case . received( message: _) :
554+ exp. fulfill ( )
551555 default :
552556 break
553557 }
554558 }
555- }
556- for messagePriority in
557- [ IMChatRoom . MessagePriority. high,
558- IMChatRoom . MessagePriority. normal,
559- IMChatRoom . MessagePriority. low]
560- {
561- let messageA = IMMessage ( )
562- try ? messageA. set ( content: . string( " test " ) )
563- ( ( try ? chatRoomA? . send ( message: messageA, priority: messagePriority, completion: { ( result) in
564- XCTAssertTrue ( result. isSuccess)
565- XCTAssertNil ( result. error)
566- sendExp. fulfill ( )
567- } ) ) as ( ) ?? )
568- let messageB = IMMessage ( )
569- try ? messageB. set ( content: . string( " test " ) )
570- ( ( try ? chatRoomB? . send ( message: messageB, priority: messagePriority, completion: { ( result) in
559+ delegator3. messageEvent = { client, conv, event in
560+ switch event {
561+ case . received( message: _) :
562+ exp. fulfill ( )
563+ default :
564+ break
565+ }
566+ }
567+ try ? chatRoom1? . send ( message: IMTextMessage ( text: " 1 " ) , priority: . high, completion: { ( result) in
571568 XCTAssertTrue ( result. isSuccess)
572569 XCTAssertNil ( result. error)
573- sendExp. fulfill ( )
574- } ) ) as ( ) ?? )
570+ exp. fulfill ( )
571+ try ? chatRoom2? . send ( message: IMTextMessage ( text: " 2 " ) , priority: . high, completion: { ( result) in
572+ XCTAssertTrue ( result. isSuccess)
573+ XCTAssertNil ( result. error)
574+ exp. fulfill ( )
575+ } )
576+ } )
575577 }
576- wait ( for: [ sendExp] , timeout: timeout)
577578
578- XCTAssertNil ( chatRoomA? . lastMessage)
579- XCTAssertNil ( chatRoomB? . lastMessage)
580- XCTAssertTrue ( ( chatRoomA? . members ?? [ ] ) . isEmpty)
581- XCTAssertTrue ( ( chatRoomB? . members ?? [ ] ) . isEmpty)
579+ delegator1. reset ( )
580+ delegator2. reset ( )
581+ delegator3. reset ( )
582+
583+ XCTAssertNil ( chatRoom1? . lastMessage)
584+ XCTAssertNil ( chatRoom2? . lastMessage)
585+ XCTAssertNil ( chatRoom3? . lastMessage)
586+ XCTAssertTrue ( ( chatRoom1? . members ?? [ ] ) . isEmpty)
587+ XCTAssertTrue ( ( chatRoom2? . members ?? [ ] ) . isEmpty)
588+ XCTAssertTrue ( ( chatRoom3? . members ?? [ ] ) . isEmpty)
582589 }
583590
584591 func testReceiveMessageFromServiceConversation( ) {
@@ -678,10 +685,10 @@ class IMMessageTestCase: RTMBaseTestCase {
678685 func testTextMessageSendingAndReceiving( ) {
679686 let message = IMTextMessage ( )
680687 message. text = " test "
681- let success = sendingAndReceiving ( sentMessage: message) { ( rMessage) in
688+ let success = sendingAndReceiving ( sentMessage: message, receivedMessageChecker : { ( rMessage) in
682689 XCTAssertNotNil ( rMessage? . text)
683690 XCTAssertEqual ( rMessage? . text, message. text)
684- }
691+ } )
685692 XCTAssertTrue ( success)
686693 }
687694
@@ -692,7 +699,7 @@ class IMMessageTestCase: RTMBaseTestCase {
692699 filePath: bundleResourceURL ( name: " test " , ext: format) . path,
693700 format: format
694701 )
695- XCTAssertTrue ( sendingAndReceiving ( sentMessage: outMessage) { ( inMessage) in
702+ XCTAssertTrue ( sendingAndReceiving ( sentMessage: outMessage, receivedMessageChecker : { ( inMessage) in
696703 XCTAssertNotNil ( inMessage? . file? . objectId? . value)
697704 XCTAssertEqual ( inMessage? . format, format)
698705 XCTAssertNotNil ( inMessage? . size)
@@ -705,7 +712,7 @@ class IMMessageTestCase: RTMBaseTestCase {
705712 XCTAssertEqual ( inMessage? . height, outMessage. height)
706713 XCTAssertEqual ( inMessage? . width, outMessage. width)
707714 XCTAssertEqual ( inMessage? . url, outMessage. url)
708- } )
715+ } ) )
709716 }
710717 }
711718
@@ -763,7 +770,7 @@ class IMMessageTestCase: RTMBaseTestCase {
763770 file. keepFileName = true
764771 file. name = name. lcString
765772 message. file = file
766- let success = sendingAndReceiving ( sentMessage: message) { ( rMessage) in
773+ let success = sendingAndReceiving ( sentMessage: message, receivedMessageChecker : { ( rMessage) in
767774 XCTAssertNotNil ( rMessage? . file? . objectId? . value)
768775 XCTAssertEqual ( rMessage? . name, name)
769776 XCTAssertEqual ( rMessage? . format, format)
@@ -773,7 +780,7 @@ class IMMessageTestCase: RTMBaseTestCase {
773780 XCTAssertEqual ( rMessage? . format, message. format)
774781 XCTAssertEqual ( rMessage? . size, message. size)
775782 XCTAssertEqual ( rMessage? . url, message. url)
776- }
783+ } )
777784 XCTAssertEqual ( message. name, name)
778785 XCTAssertEqual ( message. url? . absoluteString. hasSuffix ( name) , true )
779786 XCTAssertTrue ( success)
@@ -782,12 +789,12 @@ class IMMessageTestCase: RTMBaseTestCase {
782789 func testLocationMessageSendingAndReceiving( ) {
783790 let message = IMLocationMessage ( )
784791 message. location = LCGeoPoint ( latitude: 180.0 , longitude: 90.0 )
785- let success = sendingAndReceiving ( sentMessage: message) { ( rMessage) in
792+ let success = sendingAndReceiving ( sentMessage: message, receivedMessageChecker : { ( rMessage) in
786793 XCTAssertEqual ( rMessage? . latitude, 180.0 )
787794 XCTAssertEqual ( rMessage? . longitude, 90.0 )
788795 XCTAssertEqual ( rMessage? . latitude, message. latitude)
789796 XCTAssertEqual ( rMessage? . longitude, message. longitude)
790- }
797+ } )
791798 XCTAssertTrue ( success)
792799 }
793800
@@ -1463,15 +1470,21 @@ extension IMMessageTestCase {
14631470
14641471 func newOpenedClient(
14651472 clientID: String ? = nil ,
1466- options : IMClient . Options = [ . receiveUnreadMessageCountAfterSessionDidOpen ] )
1467- -> IMClient ?
1473+ clientIDSuffix : String ? = nil ,
1474+ options : IMClient . Options = [ . receiveUnreadMessageCountAfterSessionDidOpen ] ) -> IMClient ?
14681475 {
1469- var client : IMClient ? = try ? IMClient ( ID: clientID ?? uuid, options: options)
1476+ var ID = clientID ?? uuid
1477+ if let suffix = clientIDSuffix {
1478+ ID += " - \( suffix) "
1479+ }
1480+ var client : IMClient ? = try ? IMClient ( ID: ID, options: options)
14701481 let exp = expectation ( description: " open " )
14711482 client? . open { ( result) in
14721483 XCTAssertTrue ( result. isSuccess)
14731484 XCTAssertNil ( result. error)
1474- if result. isFailure { client = nil }
1485+ if result. isFailure {
1486+ client = nil
1487+ }
14751488 exp. fulfill ( )
14761489 }
14771490 wait ( for: [ exp] , timeout: timeout)
0 commit comments