@@ -33,7 +33,38 @@ final class RealtimeTests: XCTestCase {
33
33
)
34
34
}
35
35
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 {
37
68
let channel = await sut. channel ( " public:messages " )
38
69
_ = await channel. postgresChange ( InsertAction . self, table: " messages " )
39
70
_ = await channel. postgresChange ( UpdateAction . self, table: " messages " )
0 commit comments