@@ -41,13 +41,17 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
41
41
42
42
func testChatAsync_GetUsers( ) async throws {
43
43
let user = try await chat. createUser ( id: randomString ( ) )
44
- let users = try await chat. getUsers ( limit: 10 )
44
+ let secondUser = try await chat. createUser ( id: randomString ( ) )
45
+ let getUsersResponse = try await chat. getUsers ( filter: " id LIKE 'swift-chat*' " )
45
46
46
- XCTAssertFalse (
47
- users. users. isEmpty
47
+ XCTAssertEqual (
48
+ Set ( getUsersResponse. users. map { $0. id } ) ,
49
+ Set ( [ user. id, secondUser. id] )
48
50
)
51
+
49
52
addTeardownBlock { [ unowned self] in
50
53
_ = try ? await chat. deleteUser ( id: user. id)
54
+ _ = try ? await chat. deleteUser ( id: secondUser. id)
51
55
}
52
56
}
53
57
@@ -97,6 +101,30 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
97
101
}
98
102
}
99
103
104
+ func testChatAsync_GetUsersWithPagination( ) async throws {
105
+ let user1 = try await chat. createUser ( id: randomString ( ) , name: " User1 " )
106
+ let user2 = try await chat. createUser ( id: randomString ( ) , name: " User2 " )
107
+ let user3 = try await chat. createUser ( id: randomString ( ) , name: " User3 " )
108
+
109
+ let firstPageResponse = try await chat. getUsers ( filter: " id LIKE 'swift-chat*' " , limit: 2 )
110
+ let secondPageResponse = try await chat. getUsers ( filter: " id LIKE 'swift-chat*' " , page: firstPageResponse. page)
111
+
112
+ XCTAssertTrue ( firstPageResponse. users. count == 2 )
113
+ XCTAssertTrue ( secondPageResponse. users. count == 1 )
114
+
115
+ let idsFromFirstPage = Set ( firstPageResponse. users. map { $0. id } )
116
+ let idsFromSecondPage = Set ( secondPageResponse. users. map { $0. id } )
117
+
118
+ XCTAssertTrue ( idsFromFirstPage. isDisjoint ( with: idsFromSecondPage) )
119
+ XCTAssertEqual ( idsFromSecondPage. union ( idsFromFirstPage) , Set ( [ user1. id, user2. id, user3. id] ) )
120
+
121
+ addTeardownBlock { [ unowned self] in
122
+ _ = try ? await chat. deleteUser ( id: user1. id)
123
+ _ = try ? await chat. deleteUser ( id: user2. id)
124
+ _ = try ? await chat. deleteUser ( id: user3. id)
125
+ }
126
+ }
127
+
100
128
func testChatAsync_WherePresent( ) async throws {
101
129
let channelId = randomString ( )
102
130
let channel = try await chat. createChannel ( id: channelId, name: channelId)
@@ -173,13 +201,17 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
173
201
174
202
func testChatAsync_GetChannels( ) async throws {
175
203
let channel = try await chat. createChannel ( id: randomString ( ) )
176
- let retrievedChannels = try await chat. getChannels ( )
204
+ let secondChannel = try await chat. createChannel ( id: randomString ( ) )
205
+ let getChannelsResponse = try await chat. getChannels ( filter: " id LIKE 'swift-chat*' " )
177
206
178
- XCTAssertFalse (
179
- retrievedChannels. channels. isEmpty
207
+ XCTAssertEqual (
208
+ Set ( getChannelsResponse. channels. map { $0. id } ) ,
209
+ Set ( [ channel. id, secondChannel. id] )
180
210
)
211
+
181
212
addTeardownBlock { [ unowned self] in
182
213
_ = try ? await chat. deleteChannel ( id: channel. id)
214
+ _ = try ? await chat. deleteChannel ( id: secondChannel. id)
183
215
}
184
216
}
185
217
@@ -221,6 +253,30 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
221
253
}
222
254
}
223
255
256
+ func testChatAsync_GetChannelsWithPagination( ) async throws {
257
+ let channel1 = try await chat. createChannel ( id: randomString ( ) , name: " Channel1 " )
258
+ let channel2 = try await chat. createChannel ( id: randomString ( ) , name: " Channel2 " )
259
+ let channel3 = try await chat. createChannel ( id: randomString ( ) , name: " Channel3 " )
260
+
261
+ let firstPageResponse = try await chat. getChannels ( filter: " id LIKE 'swift-chat*' " , limit: 2 )
262
+ let secondPageResponse = try await chat. getChannels ( filter: " id LIKE 'swift-chat*' " , page: firstPageResponse. page)
263
+
264
+ XCTAssertTrue ( firstPageResponse. channels. count == 2 )
265
+ XCTAssertTrue ( secondPageResponse. channels. count == 1 )
266
+
267
+ let idsFromFirstPage = Set ( firstPageResponse. channels. map { $0. id } )
268
+ let idsFromSecondPage = Set ( secondPageResponse. channels. map { $0. id } )
269
+
270
+ XCTAssertTrue ( idsFromFirstPage. isDisjoint ( with: idsFromSecondPage) )
271
+ XCTAssertEqual ( idsFromSecondPage. union ( idsFromFirstPage) , Set ( [ channel1. id, channel2. id, channel3. id] ) )
272
+
273
+ addTeardownBlock { [ unowned self] in
274
+ _ = try ? await chat. deleteChannel ( id: channel1. id)
275
+ _ = try ? await chat. deleteChannel ( id: channel2. id)
276
+ _ = try ? await chat. deleteChannel ( id: channel3. id)
277
+ }
278
+ }
279
+
224
280
func testChatAsync_WhoIsPresent( ) async throws {
225
281
let channel = try await chat. createChannel (
226
282
id: randomString ( ) ,
0 commit comments