From d7610d6ae35b4f2eb60803ef211a6935b58490ff Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Fri, 20 Dec 2024 16:29:04 -0300 Subject: [PATCH] fix FakeWebSocket --- Tests/RealtimeTests/FakeWebSocket.swift | 30 ++++++++++++++----------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/Tests/RealtimeTests/FakeWebSocket.swift b/Tests/RealtimeTests/FakeWebSocket.swift index b515bcb3..357f7ddd 100644 --- a/Tests/RealtimeTests/FakeWebSocket.swift +++ b/Tests/RealtimeTests/FakeWebSocket.swift @@ -3,13 +3,14 @@ import Foundation @testable import Realtime -public final class FakeWebSocket: WebSocket { +final class FakeWebSocket: WebSocket { struct MutableState { var isClosed: Bool = false weak var other: FakeWebSocket? var onEvent: (@Sendable (WebSocketEvent) -> Void)? var sentEvents: [WebSocketEvent] = [] + var receivedEvents: [WebSocketEvent] = [] var closeCode: Int? var closeReason: String? } @@ -20,23 +21,25 @@ public final class FakeWebSocket: WebSocket { self.`protocol` = `protocol` } - public var sentEvents: [WebSocketEvent] { + /// Events send by this connection. + var sentEvents: [WebSocketEvent] { mutableState.value.sentEvents } - public var receivedEvents: [WebSocketEvent] { - mutableState.value.other?.sentEvents ?? [] + /// Events received by this connection. + var receivedEvents: [WebSocketEvent] { + mutableState.value.receivedEvents } - public var closeCode: Int? { + var closeCode: Int? { mutableState.value.closeCode } - public var closeReason: String? { + var closeReason: String? { mutableState.value.closeReason } - public func close(code: Int?, reason: String?) { + func close(code: Int?, reason: String?) { mutableState.withValue { s in if s.isClosed { return } @@ -49,7 +52,7 @@ public final class FakeWebSocket: WebSocket { } } - public func send(_ text: String) { + func send(_ text: String) { mutableState.withValue { guard !$0.isClosed else { return } @@ -61,7 +64,7 @@ public final class FakeWebSocket: WebSocket { } } - public func send(_ binary: Data) { + func send(_ binary: Data) { mutableState.withValue { guard !$0.isClosed else { return } @@ -73,19 +76,20 @@ public final class FakeWebSocket: WebSocket { } } - public var onEvent: (@Sendable (WebSocketEvent) -> Void)? { + var onEvent: (@Sendable (WebSocketEvent) -> Void)? { get { mutableState.value.onEvent } set { mutableState.withValue { $0.onEvent = newValue } } } - public let `protocol`: String + let `protocol`: String - public var isClosed: Bool { + var isClosed: Bool { mutableState.value.isClosed } func _trigger(_ event: WebSocketEvent) { mutableState.withValue { + $0.receivedEvents.append(event) $0.onEvent?(event) if case .close(let code, let reason) = event { @@ -103,7 +107,7 @@ public final class FakeWebSocket: WebSocket { /// received by the other. /// /// This can be useful in constructing tests. - public static func fakes(`protocol`: String = "") -> (FakeWebSocket, FakeWebSocket) { + static func fakes(`protocol`: String = "") -> (FakeWebSocket, FakeWebSocket) { let (peer1, peer2) = (FakeWebSocket(protocol: `protocol`), FakeWebSocket(protocol: `protocol`)) peer1.mutableState.withValue { $0.other = peer2 }