@@ -98,43 +98,52 @@ class MockUserAccountManager: UserAccountManaging {
9898}
9999
100100final class WebSocketClientTests : XCTestCase {
101+ var client : WebSocketClient ?
102+ var mockTask : MockWebSocket ?
103+
104+ override func tearDown( ) {
105+ client? . cancel ( )
106+ client = nil
107+ mockTask = nil
108+ super. tearDown ( )
109+ }
101110
102111 func testSendMessageSuccess( ) async {
103112 // Given
104- let mockTask = MockWebSocket ( )
105- let client = WebSocketClient ( task: mockTask)
113+ mockTask = MockWebSocket ( )
114+ client = WebSocketClient ( task: mockTask! )
106115 let message = URLSessionWebSocketTask . Message. string ( " test " )
107116
108117 // When
109118 do {
110- try await client. send ( message)
111- XCTAssertEqual ( mockTask. sentMessages. count, 1 )
119+ try await client? . send ( message)
120+ XCTAssertEqual ( mockTask? . sentMessages. count, 1 )
112121 } catch {
113122 XCTFail ( " Shouldn't send message: \( error) " )
114123 }
115124 }
116125
117126 func testCancelTask( ) {
118127 // Given
119- let mockTask = MockWebSocket ( )
120- let client = WebSocketClient ( task: mockTask)
128+ mockTask = MockWebSocket ( )
129+ client = WebSocketClient ( task: mockTask! )
121130
122131 // When
123- client. cancel ( )
132+ client? . cancel ( )
124133
125134 // Then
126- XCTAssertTrue ( mockTask. didCancel)
135+ XCTAssertTrue ( mockTask? . didCancel ?? false )
127136 }
128137
129138 func testListenReceivesSuccessMessage( ) {
130139
131140 // Given
132- let mockTask = MockWebSocket ( )
133- let client = WebSocketClient ( task: mockTask)
141+ mockTask = MockWebSocket ( )
142+ client = WebSocketClient ( task: mockTask! )
134143 let expectation = self . expectation ( description: " Message received " )
135144
136145 // When
137- client. listen { result in
146+ client? . listen { result in
138147 switch result {
139148 case . success( _) :
140149 // Then
@@ -148,20 +157,20 @@ final class WebSocketClientTests: XCTestCase {
148157
149158 func testListenReceivesFailureAndPerformRetryToSuccess( ) {
150159 // Given
151- let mockTask = MockWebSocket ( )
152- mockTask. shouldError. toggle ( )
153- mockTask. originalRequest = URLRequest ( url: URL ( string: " ws://mock.com " ) !)
160+ mockTask = MockWebSocket ( )
161+ mockTask? . shouldError. toggle ( )
162+ mockTask? . originalRequest = URLRequest ( url: URL ( string: " ws://mock.com " ) !)
154163 let mockNetwork = MockNetwork ( )
155164 mockNetwork. mockWebSocket = mockTask
156165 let mockAccountManager = MockUserAccountManager ( )
157- let client = WebSocketClient ( task: mockTask,
158- network: mockNetwork,
159- accountManager: mockAccountManager)
166+ client = WebSocketClient ( task: mockTask! ,
167+ network: mockNetwork,
168+ accountManager: mockAccountManager)
160169 let expectation = self . expectation ( description: " Success received " )
161170
162171 // When
163- client. listen { result in
164- mockTask. keepReceivingMessages. toggle ( )
172+ client? . listen { result in
173+ self . mockTask? . keepReceivingMessages. toggle ( )
165174 switch result {
166175 case . success( let message) :
167176 // Then
@@ -175,25 +184,29 @@ final class WebSocketClientTests: XCTestCase {
175184
176185 func testListenReceivesFailureAndPerformRetryToFailure( ) {
177186 // Given
178- let mockTask = MockWebSocket ( )
179- mockTask. shouldError. toggle ( )
180- mockTask. originalRequest = URLRequest ( url: URL ( string: " ws://mock.com " ) !)
187+ mockTask = MockWebSocket ( )
188+ mockTask? . shouldError. toggle ( )
189+ mockTask? . originalRequest = URLRequest ( url: URL ( string: " ws://mock.com " ) !)
181190 let mockAccountManager = MockUserAccountManager ( )
182191 mockAccountManager. shouldError. toggle ( )
183192 let mockNetwork = MockNetwork ( )
184193 mockNetwork. shouldError. toggle ( )
185- let client = WebSocketClient ( task: mockTask,
186- network: mockNetwork,
187- accountManager: mockAccountManager)
194+ client = WebSocketClient ( task: mockTask! ,
195+ network: mockNetwork,
196+ accountManager: mockAccountManager)
188197 let expectation = self . expectation ( description: " Error received " )
198+ var fulfilled = false
189199
190200 // When
191- client. listen { result in
201+ client? . listen { result in
192202 switch result {
193203 case . failure( let error) :
194204 // Then
195205 XCTAssertNotNil ( error)
196- expectation. fulfill ( )
206+ if !fulfilled {
207+ fulfilled = true
208+ expectation. fulfill ( )
209+ }
197210 default :
198211 XCTFail ( " Expected Failure " )
199212 }
0 commit comments