@@ -6,8 +6,12 @@ import Combine
6
6
7
7
final class ChatRoomsListViewModelTests : XCTestCase {
8
8
var subscription : AnyCancellable ?
9
- let chatsListMock = [ ChatListItemEntity ( chatId: 1 , title: " Chat1 " ) , ChatListItemEntity ( chatId: 3 , title: " Chat2 " ) , ChatListItemEntity ( chatId: 67 , title: " Chat3 " ) ]
10
- let meetingsListMock = [ ChatListItemEntity ( chatId: 11 , title: " Meeting 1 " ) , ChatListItemEntity ( chatId: 14 , title: " Meeting 2 " ) , ChatListItemEntity ( chatId: 51 , title: " Meeting 3 " ) ]
9
+ let chatsListMock = [ ChatListItemEntity ( chatId: 1 , title: " Chat1 " ) ,
10
+ ChatListItemEntity ( chatId: 3 , title: " Chat2 " ) ,
11
+ ChatListItemEntity ( chatId: 67 , title: " Chat3 " ) ]
12
+ let meetingsListMock = [ ChatListItemEntity ( chatId: 11 , title: " Meeting 1 " , meeting: true ) ,
13
+ ChatListItemEntity ( chatId: 14 , title: " Meeting 2 " , meeting: true ) ,
14
+ ChatListItemEntity ( chatId: 51 , title: " Meeting 3 " , meeting: true ) ]
11
15
12
16
func test_remoteChatStatusChange( ) {
13
17
let userHandle : HandleEntity = 100
@@ -53,25 +57,6 @@ final class ChatRoomsListViewModelTests: XCTestCase {
53
57
XCTAssert ( router. presentStartConversation_calledTimes == 1 )
54
58
}
55
59
56
- func testAction_selectChatsMode( ) {
57
- let viewModel = ChatRoomsListViewModel (
58
- chatUseCase: MockChatUseCase ( items: chatsListMock) ,
59
- chatViewMode: . meetings
60
- )
61
-
62
- viewModel. loadChatRoomsIfNeeded ( )
63
- viewModel. selectChatMode ( . chats)
64
-
65
- guard let chatRoomsCount = viewModel. displayChatRooms? . count else {
66
- XCTFail ( " No Chat Rooms, count should be equal to chatsListMock.count " )
67
- return
68
- }
69
-
70
- for index in 0 ..< chatRoomsCount {
71
- XCTAssert ( viewModel. displayChatRooms ? [ index] . chatListItem. chatId == chatsListMock [ index] . chatId)
72
- }
73
- }
74
-
75
60
func testSelectChatMode_inviteContactNow_shouldMatch( ) throws {
76
61
let router = MockChatRoomsListRouter ( )
77
62
let viewModel = ChatRoomsListViewModel ( router: router, chatViewMode: . meetings)
@@ -117,23 +102,47 @@ final class ChatRoomsListViewModelTests: XCTestCase {
117
102
XCTAssertTrue ( state. description == Strings . Localizable. seeWhoSAlreadyOnMEGA)
118
103
}
119
104
120
- func testAction_selectMeetingsMode( ) {
105
+ func testSelectChatsMode_inputAsChats_viewModelesShouldMatch( ) {
106
+ let mockList = chatsListMock
121
107
let viewModel = ChatRoomsListViewModel (
122
- chatUseCase: MockChatUseCase ( items: meetingsListMock ) ,
108
+ chatUseCase: MockChatUseCase ( items: mockList ) ,
123
109
chatViewMode: . meetings
124
110
)
125
-
126
111
viewModel. loadChatRoomsIfNeeded ( )
127
- viewModel. selectChatMode ( . chats)
112
+
113
+
114
+ let expectation = expectation ( description: " Compare the past meetings " )
115
+ subscription = viewModel
116
+ . $displayChatRooms
117
+ . dropFirst ( )
118
+ . sink {
119
+ XCTAssert ( mockList. map { ChatRoomViewModel ( chatListItem: $0) } == $0)
120
+ expectation. fulfill ( )
121
+ }
128
122
129
- guard let chatRoomsCount = viewModel. displayChatRooms? . count else {
130
- XCTFail ( " No Chat Rooms, count should be equal to chatsListMock.count " )
131
- return
132
- }
123
+ viewModel. selectChatMode ( . chats)
124
+ wait ( for: [ expectation] , timeout: 6 )
125
+ }
126
+
127
+ func testSelectChatsMode_inputAsMeeting_viewModelsShouldMatch( ) {
128
+ let mockList = meetingsListMock
129
+ let viewModel = ChatRoomsListViewModel (
130
+ chatUseCase: MockChatUseCase ( items: mockList) ,
131
+ chatViewMode: . chats
132
+ )
133
+ viewModel. loadChatRoomsIfNeeded ( )
133
134
134
- for index in 0 ..< chatRoomsCount {
135
- XCTAssert ( viewModel. displayChatRooms ? [ index] . chatListItem. chatId == meetingsListMock [ index] . chatId)
136
- }
135
+ let expectation = expectation ( description: " Compare the past meetings " )
136
+ subscription = viewModel
137
+ . $displayPastMeetings
138
+ . filter { $0? . count == 3 }
139
+ . sink {
140
+ XCTAssert ( mockList. map { ChatRoomViewModel ( chatListItem: $0) } == $0)
141
+ expectation. fulfill ( )
142
+ }
143
+
144
+ viewModel. selectChatMode ( . meetings)
145
+ wait ( for: [ expectation] , timeout: 6 )
137
146
}
138
147
139
148
func test_EmptyChatsList( ) {
0 commit comments