Skip to content

Commit 5d3d39d

Browse files
committed
[NetLens][Async stream helper test] - move wait for stream as standalone method
1 parent e739815 commit 5d3d39d

2 files changed

Lines changed: 49 additions & 24 deletions

File tree

Tests/NetLensTests/Helpers/WaitForStream+Async.swift

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,26 @@ enum AsyncTestError: Error {
1111
case timedOut
1212
}
1313

14-
extension AsyncStream {
15-
func waitForStreamValue<T:Sendable> (from stream: AsyncStream<T>, timeout: TimeInterval = 1.0) async throws -> T {
16-
try await withThrowingTaskGroup(of: T?.self) { group in
17-
18-
group.addTask {
19-
var iterator = stream.makeAsyncIterator()
20-
21-
return await iterator.next()
22-
}
23-
24-
guard let result = try await group.next() else {
25-
throw AsyncTestError.timedOut
26-
}
27-
28-
group.cancelAll()
29-
30-
guard let result else { throw AsyncTestError.timedOut }
14+
func waitForStreamValue<T:Sendable> (from stream: AsyncStream<T>, timeout: TimeInterval = 1.0) async throws -> T {
15+
try await withThrowingTaskGroup(of: T?.self) { group in
16+
17+
group.addTask {
18+
var iterator = stream.makeAsyncIterator()
3119

32-
return result
33-
20+
return await iterator.next()
21+
}
22+
23+
guard let result = try await group.next() else {
24+
throw AsyncTestError.timedOut
3425
}
26+
27+
group.cancelAll()
28+
29+
guard let result else { throw AsyncTestError.timedOut }
30+
31+
return result
32+
3533
}
3634
}
3735

36+

Tests/NetLensTests/UseCasesTests/ObserveNetworkCallsUseCaseSwiftTests.swift

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,41 @@ import Testing
1111

1212
@Suite("Observe Network Calls use case")
1313
struct ObserveNetworkCallsUseCaseSwiftTests {
14+
1415
private let mockNetworkrepository: MockNetworkCallRepository
15-
16-
private let getNetworkCallsUseCase: GetNetworkCallsUseCaseImpl
17-
16+
17+
private let observeNetworkCallsUseCase: ObserveNetworkCallsUseCaseImpl
18+
1819
init() {
19-
20+
2021
mockNetworkrepository = MockNetworkCallRepository()
22+
23+
observeNetworkCallsUseCase = ObserveNetworkCallsUseCaseImpl(networkCallRepository: mockNetworkrepository)
24+
}
25+
26+
@Test("Execute return stream from repository")
27+
func execureReturnstream() async throws {
28+
29+
let call = NetworkCallFactory.makeSuccessCall()
30+
31+
let stream = observeNetworkCallsUseCase.execute()
32+
33+
let streamTask = Task {
34+
try await waitForStreamValue(
35+
from: stream,
36+
timeout: 2.0
37+
)
38+
39+
}
40+
41+
await mockNetworkrepository.addNetworkCall(call)
42+
43+
let receivedCalls = try await streamTask.value
44+
45+
#expect(receivedCalls.count == 1)
46+
47+
#expect(receivedCalls.first?.id == call.id)
2148

22-
getNetworkCallsUseCase = GetNetworkCallsUseCaseImpl(networkCallRepository: mockNetworkrepository)
2349
}
2450

2551

0 commit comments

Comments
 (0)