Skip to content

Commit c237742

Browse files
committed
test: add test for closure based methods
1 parent cb09100 commit c237742

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

Tests/RealtimeTests/RealtimeTests.swift

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,38 @@ final class RealtimeTests: XCTestCase {
3333
)
3434
}
3535

36-
func testBehavior() async {
36+
func testBehavior_Closure() async {
37+
let channel = await sut.channel("public:messages")
38+
_ = await channel.onPostgresChange(InsertAction.self, table: "messages") { _ in }
39+
_ = await channel.onPostgresChange(UpdateAction.self, table: "messages") { _ in }
40+
_ = await channel.onPostgresChange(DeleteAction.self, table: "messages") { _ in }
41+
42+
let statusChange = await sut.statusChange
43+
44+
await connectSocketAndWait()
45+
46+
let status = await statusChange.prefix(3).collect()
47+
XCTAssertEqual(status, [.disconnected, .connecting, .connected])
48+
49+
let messageTask = await sut.messageTask
50+
XCTAssertNotNil(messageTask)
51+
52+
let heartbeatTask = await sut.heartbeatTask
53+
XCTAssertNotNil(heartbeatTask)
54+
55+
let subscription = Task {
56+
await channel.subscribe()
57+
}
58+
await Task.megaYield()
59+
ws.mockReceive(.messagesSubscribed)
60+
61+
// Wait until channel subscribed
62+
await subscription.value
63+
64+
XCTAssertNoDifference(ws.sentMessages.value, [.subscribeToMessages])
65+
}
66+
67+
func testBehavior_AsyncAwait() async {
3768
let channel = await sut.channel("public:messages")
3869
_ = await channel.postgresChange(InsertAction.self, table: "messages")
3970
_ = await channel.postgresChange(UpdateAction.self, table: "messages")

0 commit comments

Comments
 (0)