Skip to content

Commit 1c01953

Browse files
committed
Add more integration tests
1 parent 9a20317 commit 1c01953

File tree

3 files changed

+435
-15
lines changed

3 files changed

+435
-15
lines changed

Tests/AsyncAwait/ChatAsyncIntegrationTests.swift

Lines changed: 62 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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(),

Tests/BaseIntegrationTestCase.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ class BaseIntegrationTestCase: XCTestCase {
1717
}
1818

1919
extension BaseIntegrationTestCase {
20-
func randomString(length: Int = 6) -> String {
21-
RandomStringGenerator().randomString(length: length)
20+
func randomString(length: Int = 6, withPrefix: Bool = true) -> String {
21+
let randomStr = RandomStringGenerator().randomString(length: length)
22+
return withPrefix ? "swift-chat" + randomStr : randomStr
2223
}
2324
}

0 commit comments

Comments
 (0)