File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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+
Original file line number Diff line number Diff line change @@ -11,15 +11,41 @@ import Testing
1111
1212@Suite ( " Observe Network Calls use case " )
1313struct 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
You can’t perform that action at this time.
0 commit comments