@@ -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 ' \( Constants . prefix) *' " )
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 ' \( Constants . prefix) *' " , limit: 2 )
110+ let secondPageResponse = try await chat. getUsers ( filter: " id LIKE ' \( Constants . prefix) *' " , page: firstPageResponse. page)
111+
112+ XCTAssertEqual ( firstPageResponse. users. count, 2 )
113+ XCTAssertEqual ( 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)
@@ -168,18 +196,29 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
168196 let channel = try await chat. createChannel ( id: randomString ( ) , name: " ChannelName " )
169197 let retrievedChannel = try await chat. getChannel ( channelId: channel. id)
170198
171- XCTAssertEqual ( retrievedChannel? . id, channel. id)
199+ XCTAssertEqual (
200+ retrievedChannel? . id,
201+ channel. id
202+ )
203+
204+ addTeardownBlock { [ unowned self] in
205+ _ = try ? await chat. deleteChannel ( id: channel. id)
206+ }
172207 }
173208
174209 func testChatAsync_GetChannels( ) async throws {
175210 let channel = try await chat. createChannel ( id: randomString ( ) )
176- let retrievedChannels = try await chat. getChannels ( )
211+ let secondChannel = try await chat. createChannel ( id: randomString ( ) )
212+ let getChannelsResponse = try await chat. getChannels ( filter: " id LIKE ' \( Constants . prefix) *' " )
177213
178- XCTAssertFalse (
179- retrievedChannels. channels. isEmpty
214+ XCTAssertEqual (
215+ Set ( getChannelsResponse. channels. map { $0. id } ) ,
216+ Set ( [ channel. id, secondChannel. id] )
180217 )
218+
181219 addTeardownBlock { [ unowned self] in
182220 _ = try ? await chat. deleteChannel ( id: channel. id)
221+ _ = try ? await chat. deleteChannel ( id: secondChannel. id)
183222 }
184223 }
185224
@@ -221,6 +260,30 @@ class ChatAsyncIntegrationTests: BaseAsyncIntegrationTestCase {
221260 }
222261 }
223262
263+ func testChatAsync_GetChannelsWithPagination( ) async throws {
264+ let channel1 = try await chat. createChannel ( id: randomString ( ) , name: " Channel1 " )
265+ let channel2 = try await chat. createChannel ( id: randomString ( ) , name: " Channel2 " )
266+ let channel3 = try await chat. createChannel ( id: randomString ( ) , name: " Channel3 " )
267+
268+ let firstPageResponse = try await chat. getChannels ( filter: " id LIKE ' \( Constants . prefix) *' " , limit: 2 )
269+ let secondPageResponse = try await chat. getChannels ( filter: " id LIKE ' \( Constants . prefix) *' " , page: firstPageResponse. page)
270+
271+ XCTAssertEqual ( firstPageResponse. channels. count, 2 )
272+ XCTAssertEqual ( secondPageResponse. channels. count, 1 )
273+
274+ let idsFromFirstPage = Set ( firstPageResponse. channels. map { $0. id } )
275+ let idsFromSecondPage = Set ( secondPageResponse. channels. map { $0. id } )
276+
277+ XCTAssertTrue ( idsFromFirstPage. isDisjoint ( with: idsFromSecondPage) )
278+ XCTAssertEqual ( idsFromSecondPage. union ( idsFromFirstPage) , Set ( [ channel1. id, channel2. id, channel3. id] ) )
279+
280+ addTeardownBlock { [ unowned self] in
281+ _ = try ? await chat. deleteChannel ( id: channel1. id)
282+ _ = try ? await chat. deleteChannel ( id: channel2. id)
283+ _ = try ? await chat. deleteChannel ( id: channel3. id)
284+ }
285+ }
286+
224287 func testChatAsync_WhoIsPresent( ) async throws {
225288 let channel = try await chat. createChannel (
226289 id: randomString ( ) ,
0 commit comments