42 lines
1022 B
Swift
Executable File
42 lines
1022 B
Swift
Executable File
import ComposableArchitecture
|
|
import Foundation
|
|
import XCTest
|
|
|
|
@testable import Hex
|
|
|
|
@MainActor
|
|
final class HistoryPlaybackTests: XCTestCase {
|
|
func testStoppingPlaybackCompletesWaitersExactlyOnce() async {
|
|
let controller = AudioPlayerController()
|
|
let waiter = Task {
|
|
await controller.waitForPlaybackToFinish()
|
|
}
|
|
|
|
await Task.yield()
|
|
controller.stop()
|
|
controller.stop()
|
|
|
|
await waiter.value
|
|
await controller.waitForPlaybackToFinish()
|
|
}
|
|
|
|
func testStalePlaybackFinishedDoesNotStopCurrentPlayback() async {
|
|
let transcriptID = UUID()
|
|
let playbackID = UUID()
|
|
let store = TestStore(
|
|
initialState: HistoryFeature.State(
|
|
transcriptionHistory: Shared(value: .init()),
|
|
playingTranscriptID: transcriptID,
|
|
playbackID: playbackID
|
|
)
|
|
) {
|
|
HistoryFeature()
|
|
}
|
|
|
|
await store.send(.playbackFinished(UUID()))
|
|
|
|
XCTAssertEqual(store.state.playingTranscriptID, transcriptID)
|
|
XCTAssertEqual(store.state.playbackID, playbackID)
|
|
}
|
|
}
|