@@ -41,13 +41,17 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
4141
4242 func testChatAsync_GetUsers( ) async throws {
4343 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*' " )
4546
46- XCTAssertFalse (
47- users. users. isEmpty
47+ XCTAssertEqual (
48+ Set ( getUsersResponse. users. map { $0. id } ) ,
49+ Set ( [ user. id, secondUser. id] )
4850 )
51+
4952 addTeardownBlock { [ unowned self] in
5053 _ = try ? await chat. deleteUser ( id: user. id)
54+ _ = try ? await chat. deleteUser ( id: secondUser. id)
5155 }
5256 }
5357
@@ -97,6 +101,30 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
97101 }
98102 }
99103
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+
100128 func testChatAsync_WherePresent( ) async throws {
101129 let channelId = randomString ( )
102130 let channel = try await chat. createChannel ( id: channelId, name: channelId)
@@ -173,13 +201,17 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
173201
174202 func testChatAsync_GetChannels( ) async throws {
175203 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*' " )
177206
178- XCTAssertFalse (
179- retrievedChannels. channels. isEmpty
207+ XCTAssertEqual (
208+ Set ( getChannelsResponse. channels. map { $0. id } ) ,
209+ Set ( [ channel. id, secondChannel. id] )
180210 )
211+
181212 addTeardownBlock { [ unowned self] in
182213 _ = try ? await chat. deleteChannel ( id: channel. id)
214+ _ = try ? await chat. deleteChannel ( id: secondChannel. id)
183215 }
184216 }
185217
@@ -221,6 +253,30 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
221253 }
222254 }
223255
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+
224280 func testChatAsync_WhoIsPresent( ) async throws {
225281 let channel = try await chat. createChannel (
226282 id: randomString ( ) ,
0 commit comments