@@ -23,60 +23,24 @@ final class StreamAudioSessionConfigurator_Tests: XCTestCase {
2323
2424 func test_activateRecordingSession_setCategoryFailedToComplete( ) {
2525 stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
26- stubAudioSession. stubProperty ( \. availableInputs, with: [ makeAvailableInput ( with: . builtInMic) ] )
2726 stubAudioSession. setCategoryResult = . failure( genericError)
2827
2928 XCTAssertThrowsError ( try subject. activateRecordingSession ( ) , genericError)
3029 }
3130
3231 func test_activateRecordingSession_setCategoryCompletedSuccessfully( ) throws {
3332 stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
34- stubAudioSession. stubProperty ( \. availableInputs, with: [ makeAvailableInput ( with: . builtInMic) ] )
3533
3634 try subject. activateRecordingSession ( )
3735
3836 XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithCategory, . playAndRecord)
3937 XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithMode, . spokenAudio)
4038 XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithPolicy, . default)
41- XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithOptions, [ ] )
42- }
43-
44- func test_activateRecordingSession_setUpPreferredInputFailedToCompleteDueToNoAvailableInput( ) {
45- stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
46- stubAudioSession. stubProperty ( \. availableInputs, with: [ ] )
47-
48- XCTAssertThrowsError ( try subject. activateRecordingSession ( ) ) { error in
49- XCTAssertEqual ( " No available audio inputs found. " , ( error as? AudioSessionConfiguratorError ) ? . message)
50- }
51- }
52-
53- func test_activateRecordingSession_setUpPreferredInputCompletedSuccessfully( ) throws {
54- stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
55- stubAudioSession. stubProperty ( \. availableInputs, with: [ makeAvailableInput ( with: . builtInMic) ] )
56-
57- try subject. activateRecordingSession ( )
58- }
59-
60- func test_activateRecordingSession_setOverrideOutputFailed( ) {
61- stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
62- stubAudioSession. stubProperty ( \. availableInputs, with: [ makeAvailableInput ( with: . builtInMic) ] )
63- stubAudioSession. overrideOutputAudioPortResult = . failure( genericError)
64-
65- XCTAssertThrowsError ( try subject. activateRecordingSession ( ) , genericError)
66- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, . speaker)
67- }
68-
69- func test_activateRecordingSession_setOverrideOutputCompletedSuccessfully( ) throws {
70- stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
71- stubAudioSession. stubProperty ( \. availableInputs, with: [ makeAvailableInput ( with: . builtInMic) ] )
72-
73- try subject. activateRecordingSession ( )
74- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, . speaker)
39+ XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithOptions, [ . allowBluetooth] )
7540 }
7641
7742 func test_activateRecordingSession_setActiveFailed( ) {
7843 stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
79- stubAudioSession. stubProperty ( \. availableInputs, with: [ makeAvailableInput ( with: . builtInMic) ] )
8044 stubAudioSession. setActiveResult = . failure( genericError)
8145
8246 XCTAssertThrowsError ( try subject. activateRecordingSession ( ) , genericError)
@@ -85,30 +49,13 @@ final class StreamAudioSessionConfigurator_Tests: XCTestCase {
8549
8650 func test_activateRecordingSession_setActiveCompletedSuccessfully( ) throws {
8751 stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
88- stubAudioSession. stubProperty ( \. availableInputs, with: [ makeAvailableInput ( with: . builtInMic) ] )
8952
9053 try subject. activateRecordingSession ( )
9154 XCTAssertTrue ( stubAudioSession. setActiveWasCalledWithActive ?? false )
9255 }
9356
9457 // MARK: - deactivateRecordingSession
9558
96- func test_deactivateRecordingSession_categoryIsRecord_setOverrideOutputFailed( ) {
97- stubAudioSession. stubProperty ( \. category, with: . record)
98- stubAudioSession. overrideOutputAudioPortResult = . failure( genericError)
99-
100- XCTAssertThrowsError ( try subject. deactivateRecordingSession ( ) , genericError)
101- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, AVAudioSession . PortOverride. none)
102- }
103-
104- func test_deactivateRecordingSession_categoryIsRecord_setOverrideOutputCompletedSuccessfully( ) throws {
105- stubAudioSession. stubProperty ( \. category, with: . record)
106-
107- try subject. deactivateRecordingSession ( )
108-
109- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, AVAudioSession . PortOverride. none)
110- }
111-
11259 func test_deactivateRecordingSession_categoryIsRecord_setActiveCompletedSuccesfully( ) throws {
11360 stubAudioSession. stubProperty ( \. category, with: . record)
11461
@@ -141,22 +88,6 @@ final class StreamAudioSessionConfigurator_Tests: XCTestCase {
14188 XCTAssertFalse ( stubAudioSession. setActiveWasCalledWithActive ?? true )
14289 }
14390
144- func test_deactivateRecordingSession_categoryIsPlayAndRecord_setOverrideOutputFailed( ) {
145- stubAudioSession. stubProperty ( \. category, with: . playAndRecord)
146- stubAudioSession. overrideOutputAudioPortResult = . failure( genericError)
147-
148- XCTAssertThrowsError ( try subject. deactivateRecordingSession ( ) , genericError)
149- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, AVAudioSession . PortOverride. none)
150- }
151-
152- func test_deactivateRecordingSession_categoryIsPlayAndRecord_setOverrideOutputCompletedSuccessfully( ) throws {
153- stubAudioSession. stubProperty ( \. category, with: . playAndRecord)
154-
155- try subject. deactivateRecordingSession ( )
156-
157- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, AVAudioSession . PortOverride. none)
158- }
159-
16091 // MARK: - activatePlaybackSession
16192
16293 func test_activatePlaybackSession_setCategoryFailedToComplete( ) {
@@ -174,23 +105,7 @@ final class StreamAudioSessionConfigurator_Tests: XCTestCase {
174105 XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithCategory, . playAndRecord)
175106 XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithMode, . default)
176107 XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithPolicy, . default)
177- XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithOptions, [ ] )
178- }
179-
180- func test_activatePlaybackSession_setOverrideOutputFailed( ) {
181- stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
182- stubAudioSession. overrideOutputAudioPortResult = . failure( genericError)
183-
184- XCTAssertThrowsError ( try subject. activatePlaybackSession ( ) , genericError)
185- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, . speaker)
186- }
187-
188- func test_activatePlaybackSession_setOverrideOutputCompletedSuccessfully( ) throws {
189- stubAudioSession. stubProperty ( \. category, with: . soloAmbient)
190-
191- try subject. activatePlaybackSession ( )
192-
193- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, . speaker)
108+ XCTAssertEqual ( stubAudioSession. setCategoryWasCalledWithOptions, [ . defaultToSpeaker, . allowBluetooth] )
194109 }
195110
196111 func test_activatePlaybackSession_setActiveFailed( ) {
@@ -226,22 +141,6 @@ final class StreamAudioSessionConfigurator_Tests: XCTestCase {
226141 XCTAssertFalse ( stubAudioSession. setActiveWasCalledWithActive ?? true )
227142 }
228143
229- func test_deactivatePlaybackSession_categoryIsPlayback_setOverrideOutputFailed( ) {
230- stubAudioSession. stubProperty ( \. category, with: . playAndRecord)
231- stubAudioSession. overrideOutputAudioPortResult = . failure( genericError)
232-
233- XCTAssertThrowsError ( try subject. deactivatePlaybackSession ( ) , genericError)
234- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, AVAudioSession . PortOverride. none)
235- }
236-
237- func test_deactivatePlaybackSession_categoryIsPlayback_setOverrideOutputCompletedSuccessfully( ) throws {
238- stubAudioSession. stubProperty ( \. category, with: . playAndRecord)
239-
240- try subject. deactivatePlaybackSession ( )
241-
242- XCTAssertEqual ( stubAudioSession. overrideOutputAudioPortWasCalledWithPortOverride, AVAudioSession . PortOverride. none)
243- }
244-
245144 func test_deactivatePlaybackSession_categoryIsPlayAndRecord_setActiveCompletedSuccesfully( ) throws {
246145 stubAudioSession. stubProperty ( \. category, with: . playAndRecord)
247146
@@ -265,24 +164,13 @@ final class StreamAudioSessionConfigurator_Tests: XCTestCase {
265164
266165 XCTAssertNotNil ( stubAudioSession. requestRecordPermissionWasCalledWithResponse)
267166 }
268-
269- // MARK: - Private Helpers
270-
271- private func makeAvailableInput(
272- with portType: AVAudioSession . Port
273- ) -> AVAudioSessionPortDescription {
274- let result = StubAVAudioSessionPortDescription ( )
275- result. stubProperty ( \. portType, with: portType)
276- return result
277- }
278167}
279168
280169@dynamicMemberLookup
281170private final class StubAVAudioSession : AudioSessionProtocol , Stub {
282171 var stubbedProperties : [ String : Any ] = [ : ]
283172
284173 @objc var category : AVAudioSession . Category { self [ dynamicMember: \. category] }
285- @objc var availableInputs : [ AVAudioSessionPortDescription ] ? { self [ dynamicMember: \. availableInputs] }
286174
287175 private( set) var setCategoryWasCalledWithCategory : AVAudioSession . Category ?
288176 private( set) var setCategoryWasCalledWithMode : AVAudioSession . Mode ?
@@ -296,9 +184,6 @@ private final class StubAVAudioSession: AudioSessionProtocol, Stub {
296184 private( set) var requestRecordPermissionWasCalledWithResponse : ( ( Bool ) -> Void ) ?
297185 var requestRecordPermissionResult : Bool = false
298186
299- private( set) var setPreferredInputWasCalledWithInPort : AVAudioSessionPortDescription ?
300- var setPreferredInputResult : Result < Void , Error > = . success( ( ) )
301-
302187 private( set) var overrideOutputAudioPortWasCalledWithPortOverride : AVAudioSession . PortOverride ?
303188 var overrideOutputAudioPortResult : Result < Void , Error > = . success( ( ) )
304189
@@ -340,17 +225,6 @@ private final class StubAVAudioSession: AudioSessionProtocol, Stub {
340225 response ( requestRecordPermissionResult)
341226 }
342227
343- func setPreferredInput( _ inPort: AVAudioSessionPortDescription ? ) throws {
344- setPreferredInputWasCalledWithInPort = inPort
345-
346- switch setCategoryResult {
347- case . success:
348- break
349- case let . failure( error) :
350- throw error
351- }
352- }
353-
354228 func overrideOutputAudioPort( _ portOverride: AVAudioSession . PortOverride ) throws {
355229 overrideOutputAudioPortWasCalledWithPortOverride = portOverride
356230 switch overrideOutputAudioPortResult {
@@ -361,10 +235,3 @@ private final class StubAVAudioSession: AudioSessionProtocol, Stub {
361235 }
362236 }
363237}
364-
365- @dynamicMemberLookup
366- private final class StubAVAudioSessionPortDescription : AVAudioSessionPortDescription , Stub , @unchecked Sendable {
367- var stubbedProperties : [ String : Any ] = [ : ]
368-
369- override var portType : AVAudioSession . Port { self [ dynamicMember: \. portType] }
370- }
0 commit comments