Skip to content

Commit c660c0f

Browse files
committed
Add RTCAudioStore tests
1 parent 17f69b8 commit c660c0f

File tree

4 files changed

+47
-9
lines changed

4 files changed

+47
-9
lines changed

Sources/StreamVideo/Utils/AudioSession/RTCAudioStore/AudioSessions/AudioSessionProtocol.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import StreamWebRTC
88

99
protocol AudioSessionProtocol: AnyObject {
1010
var prefersNoInterruptionsFromSystemAlerts: Bool { get }
11+
1112
func setPrefersNoInterruptionsFromSystemAlerts(_ newValue: Bool) throws
1213

1314
var isActive: Bool { get }

Sources/StreamVideo/Utils/AudioSession/RTCAudioStore/RTCAudioStore.swift

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,12 @@ final class RTCAudioStore: @unchecked Sendable {
3636
underlyingQueue: dispatch_queue_t? = .global(qos: .userInteractive)
3737
) {
3838
self.session = session
39-
let prefersNoInterruptionsFromSystemAlerts = {
40-
if #available(iOS 14.5, *) {
41-
return session.prefersNoInterruptionsFromSystemAlerts
42-
} else {
43-
return false
44-
}
45-
}()
46-
39+
4740
stateSubject = .init(
4841
.init(
4942
isActive: session.isActive,
5043
isInterrupted: false,
51-
prefersNoInterruptionsFromSystemAlerts: prefersNoInterruptionsFromSystemAlerts,
44+
prefersNoInterruptionsFromSystemAlerts: session.prefersNoInterruptionsFromSystemAlerts,
5245
isAudioEnabled: session.isAudioEnabled,
5346
useManualAudio: session.useManualAudio,
5447
category: .init(rawValue: session.category),

StreamVideo.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,7 @@
718718
40D75C5C2E438633000E0438 /* AVAudioSessionRouteDescription+Dummy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D75C5B2E438633000E0438 /* AVAudioSessionRouteDescription+Dummy.swift */; };
719719
40D75C5F2E438AC0000E0438 /* CallKitAudioSessionReducer_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D75C5E2E438AC0000E0438 /* CallKitAudioSessionReducer_Tests.swift */; };
720720
40D75C612E438BBF000E0438 /* RTCAudioSessionReducer_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D75C602E438BBF000E0438 /* RTCAudioSessionReducer_Tests.swift */; };
721+
40D75C632E4396D2000E0438 /* RTCAudioStore_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D75C622E4396D2000E0438 /* RTCAudioStore_Tests.swift */; };
721722
40D946412AA5ECEF00C8861B /* CodeScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D946402AA5ECEF00C8861B /* CodeScanner.swift */; };
722723
40D946432AA5F65300C8861B /* DemoQRCodeScannerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D946422AA5F65300C8861B /* DemoQRCodeScannerButton.swift */; };
723724
40D946452AA5F67E00C8861B /* DemoCallingTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D946442AA5F67E00C8861B /* DemoCallingTopView.swift */; };
@@ -2249,6 +2250,7 @@
22492250
40D75C5B2E438633000E0438 /* AVAudioSessionRouteDescription+Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AVAudioSessionRouteDescription+Dummy.swift"; sourceTree = "<group>"; };
22502251
40D75C5E2E438AC0000E0438 /* CallKitAudioSessionReducer_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallKitAudioSessionReducer_Tests.swift; sourceTree = "<group>"; };
22512252
40D75C602E438BBF000E0438 /* RTCAudioSessionReducer_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RTCAudioSessionReducer_Tests.swift; sourceTree = "<group>"; };
2253+
40D75C622E4396D2000E0438 /* RTCAudioStore_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RTCAudioStore_Tests.swift; sourceTree = "<group>"; };
22522254
40D946402AA5ECEF00C8861B /* CodeScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeScanner.swift; sourceTree = "<group>"; };
22532255
40D946422AA5F65300C8861B /* DemoQRCodeScannerButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoQRCodeScannerButton.swift; sourceTree = "<group>"; };
22542256
40D946442AA5F67E00C8861B /* DemoCallingTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoCallingTopView.swift; sourceTree = "<group>"; };
@@ -5056,6 +5058,7 @@
50565058
children = (
50575059
40D75C5D2E438A9C000E0438 /* Reducers */,
50585060
40D75C502E437FB8000E0438 /* Effects */,
5061+
40D75C622E4396D2000E0438 /* RTCAudioStore_Tests.swift */,
50595062
);
50605063
path = RTCAudioStore;
50615064
sourceTree = "<group>";
@@ -8590,6 +8593,7 @@
85908593
4052BF552DBA830D0085AFA5 /* MockAppStateAdapter.swift in Sources */,
85918594
40D36ABE2DDDB77A00972D75 /* MockWebRTCStatsAdapter.swift in Sources */,
85928595
401338782BF248B9007318BD /* MockStreamVideo.swift in Sources */,
8596+
40D75C632E4396D2000E0438 /* RTCAudioStore_Tests.swift in Sources */,
85938597
84D114DA29F092E700BCCB0C /* CallController_Tests.swift in Sources */,
85948598
40FAAC8B2DDCB488007BF93A /* MockConsumableBucketItemTransformer.swift in Sources */,
85958599
40AF6A432C93585B00BA2935 /* WebRTCCoordinatorStateMachine_MigratedStageTests.swift in Sources */,
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//
2+
// Copyright © 2025 Stream.io Inc. All rights reserved.
3+
//
4+
5+
import Combine
6+
@testable import StreamVideo
7+
import StreamWebRTC
8+
import XCTest
9+
10+
final class RTCAudioStore_Tests: XCTestCase, @unchecked Sendable {
11+
12+
// MARK: - Properties
13+
14+
private lazy var subject: RTCAudioStore! = .init()
15+
16+
// MARK: - Lifecycle
17+
18+
override func tearDown() {
19+
subject = nil
20+
super.tearDown()
21+
}
22+
23+
// MARK: - init
24+
25+
func test_init_RTCAudioSessionReducerHasBeenAdded() {
26+
_ = subject
27+
28+
XCTAssertNotNil(subject.reducers.first(where: { $0 is RTCAudioSessionReducer }))
29+
}
30+
31+
func test_init_stateWasUpdatedCorrectly() async {
32+
_ = subject
33+
34+
await fulfillment {
35+
self.subject.state.prefersNoInterruptionsFromSystemAlerts == true
36+
&& self.subject.state.useManualAudio == true
37+
&& self.subject.state.isAudioEnabled == false
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)