mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-05 11:58:32 +00:00
Fix unit tests.
This commit is contained in:
@@ -14,14 +14,14 @@ import UIKit
|
||||
@MainActor
|
||||
struct PresenceServiceTests {
|
||||
let clientProxy: ClientProxyMock
|
||||
let appSettings: AppSettings
|
||||
let userSettings: UserSettings
|
||||
let notificationCenter: NotificationCenter
|
||||
|
||||
let sendsSubject = PassthroughSubject<(presence: ClientProxyPresence, sendImmediately: Bool), Never>()
|
||||
|
||||
init() {
|
||||
clientProxy = ClientProxyMock(.init())
|
||||
appSettings = AppSettings.volatile()
|
||||
userSettings = UserSettings.volatile()
|
||||
notificationCenter = NotificationCenter()
|
||||
|
||||
clientProxy.configurePresenceSendImmediatelyClosure = { [sendsSubject] presence, sendImmediately in
|
||||
@@ -32,14 +32,14 @@ struct PresenceServiceTests {
|
||||
|
||||
private func makeService(initialApplicationState: UIApplication.State) -> PresenceService {
|
||||
PresenceService(clientProxy: clientProxy,
|
||||
appSettings: appSettings,
|
||||
userSettings: userSettings,
|
||||
notificationCenter: notificationCenter,
|
||||
initialApplicationState: initialApplicationState)
|
||||
}
|
||||
|
||||
@Test
|
||||
func serviceSeededActiveWhileSharingReportsOnline() async throws {
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
|
||||
let deferred = deferFulfillment(sendsSubject) { $0.presence == .online }
|
||||
let service = makeService(initialApplicationState: .active)
|
||||
@@ -53,7 +53,7 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func serviceSeededBackgroundedWhileSharingReportsUnavailable() async throws {
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
|
||||
let deferred = deferFulfillment(sendsSubject) { $0.presence == .unavailable }
|
||||
let service = makeService(initialApplicationState: .background)
|
||||
@@ -66,7 +66,7 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func serviceSeededActiveWhileNotSharingReportsOffline() async throws {
|
||||
appSettings.sharePresence = false
|
||||
userSettings.sharePresence = false
|
||||
|
||||
let deferred = deferFulfillment(sendsSubject) { $0.presence == .offline }
|
||||
let service = makeService(initialApplicationState: .active)
|
||||
@@ -79,7 +79,7 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func becomingActiveNotificationWhileSharingReportsOnlineImmediately() async throws {
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
let service = makeService(initialApplicationState: .inactive)
|
||||
|
||||
let deferred = deferFulfillment(sendsSubject) { $0.presence == .online }
|
||||
@@ -93,7 +93,7 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func resigningActiveNotificationWhileSharingReportsUnavailableImmediately() async throws {
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
let initialDeferred = deferFulfillment(sendsSubject) { $0.presence == .online }
|
||||
let service = makeService(initialApplicationState: .active)
|
||||
_ = try await initialDeferred.fulfill()
|
||||
@@ -109,19 +109,19 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func togglingSharingWhileActiveDrivesOnlineAndOffline() async throws {
|
||||
appSettings.sharePresence = false
|
||||
userSettings.sharePresence = false
|
||||
let initialDeferred = deferFulfillment(sendsSubject) { $0.presence == .offline }
|
||||
let service = makeService(initialApplicationState: .active)
|
||||
_ = try await initialDeferred.fulfill()
|
||||
|
||||
let onlineDeferred = deferFulfillment(sendsSubject) { $0.presence == .online }
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
let online = try await onlineDeferred.fulfill()
|
||||
#expect(online.presence == .online)
|
||||
#expect(online.sendImmediately)
|
||||
|
||||
let offlineDeferred = deferFulfillment(sendsSubject) { $0.presence == .offline }
|
||||
appSettings.sharePresence = false
|
||||
userSettings.sharePresence = false
|
||||
let offline = try await offlineDeferred.fulfill()
|
||||
#expect(offline.presence == .offline)
|
||||
#expect(offline.sendImmediately)
|
||||
@@ -131,7 +131,7 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func repeatingTheSameStateSendsOnlyOnce() async throws {
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
|
||||
let initialDeferred = deferFulfillment(sendsSubject) { $0.presence == .online }
|
||||
let service = makeService(initialApplicationState: .active)
|
||||
@@ -148,7 +148,7 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func failedImmediateSendIsNotRetriedUntilTheDesiredPresenceChanges() async throws {
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
clientProxy.configurePresenceSendImmediatelyClosure = { [sendsSubject] presence, sendImmediately in
|
||||
sendsSubject.send((presence, sendImmediately))
|
||||
return presence == .online ? .failure(.forbiddenAccess) : .success(())
|
||||
@@ -173,7 +173,7 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func newerTransitionWinsWhenAnEarlierSendIsInFlight() async throws {
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
|
||||
let (onlineStartedStream, onlineStartedContinuation) = AsyncStream<Void>.makeStream()
|
||||
let (resumeOnlineSendStream, resumeOnlineSendContinuation) = AsyncStream<Void>.makeStream()
|
||||
@@ -206,7 +206,7 @@ struct PresenceServiceTests {
|
||||
|
||||
@Test
|
||||
func deinitCancelsPendingSend() async throws {
|
||||
appSettings.sharePresence = true
|
||||
userSettings.sharePresence = true
|
||||
|
||||
let (onlineStartedStream, onlineStartedContinuation) = AsyncStream.makeStream(of: Void.self)
|
||||
let (onlineFinishedStream, onlineFinishedContinuation) = AsyncStream.makeStream(of: Void.self)
|
||||
|
||||
Reference in New Issue
Block a user