diff --git a/UnitTests/Sources/AnalyticsSettingsScreenViewModelTests.swift b/UnitTests/Sources/AnalyticsSettingsScreenViewModelTests.swift index 1bde76ed3..86ce54456 100644 --- a/UnitTests/Sources/AnalyticsSettingsScreenViewModelTests.swift +++ b/UnitTests/Sources/AnalyticsSettingsScreenViewModelTests.swift @@ -23,7 +23,7 @@ final class AnalyticsSettingsScreenViewModelTests { client.isRunning = false analytics = AnalyticsService(client: client, appSettings: appSettings) - viewModel = AnalyticsSettingsScreenViewModel(appSettings: appSettings, + viewModel = AnalyticsSettingsScreenViewModel(userSettings: UserSettings(appSettings: appSettings, accountSettings: .init()), analytics: analytics) context = viewModel.context } diff --git a/UnitTests/Sources/BugReportServiceTests.swift b/UnitTests/Sources/BugReportServiceTests.swift index 950444eb0..858f6d840 100644 --- a/UnitTests/Sources/BugReportServiceTests.swift +++ b/UnitTests/Sources/BugReportServiceTests.swift @@ -13,12 +13,12 @@ import Testing @MainActor final class BugReportServiceTests { - var appSettings: AppSettings! + var userSettings: UserSettings! var bugReportService: BugReportServiceProtocol! init() throws { - appSettings = AppSettings.volatile() - appSettings.bugReportRageshakeURL.reset() + userSettings = UserSettings.volatile() + userSettings.bugReportRageshakeURL.reset() let bugReportServiceMock = BugReportServiceMock() bugReportServiceMock.lastCrashEventIDSubject = .init(nil) @@ -27,7 +27,7 @@ final class BugReportServiceTests { } deinit { - appSettings.bugReportRageshakeURL.reset() + userSettings.bugReportRageshakeURL.reset() } @Test @@ -104,22 +104,22 @@ final class BugReportServiceTests { @Test @MainActor func configurations() async throws { - guard case let .url(initialURL) = appSettings.bugReportRageshakeURL.publisher.value else { + guard case let .url(initialURL) = userSettings.bugReportRageshakeURL.publisher.value else { Issue.record("Unexpected initial configuration.") return } - let service = BugReportService(rageshakeURLPublisher: appSettings.bugReportRageshakeURL.publisher, + let service = BugReportService(rageshakeURLPublisher: userSettings.bugReportRageshakeURL.publisher, applicationID: "mock_app_id", sdkGitSHA: "1234", session: .mock, appHooks: AppHooks()) #expect(service.isEnabled) - appSettings.bugReportRageshakeURL.applyRemoteValue(.disabled) + userSettings.bugReportRageshakeURL.applyRemoteValue(.disabled) #expect(!service.isEnabled) - appSettings.bugReportRageshakeURL.applyRemoteValue(.url("https://bugs.server.net/submit")) + userSettings.bugReportRageshakeURL.applyRemoteValue(.url("https://bugs.server.net/submit")) #expect(service.isEnabled) let bugReport = BugReport(userID: "@mock:client.com", @@ -136,7 +136,7 @@ final class BugReportServiceTests { #expect(customConfigurationResponse.reportURL == "https://bugs.server.net/123") - appSettings.bugReportRageshakeURL.reset() + userSettings.bugReportRageshakeURL.reset() #expect(service.isEnabled) let defaultConfigurationResponse = try await service.submitBugReport(bugReport, progressListener: progressSubject).get() diff --git a/UnitTests/Sources/ChatsTabFlowCoordinatorTests.swift b/UnitTests/Sources/ChatsTabFlowCoordinatorTests.swift index fd47902bc..9e4f77e83 100644 --- a/UnitTests/Sources/ChatsTabFlowCoordinatorTests.swift +++ b/UnitTests/Sources/ChatsTabFlowCoordinatorTests.swift @@ -29,7 +29,7 @@ struct ChatsTabFlowCoordinatorTests { } init() async throws { - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() clientProxy = ClientProxyMock(.init(userID: "hi@bob", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))) timelineControllerFactory = TimelineControllerFactoryMock(.init()) @@ -42,10 +42,10 @@ struct ChatsTabFlowCoordinatorTests { bugReportService: BugReportServiceMock(.init()), elementCallService: ElementCallServiceMock(.init()), timelineControllerFactory: timelineControllerFactory, - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: userSettings), linkMetadataProvider: LinkMetadataProvider(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, + userSettings: userSettings, appHooks: AppHooks(), analytics: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), diff --git a/UnitTests/Sources/ComposerToolbarViewModelTests.swift b/UnitTests/Sources/ComposerToolbarViewModelTests.swift index cc043a3d6..bc1bb60ae 100644 --- a/UnitTests/Sources/ComposerToolbarViewModelTests.swift +++ b/UnitTests/Sources/ComposerToolbarViewModelTests.swift @@ -84,14 +84,14 @@ final class ComposerToolbarViewModelTests { .init(suggestionType: .user(.init(id: "@user_mention_2:matrix.org", displayName: "User 2", avatarURL: nil)), range: .init(), rawSuggestionText: "")] let mockCompletionSuggestionService = CompletionSuggestionServiceMock(configuration: .init(suggestions: suggestions)) - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() viewModel = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), wysiwygViewModel: wysiwygViewModel, completionSuggestionService: mockCompletionSuggestionService, mediaProvider: MediaProviderMock(.init()), mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: appSettings, + userSettings: userSettings, analyticsService: AnalyticsServiceMock(.init()), composerDraftService: draftServiceMock) @@ -803,14 +803,14 @@ final class ComposerToolbarViewModelTests { let mockSubject = CurrentValueSubject<[IdentityStatusChange], Never>([]) roomProxyMock.identityStatusChangesPublisher = mockSubject.asCurrentValuePublisher() - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() viewModel = ComposerToolbarViewModel(roomProxy: roomProxyMock, wysiwygViewModel: wysiwygViewModel, completionSuggestionService: mockCompletionSuggestionService, mediaProvider: MediaProviderMock(.init()), mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: appSettings, + userSettings: userSettings, analyticsService: AnalyticsServiceMock(.init()), composerDraftService: draftServiceMock) @@ -846,14 +846,14 @@ final class ComposerToolbarViewModelTests { roomProxyMock.identityStatusChangesPublisher = mockSubject.asCurrentValuePublisher() - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() viewModel = ComposerToolbarViewModel(roomProxy: roomProxyMock, wysiwygViewModel: wysiwygViewModel, completionSuggestionService: mockCompletionSuggestionService, mediaProvider: MediaProviderMock(.init()), mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: appSettings, + userSettings: userSettings, analyticsService: AnalyticsServiceMock(.init()), composerDraftService: draftServiceMock) @@ -886,14 +886,14 @@ final class ComposerToolbarViewModelTests { } roomProxyMock.identityStatusChangesPublisher = CurrentValueSubject([IdentityStatusChange(userId: "@alice:localhost", changedTo: .pinViolation)]).asCurrentValuePublisher() - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() viewModel = ComposerToolbarViewModel(roomProxy: roomProxyMock, wysiwygViewModel: wysiwygViewModel, completionSuggestionService: mockCompletionSuggestionService, mediaProvider: MediaProviderMock(.init()), mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: appSettings, + userSettings: userSettings, analyticsService: AnalyticsServiceMock(.init()), composerDraftService: draftServiceMock) @@ -923,7 +923,7 @@ final class ComposerToolbarViewModelTests { draftServiceMock.loadDraftClosure = loadDraftClosure } - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() viewModel = ComposerToolbarViewModel(initialText: initialText, roomProxy: JoinedRoomProxyMock(.init()), @@ -931,7 +931,7 @@ final class ComposerToolbarViewModelTests { completionSuggestionService: completionSuggestionServiceMock, mediaProvider: MediaProviderMock(.init()), mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: appSettings, + userSettings: userSettings, analyticsService: AnalyticsServiceMock(.init()), composerDraftService: draftServiceMock) viewModel.context.composerFormattingEnabled = true diff --git a/UnitTests/Sources/CreateRoomViewModelTests.swift b/UnitTests/Sources/CreateRoomViewModelTests.swift index a3e0cc801..5dc7c6199 100644 --- a/UnitTests/Sources/CreateRoomViewModelTests.swift +++ b/UnitTests/Sources/CreateRoomViewModelTests.swift @@ -17,14 +17,14 @@ final class CreateRoomScreenViewModelTests { var spaceService: SpaceServiceProxyMock! var userSession: UserSessionMock! - private let appSettings: AppSettings + private let userSettings: UserSettings var context: CreateRoomScreenViewModel.Context { viewModel.context } init() { - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() } isolated deinit { @@ -85,14 +85,14 @@ final class CreateRoomScreenViewModelTests { spaceServiceConfiguration: .init(spaceRoomLists: ["1": .init()]))) clientProxy.roomForIdentifierClosure = { roomID in .joined(JoinedRoomProxyMock(.init(id: roomID))) } userSession = UserSessionMock(.init(clientProxy: clientProxy)) - appSettings.knockingEnabled = true + userSettings.knockingEnabled = true let viewModel = CreateRoomScreenViewModel(isSpace: true, spaceSelectionMode: .none, shouldShowCancelButton: false, userSession: userSession, analytics: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), - appSettings: appSettings) + userSettings: userSettings) self.viewModel = viewModel // Given a form with a blank topic. @@ -335,14 +335,14 @@ final class CreateRoomScreenViewModelTests { clientProxy.spaceService = spaceService clientProxy.roomForIdentifierClosure = { roomID in .joined(JoinedRoomProxyMock(.init(id: roomID))) } userSession = UserSessionMock(.init(clientProxy: clientProxy)) - appSettings.knockingEnabled = true + userSettings.knockingEnabled = true let viewModel = CreateRoomScreenViewModel(isSpace: isSpace, spaceSelectionMode: spacesSelectionMode, shouldShowCancelButton: false, userSession: userSession, analytics: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), - appSettings: appSettings) + userSettings: userSettings) self.viewModel = viewModel } } diff --git a/UnitTests/Sources/EmojiPickerScreenViewModelTests.swift b/UnitTests/Sources/EmojiPickerScreenViewModelTests.swift index 12520222f..b869dd14f 100644 --- a/UnitTests/Sources/EmojiPickerScreenViewModelTests.swift +++ b/UnitTests/Sources/EmojiPickerScreenViewModelTests.swift @@ -55,7 +55,7 @@ struct EmojiPickerScreenViewModelTests { emojiPickerStream = stream viewModel = EmojiPickerScreenViewModel(selectedEmojis: selectedEmojis, - emojiProvider: EmojiProvider(appSettings: .volatile()), + emojiProvider: EmojiProvider(userSettings: .volatile()), continuation: continuation) } } diff --git a/UnitTests/Sources/EmojiProviderTests.swift b/UnitTests/Sources/EmojiProviderTests.swift index 782837205..4fedb5fc0 100644 --- a/UnitTests/Sources/EmojiProviderTests.swift +++ b/UnitTests/Sources/EmojiProviderTests.swift @@ -19,7 +19,7 @@ struct EmojiProviderTests { let emojiLoaderMock = EmojiLoaderMock() emojiLoaderMock.categories = [category] - let emojiProvider = EmojiProvider(loader: emojiLoaderMock, appSettings: .volatile()) + let emojiProvider = EmojiProvider(loader: emojiLoaderMock, userSettings: .volatile()) let categories = await emojiProvider.categories() #expect(emojiLoaderMock.categories == categories) @@ -33,7 +33,7 @@ struct EmojiProviderTests { let emojiLoaderMock = EmojiLoaderMock() emojiLoaderMock.categories = [category] - let emojiProvider = EmojiProvider(loader: emojiLoaderMock, appSettings: .volatile()) + let emojiProvider = EmojiProvider(loader: emojiLoaderMock, userSettings: .volatile()) let categories = await emojiProvider.categories(searchString: "") #expect(emojiLoaderMock.categories == categories) @@ -51,7 +51,7 @@ struct EmojiProviderTests { let emojiLoaderMock = EmojiLoaderMock() emojiLoaderMock.categories = categoriesForFirstLoad - let emojiProvider = EmojiProvider(loader: emojiLoaderMock, appSettings: .volatile()) + let emojiProvider = EmojiProvider(loader: emojiLoaderMock, userSettings: .volatile()) _ = await emojiProvider.categories() emojiLoaderMock.categories = categoriesForSecondLoad @@ -82,7 +82,7 @@ struct EmojiProviderTests { let emojiLoaderMock = EmojiLoaderMock() emojiLoaderMock.categories = categories - let emojiProvider = EmojiProvider(loader: emojiLoaderMock, appSettings: .volatile()) + let emojiProvider = EmojiProvider(loader: emojiLoaderMock, userSettings: .volatile()) _ = await emojiProvider.categories() let result = await emojiProvider.categories(searchString: searchString) diff --git a/UnitTests/Sources/HomeScreenViewModelTests.swift b/UnitTests/Sources/HomeScreenViewModelTests.swift index 915deb332..ab06aa135 100644 --- a/UnitTests/Sources/HomeScreenViewModelTests.swift +++ b/UnitTests/Sources/HomeScreenViewModelTests.swift @@ -20,12 +20,12 @@ final class HomeScreenViewModelTests { var clientProxy: ClientProxyMock! var roomSummaryProvider: RoomSummaryProviderMock! var notificationManager: NotificationManagerMock! - private let appSettings: AppSettings + private let userSettings: UserSettings var cancellables = Set() init() { - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() } @Test @@ -275,7 +275,7 @@ final class HomeScreenViewModelTests { room.roomID == invites[0].roomID && room.badges.isDotShown == false } } - appSettings.seenInvites = Set(invites.compactMap(\.roomID)) + userSettings.seenInvites = Set(invites.compactMap(\.roomID)) try await deferred.fulfill() invites = context.viewState.rooms.invites @@ -289,14 +289,14 @@ final class HomeScreenViewModelTests { setupViewModel(invites: .rooms) let invitedRoomIDs = context.viewState.rooms.invites.compactMap(\.roomID) - appSettings.seenInvites = Set(invitedRoomIDs) + userSettings.seenInvites = Set(invitedRoomIDs) #expect(invitedRoomIDs.count == 2) let deferred = deferFulfillment(viewModel.actions) { $0 == .presentRoom(roomIdentifier: invitedRoomIDs[0]) } context.send(viewAction: .acceptInvite(roomIdentifier: invitedRoomIDs[0])) try await deferred.fulfill() - #expect(appSettings.seenInvites == [invitedRoomIDs[1]]) + #expect(userSettings.seenInvites == [invitedRoomIDs[1]]) #expect(!notificationManager.removeDeliveredMessageNotificationsForCalled, "The notification will be dismissed when opening the room.") } @@ -305,7 +305,7 @@ final class HomeScreenViewModelTests { setupViewModel(invites: .spaces) let invitedRoomIDs = context.viewState.rooms.invites.compactMap(\.roomID) - appSettings.seenInvites = Set(invitedRoomIDs) + userSettings.seenInvites = Set(invitedRoomIDs) #expect(invitedRoomIDs.count == 2) let deferred = deferFulfillment(viewModel.actions) { @@ -314,7 +314,7 @@ final class HomeScreenViewModelTests { context.send(viewAction: .acceptInvite(roomIdentifier: invitedRoomIDs[0])) try await deferred.fulfill() - #expect(appSettings.seenInvites == [invitedRoomIDs[1]]) + #expect(userSettings.seenInvites == [invitedRoomIDs[1]]) #expect(!notificationManager.removeDeliveredMessageNotificationsForCalled, "The notification will be dismissed when opening the room.") } @@ -322,7 +322,7 @@ final class HomeScreenViewModelTests { func declineInvite() async throws { setupViewModel(invites: .rooms) let invitedRoomIDs = context.viewState.rooms.invites.compactMap(\.roomID) - appSettings.seenInvites = Set(invitedRoomIDs) + userSettings.seenInvites = Set(invitedRoomIDs) #expect(invitedRoomIDs.count == 2) let deferred = deferFulfillment(context.$viewState) { $0.bindings.alertInfo != nil } @@ -345,7 +345,7 @@ final class HomeScreenViewModelTests { try await Task.sleep(for: .milliseconds(100)) #expect(rejectCalled) - #expect(appSettings.seenInvites == [invitedRoomIDs[1]]) + #expect(userSettings.seenInvites == [invitedRoomIDs[1]]) #expect(notificationManager.removeDeliveredMessageNotificationsForCalled) #expect(notificationManager.removeDeliveredMessageNotificationsForReceivedInvocations == [invitedRoomIDs[0]]) } @@ -354,7 +354,7 @@ final class HomeScreenViewModelTests { func declineAndBlockInvite() async throws { setupViewModel(invites: .rooms) let invitedRoomIDs = context.viewState.rooms.invites.compactMap(\.roomID) - appSettings.seenInvites = Set(invitedRoomIDs) + userSettings.seenInvites = Set(invitedRoomIDs) #expect(invitedRoomIDs.count == 2) let deferred = deferFulfillment(context.$viewState) { $0.bindings.alertInfo != nil } @@ -368,7 +368,7 @@ final class HomeScreenViewModelTests { @Test func newSoundBanner() { - appSettings.hasSeenNewSoundBanner = false + userSettings.hasSeenNewSoundBanner = false setupViewModel() #expect(context.viewState.shouldShowBanner) @@ -377,7 +377,7 @@ final class HomeScreenViewModelTests { context.send(viewAction: .dismissNewSoundBanner) #expect(!context.viewState.shouldShowBanner) #expect(!context.viewState.shouldShowNewSoundBanner) - #expect(appSettings.hasSeenNewSoundBanner) + #expect(userSettings.hasSeenNewSoundBanner) } // MARK: - Helpers @@ -483,7 +483,7 @@ final class HomeScreenViewModelTests { viewModel = HomeScreenViewModel(userSession: userSession, selectedRoomPublisher: CurrentValueSubject(nil).asCurrentValuePublisher(), - appSettings: appSettings, + userSettings: userSettings, analyticsService: AnalyticsServiceMock(.init()), bugReportService: BugReportServiceMock(.init()), notificationManager: notificationManager, diff --git a/UnitTests/Sources/IdentityConfirmationScreenViewModelTests.swift b/UnitTests/Sources/IdentityConfirmationScreenViewModelTests.swift index f49d41aa9..47e91edb4 100644 --- a/UnitTests/Sources/IdentityConfirmationScreenViewModelTests.swift +++ b/UnitTests/Sources/IdentityConfirmationScreenViewModelTests.swift @@ -109,7 +109,7 @@ struct IdentityConfirmationScreenViewModelTests { userSession.sessionSecurityStatePublisher = securityStateSubject.asCurrentValuePublisher() viewModel = IdentityConfirmationScreenViewModel(userSession: userSession, - appSettings: .volatile(), + userSettings: .volatile(), userIndicatorController: UserIndicatorControllerMock()) } } diff --git a/UnitTests/Sources/JoinRoomScreenViewModelTests.swift b/UnitTests/Sources/JoinRoomScreenViewModelTests.swift index 63210178c..3005328f3 100644 --- a/UnitTests/Sources/JoinRoomScreenViewModelTests.swift +++ b/UnitTests/Sources/JoinRoomScreenViewModelTests.swift @@ -31,10 +31,10 @@ final class JoinRoomScreenViewModelTests { viewModel.context } - private let appSettings: AppSettings + private let userSettings: UserSettings init() { - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() } isolated deinit { @@ -45,12 +45,12 @@ final class JoinRoomScreenViewModelTests { @Test func interaction() async throws { - #expect(appSettings.seenInvites.isEmpty, "There shouldn't be any seen invites before running the tests.") + #expect(userSettings.seenInvites.isEmpty, "There shouldn't be any seen invites before running the tests.") setupViewModel() try await deferFulfillment(viewModel.context.$viewState) { $0.mode == .joinable }.fulfill() - #expect(appSettings.seenInvites.isEmpty, "Only an invited room should register the room ID as a seen invite.") + #expect(userSettings.seenInvites.isEmpty, "Only an invited room should register the room ID as a seen invite.") let deferred = deferFulfillment(viewModel.actionsPublisher) { $0 == .joined(.roomID("1")) } context.send(viewAction: .join) @@ -59,28 +59,28 @@ final class JoinRoomScreenViewModelTests { @Test func acceptInviteInteraction() async throws { - #expect(appSettings.seenInvites.isEmpty, "There shouldn't be any seen invites before running the tests.") + #expect(userSettings.seenInvites.isEmpty, "There shouldn't be any seen invites before running the tests.") setupViewModel(mode: .invited) try await deferFulfillment(viewModel.context.$viewState) { $0.mode == .invited(isDM: false) }.fulfill() - #expect(appSettings.seenInvites == ["1"], "The invited room's ID should be registered as a seen invite.") + #expect(userSettings.seenInvites == ["1"], "The invited room's ID should be registered as a seen invite.") let deferred = deferFulfillment(viewModel.actionsPublisher) { $0 == .joined(.roomID("1")) } context.send(viewAction: .acceptInvite) try await deferred.fulfill() - #expect(appSettings.seenInvites.isEmpty, "The after accepting an invite the invite should be forgotten in case the user leaves.") + #expect(userSettings.seenInvites.isEmpty, "The after accepting an invite the invite should be forgotten in case the user leaves.") } @Test func declineInviteInteraction() async throws { - #expect(appSettings.seenInvites.isEmpty, "There shouldn't be any seen invites before running the tests.") + #expect(userSettings.seenInvites.isEmpty, "There shouldn't be any seen invites before running the tests.") setupViewModel(mode: .invited) try await deferFulfillment(viewModel.context.$viewState) { $0.mode == .invited(isDM: false) }.fulfill() - #expect(appSettings.seenInvites == ["1"], "The invited room's ID should be registered as a seen invite.") + #expect(userSettings.seenInvites == ["1"], "The invited room's ID should be registered as a seen invite.") context.send(viewAction: .declineInvite) @@ -89,17 +89,17 @@ final class JoinRoomScreenViewModelTests { context.alertInfo?.secondaryButton?.action?() try await deferred.fulfill() - #expect(appSettings.seenInvites.isEmpty, "The after declining an invite the invite should be forgotten in case another invite is received.") + #expect(userSettings.seenInvites.isEmpty, "The after declining an invite the invite should be forgotten in case another invite is received.") } @Test func knockedState() async throws { - #expect(appSettings.seenInvites.isEmpty, "There shouldn't be any seen invites before running the tests.") + #expect(userSettings.seenInvites.isEmpty, "There shouldn't be any seen invites before running the tests.") setupViewModel(mode: .knocked) try await deferFulfillment(viewModel.context.$viewState) { $0.mode == .knocked }.fulfill() - #expect(appSettings.seenInvites.isEmpty, "Only an invited room should register the room ID as a seen invite.") + #expect(userSettings.seenInvites.isEmpty, "Only an invited room should register the room ID as a seen invite.") } @Test @@ -237,7 +237,7 @@ final class JoinRoomScreenViewModelTests { } viewModel = JoinRoomScreenViewModel(source: .generic(roomID: "1", via: []), - appSettings: appSettings, + userSettings: userSettings, userSession: UserSessionMock(.init(clientProxy: clientProxy)), userIndicatorController: UserIndicatorControllerMock()) } diff --git a/UnitTests/Sources/LiveLocationManagerTests.swift b/UnitTests/Sources/LiveLocationManagerTests.swift index 2b082881f..b220d4b81 100644 --- a/UnitTests/Sources/LiveLocationManagerTests.swift +++ b/UnitTests/Sources/LiveLocationManagerTests.swift @@ -16,7 +16,7 @@ final class LiveLocationManagerTests { private var clientProxy: ClientProxyMock! private var locationManagerMock: CLLocationManagerMock! private var manager: LiveLocationManager! - private var appSettings: AppSettings! + private var userSettings: UserSettings! private var beaconInfoSubject: PassthroughSubject! // MARK: - startLiveLocation @@ -41,11 +41,11 @@ final class LiveLocationManagerTests { try result.get() #expect(callOrder == ["stop", "start"]) - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) try await simulateBeaconEcho(roomID: "!room:matrix.org", eventID: "$event:matrix.org") - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] != nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] != nil) #expect(locationManagerMock.startUpdatingLocationCalled) } @@ -54,7 +54,7 @@ final class LiveLocationManagerTests { setUp() let roomProxy = makeRoomProxy(roomID: "!room:matrix.org") clientProxy.roomForIdentifierClosure = { _ in .joined(roomProxy) } - appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] = LiveLocationSession(eventID: "$old_event:matrix.org", expirationDate: Date().addingTimeInterval(300)) + userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] = LiveLocationSession(eventID: "$old_event:matrix.org", expirationDate: Date().addingTimeInterval(300)) var callOrder: [String] = [] roomProxy.stopLiveLocationShareClosure = { @@ -73,7 +73,7 @@ final class LiveLocationManagerTests { try await simulateBeaconEcho(roomID: "!room:matrix.org", eventID: "$event:matrix.org") - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] != nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] != nil) } @Test @@ -82,12 +82,12 @@ final class LiveLocationManagerTests { let roomProxy = makeRoomProxy(roomID: "!room1:matrix.org") clientProxy.roomForIdentifierClosure = { _ in .joined(roomProxy) } - appSettings.liveLocationSharingSessionsByRoomID["!room2:matrix.org"] = LiveLocationSession(eventID: "$event:matrix.org", expirationDate: Date().addingTimeInterval(300)) + userSettings.liveLocationSharingSessionsByRoomID["!room2:matrix.org"] = LiveLocationSession(eventID: "$event:matrix.org", expirationDate: Date().addingTimeInterval(300)) _ = await manager.startLiveLocation(roomID: "!room1:matrix.org", duration: .seconds(300)) #expect(roomProxy.stopLiveLocationShareCalled) - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room2:matrix.org"] != nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room2:matrix.org"] != nil) } @Test @@ -98,7 +98,7 @@ final class LiveLocationManagerTests { let result = await manager.startLiveLocation(roomID: "!room:matrix.org", duration: .seconds(300)) #expect(throws: LiveLocationManagerError.roomNotJoined) { try result.get() } - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) } @Test @@ -111,7 +111,7 @@ final class LiveLocationManagerTests { let result = await manager.startLiveLocation(roomID: "!room:matrix.org", duration: .seconds(300)) #expect(throws: LiveLocationManagerError.startFailed) { try result.get() } - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) } @Test @@ -127,7 +127,7 @@ final class LiveLocationManagerTests { try await simulateBeaconEcho(roomID: "!room:matrix.org", eventID: "$event:matrix.org") - let storedSession = try #require(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"]) + let storedSession = try #require(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"]) let expectedMinTimeout = beforeStart.addingTimeInterval(TimeInterval(duration.seconds)) let expectedMaxTimeout = afterStart.addingTimeInterval(TimeInterval(duration.seconds)) @@ -142,12 +142,12 @@ final class LiveLocationManagerTests { setUp() let roomProxy = makeRoomProxy(roomID: "!room:matrix.org") clientProxy.roomForIdentifierClosure = { _ in .joined(roomProxy) } - appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] = LiveLocationSession(eventID: "$event:matrix.org", expirationDate: Date().addingTimeInterval(300)) + userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] = LiveLocationSession(eventID: "$event:matrix.org", expirationDate: Date().addingTimeInterval(300)) await manager.stopLiveLocation(roomID: "!room:matrix.org") #expect(roomProxy.stopLiveLocationShareCalled) - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) // Setting the timeout date above starts tracking; removing it stops tracking. #expect(locationManagerMock.startUpdatingLocationCalled) #expect(locationManagerMock.stopUpdatingLocationCalled) @@ -169,13 +169,13 @@ final class LiveLocationManagerTests { setUp() let roomProxy = makeRoomProxy(roomID: "!room1:matrix.org") clientProxy.roomForIdentifierClosure = { _ in .joined(roomProxy) } - appSettings.liveLocationSharingSessionsByRoomID["!room1:matrix.org"] = LiveLocationSession(eventID: "$event:matrix.org", expirationDate: Date().addingTimeInterval(300)) - appSettings.liveLocationSharingSessionsByRoomID["!room2:matrix.org"] = LiveLocationSession(eventID: "$event:matrix.org", expirationDate: Date().addingTimeInterval(300)) + userSettings.liveLocationSharingSessionsByRoomID["!room1:matrix.org"] = LiveLocationSession(eventID: "$event:matrix.org", expirationDate: Date().addingTimeInterval(300)) + userSettings.liveLocationSharingSessionsByRoomID["!room2:matrix.org"] = LiveLocationSession(eventID: "$event:matrix.org", expirationDate: Date().addingTimeInterval(300)) await manager.stopLiveLocation(roomID: "!room1:matrix.org") - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room1:matrix.org"] == nil) - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room2:matrix.org"] != nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room1:matrix.org"] == nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room2:matrix.org"] != nil) } // MARK: - Beacon info updates @@ -188,13 +188,13 @@ final class LiveLocationManagerTests { try await manager.startLiveLocation(roomID: "!room:matrix.org", duration: .seconds(300)).get() try await simulateBeaconEcho(roomID: "!room:matrix.org", eventID: "$event:matrix.org") - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] != nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] != nil) - let deferred = deferFulfillment(appSettings.liveLocationSharingSessionsByRoomIDPublisher) { $0["!room:matrix.org"] == nil } + let deferred = deferFulfillment(userSettings.liveLocationSharingSessionsByRoomIDPublisher) { $0["!room:matrix.org"] == nil } beaconInfoSubject.send(LiveLocationOwnInfoUpdate(roomID: "!room:matrix.org", eventID: "$external_event:matrix.org", isLive: true)) try await deferred.fulfill() - #expect(appSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) + #expect(userSettings.liveLocationSharingSessionsByRoomID["!room:matrix.org"] == nil) } // MARK: - Reduced accuracy @@ -228,16 +228,16 @@ final class LiveLocationManagerTests { } private func setUp(accuracyAuthorization: CLAccuracyAuthorization = .fullAccuracy) { - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() clientProxy = ClientProxyMock(.init()) beaconInfoSubject = PassthroughSubject() clientProxy.liveLocationOwnInfoUpdatesPublisher = beaconInfoSubject.eraseToAnyPublisher() locationManagerMock = CLLocationManagerMock(.init(accuracyAuthorization: accuracyAuthorization)) - manager = LiveLocationManager(clientProxy: clientProxy, appSettings: appSettings, locationManager: locationManagerMock) + manager = LiveLocationManager(clientProxy: clientProxy, userSettings: userSettings, locationManager: locationManagerMock) } private func simulateBeaconEcho(roomID: String, eventID: String) async throws { - let deferred = deferFulfillment(appSettings.liveLocationSharingSessionsByRoomIDPublisher) { $0[roomID] != nil } + let deferred = deferFulfillment(userSettings.liveLocationSharingSessionsByRoomIDPublisher) { $0[roomID] != nil } beaconInfoSubject.send(LiveLocationOwnInfoUpdate(roomID: roomID, eventID: eventID, isLive: true)) try await deferred.fulfill() } diff --git a/UnitTests/Sources/LocationSharingScreenViewModelTests.swift b/UnitTests/Sources/LocationSharingScreenViewModelTests.swift index b565e9fcf..ea53d5da5 100644 --- a/UnitTests/Sources/LocationSharingScreenViewModelTests.swift +++ b/UnitTests/Sources/LocationSharingScreenViewModelTests.swift @@ -16,7 +16,7 @@ struct LocationSharingScreenViewModelTests { private static let roomID = "!live-location-room:matrix.org" private var timelineProxy: TimelineProxyMock! - private var appSettings: AppSettings! + private var userSettings: UserSettings! private var viewModel: LocationSharingScreenViewModel! private var context: LocationSharingScreenViewModel.Context { @@ -417,14 +417,14 @@ struct LocationSharingScreenViewModelTests { let roomProxyMock = JoinedRoomProxyMock(.init(members: .allMembers)) roomProxyMock.makeLiveLocationServiceReturnValue = liveLocationServiceMock - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() viewModel = LocationSharingScreenViewModel(interactionMode: .viewLive(sender: nil, initialLiveLocationShare: nil), - mapURLBuilder: appSettings.mapTilerConfiguration.publisher.value, + mapURLBuilder: userSettings.mapTilerConfiguration.publisher.value, roomProxy: roomProxyMock, timelineController: TimelineControllerMock(.init(timelineProxy: TimelineProxyMock(.init()))), liveLocationManager: LiveLocationManagerMock(.init()), - appSettings: appSettings, + userSettings: userSettings, analytics: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), mediaProvider: MediaProviderMock(.init())) @@ -546,7 +546,7 @@ struct LocationSharingScreenViewModelTests { #expect(context.showsUserLocationMode == .hide) // Another device takes over: this device's session is removed and a new own share arrives. - appSettings.liveLocationSharingSessionsByRoomID.removeValue(forKey: Self.roomID) + userSettings.liveLocationSharingSessionsByRoomID.removeValue(forKey: Self.roomID) let newOwnShare = makeLiveLocationShare(userID: RoomMemberProxyMock.mockMe.userID, latitude: 48.8, longitude: 2.3) let deferred = deferFulfillment(context.observe(\.showsUserLocationMode)) { $0 == .show } @@ -630,14 +630,14 @@ struct LocationSharingScreenViewModelTests { private mutating func setupViewModel(liveLocationManagerMock: LiveLocationManagerMock, members: [RoomMemberProxyMock] = .allMembersAsAdmin) { - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() timelineProxy = TimelineProxyMock(.init()) viewModel = LocationSharingScreenViewModel(interactionMode: .picker(shouldShowLiveLocationOption: true), - mapURLBuilder: appSettings.mapTilerConfiguration.publisher.value, + mapURLBuilder: userSettings.mapTilerConfiguration.publisher.value, roomProxy: JoinedRoomProxyMock(.init(members: members)), timelineController: TimelineControllerMock(.init(timelineProxy: timelineProxy)), liveLocationManager: liveLocationManagerMock, - appSettings: appSettings, + userSettings: userSettings, analytics: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), mediaProvider: MediaProviderMock(.init())) @@ -649,9 +649,9 @@ struct LocationSharingScreenViewModelTests { liveLocationsSubject: CurrentValueSubject<[LiveLocationShare], Never>, members: [RoomMemberProxyMock] = .allMembers, isSharingLiveLocationFromThisDevice: Bool = false) { - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() if isSharingLiveLocationFromThisDevice { - appSettings.liveLocationSharingSessionsByRoomID[Self.roomID] = .init(eventID: "$event:matrix.org", expirationDate: .distantFuture) + userSettings.liveLocationSharingSessionsByRoomID[Self.roomID] = .init(eventID: "$event:matrix.org", expirationDate: .distantFuture) } let liveLocationServiceMock = RoomLiveLocationServiceMock() @@ -661,11 +661,11 @@ struct LocationSharingScreenViewModelTests { roomProxyMock.makeLiveLocationServiceReturnValue = liveLocationServiceMock viewModel = LocationSharingScreenViewModel(interactionMode: .viewLive(sender: sender, initialLiveLocationShare: initialShare), - mapURLBuilder: appSettings.mapTilerConfiguration.publisher.value, + mapURLBuilder: userSettings.mapTilerConfiguration.publisher.value, roomProxy: roomProxyMock, timelineController: TimelineControllerMock(.init(timelineProxy: TimelineProxyMock(.init()))), liveLocationManager: LiveLocationManagerMock(.init()), - appSettings: appSettings, + userSettings: userSettings, analytics: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), mediaProvider: MediaProviderMock(.init())) diff --git a/UnitTests/Sources/MediaUploadPreviewScreenViewModelTests.swift b/UnitTests/Sources/MediaUploadPreviewScreenViewModelTests.swift index f5020f734..63c68d96e 100644 --- a/UnitTests/Sources/MediaUploadPreviewScreenViewModelTests.swift +++ b/UnitTests/Sources/MediaUploadPreviewScreenViewModelTests.swift @@ -15,7 +15,7 @@ final class MediaUploadPreviewScreenViewModelTests { var timelineProxy: TimelineProxyMock! var clientProxy: ClientProxyMock! var userIndicatorController: UserIndicatorControllerMock - private let appSettings: AppSettings + private let userSettings: UserSettings var viewModel: MediaUploadPreviewScreenViewModel! var context: MediaUploadPreviewScreenViewModel.Context { @@ -28,8 +28,8 @@ final class MediaUploadPreviewScreenViewModelTests { } init() { - appSettings = AppSettings.volatile() - appSettings.optimizeMediaUploads = false + userSettings = UserSettings.volatile() + userSettings.optimizeMediaUploads = false userIndicatorController = UserIndicatorControllerMock() } @@ -322,7 +322,7 @@ final class MediaUploadPreviewScreenViewModelTests { title: "Some File", shouldShowCaptionWarning: true, galleryEnabled: galleryEnabled, - mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: appSettings), + mediaUploadingPreprocessor: MediaUploadingPreprocessor(userSettings: userSettings), timelineController: TimelineControllerMock(.init(timelineProxy: timelineProxy)), clientProxy: clientProxy, userIndicatorController: userIndicatorController) diff --git a/UnitTests/Sources/MediaUploadingPreprocessorTests.swift b/UnitTests/Sources/MediaUploadingPreprocessorTests.swift index 51217cde6..6fedbf439 100644 --- a/UnitTests/Sources/MediaUploadingPreprocessorTests.swift +++ b/UnitTests/Sources/MediaUploadingPreprocessorTests.swift @@ -13,13 +13,13 @@ import UniformTypeIdentifiers final class MediaUploadingPreprocessorTests { let maxUploadSize: UInt = 100 * 1024 * 1024 - var appSettings: AppSettings! + var userSettings: UserSettings! var mediaUploadingPreprocessor: MediaUploadingPreprocessor! init() { - appSettings = AppSettings.volatile() - appSettings.optimizeMediaUploads = false - mediaUploadingPreprocessor = MediaUploadingPreprocessor(appSettings: appSettings) + userSettings = UserSettings.volatile() + userSettings.optimizeMediaUploads = false + mediaUploadingPreprocessor = MediaUploadingPreprocessor(userSettings: userSettings) } @Test @@ -80,7 +80,7 @@ final class MediaUploadingPreprocessorTests { func landscapeMovVideoOptimizedProcessing() async throws { let url = try #require(Bundle(for: Self.self).url(forResource: "landscape_test_video.mov", withExtension: nil), "Failed retrieving test asset") - appSettings.optimizeMediaUploads = true + userSettings.optimizeMediaUploads = true guard case let .success(optimizedResult) = await mediaUploadingPreprocessor.processMedia(at: url, maxUploadSize: maxUploadSize), case let .video(optimizedVideoURL, _, optimizedVideoInfo) = optimizedResult else { @@ -139,7 +139,7 @@ final class MediaUploadingPreprocessorTests { func portraitMp4VideoOptimizedProcessing() async throws { let url = try #require(Bundle(for: Self.self).url(forResource: "portrait_test_video.mp4", withExtension: nil), "Failed retrieving test asset") - appSettings.optimizeMediaUploads = true + userSettings.optimizeMediaUploads = true guard case let .success(optimizedResult) = await mediaUploadingPreprocessor.processMedia(at: url, maxUploadSize: maxUploadSize), case let .video(optimizedVideoURL, _, optimizedVideoInfo) = optimizedResult else { @@ -184,7 +184,7 @@ final class MediaUploadingPreprocessorTests { #expect(imageInfo.thumbnailInfo?.height == 344) // Repeat with optimised media setting - appSettings.optimizeMediaUploads = true + userSettings.optimizeMediaUploads = true guard case let .success(optimizedResult) = await mediaUploadingPreprocessor.processMedia(at: url, maxUploadSize: maxUploadSize), case let .image(optimizedImageURL, thumbnailURL, optimizedImageInfo) = optimizedResult else { @@ -228,7 +228,7 @@ final class MediaUploadingPreprocessorTests { #expect(imageInfo.thumbnailInfo?.height == 800) // Repeat with optimised media setting - appSettings.optimizeMediaUploads = true + userSettings.optimizeMediaUploads = true guard case let .success(optimizedResult) = await mediaUploadingPreprocessor.processMedia(at: url, maxUploadSize: maxUploadSize), case let .image(optimizedImageURL, thumbnailURL, optimizedImageInfo) = optimizedResult else { @@ -274,7 +274,7 @@ final class MediaUploadingPreprocessorTests { #expect(imageInfo.thumbnailInfo?.height == 240) // Repeat with optimised media setting - appSettings.optimizeMediaUploads = true + userSettings.optimizeMediaUploads = true guard case let .success(optimizedResult) = await mediaUploadingPreprocessor.processMedia(at: url, maxUploadSize: maxUploadSize), case let .image(optimizedImageURL, _, optimizedImageInfo) = optimizedResult else { @@ -325,7 +325,7 @@ final class MediaUploadingPreprocessorTests { #expect(imageInfo.thumbnailInfo?.height == 800) // Repeat with optimised media setting - appSettings.optimizeMediaUploads = true + userSettings.optimizeMediaUploads = true guard case let .success(optimizedResult) = await mediaUploadingPreprocessor.processMedia(at: url, maxUploadSize: maxUploadSize), case let .image(optimizedImageURL, thumbnailURL, optimizedImageInfo) = optimizedResult else { @@ -377,7 +377,7 @@ final class MediaUploadingPreprocessorTests { #expect(imageInfo.thumbnailInfo?.height == 472) // Repeat with optimised media setting - appSettings.optimizeMediaUploads = true + userSettings.optimizeMediaUploads = true guard case let .success(optimizedResult) = await mediaUploadingPreprocessor.processMedia(at: url, maxUploadSize: maxUploadSize), case let .image(optimizedImageURL, _, optimizedImageInfo) = optimizedResult else { @@ -419,7 +419,7 @@ final class MediaUploadingPreprocessorTests { #expect(imageInfo.thumbnailInfo?.height == 800) // Repeat with optimised media setting - appSettings.optimizeMediaUploads = true + userSettings.optimizeMediaUploads = true guard case let .success(optimizedResult) = await mediaUploadingPreprocessor.processMedia(at: url, maxUploadSize: maxUploadSize), case let .image(optimizedImageURL, thumbnailURL, optimizedImageInfo) = optimizedResult else { @@ -453,7 +453,7 @@ final class MediaUploadingPreprocessorTests { fatalError() } - if appSettings.optimizeMediaUploads { + if userSettings.optimizeMediaUploads { // Check that new image has been scaled within the requirements for an optimised image #expect(convertedImage.size.width <= MediaUploadingPreprocessor.Constants.optimizedMaxPixelSize) #expect(convertedImage.size.height <= MediaUploadingPreprocessor.Constants.optimizedMaxPixelSize) diff --git a/UnitTests/Sources/NotificationSettingsScreenViewModelTests.swift b/UnitTests/Sources/NotificationSettingsScreenViewModelTests.swift index 51e85387a..c831f4e4a 100644 --- a/UnitTests/Sources/NotificationSettingsScreenViewModelTests.swift +++ b/UnitTests/Sources/NotificationSettingsScreenViewModelTests.swift @@ -15,7 +15,7 @@ import Testing struct NotificationSettingsScreenViewModelTests { private var viewModel: NotificationSettingsScreenViewModelProtocol private var context: NotificationSettingsScreenViewModelType.Context - private var appSettings: AppSettings + private var userSettings: UserSettings private var userNotificationCenter: UserNotificationCenterMock private var notificationSettingsProxy: NotificationSettingsProxyMock private var toneManager: NotificationToneManagerMock @@ -23,7 +23,7 @@ struct NotificationSettingsScreenViewModelTests { init() throws { userNotificationCenter = UserNotificationCenterMock() userNotificationCenter.authorizationStatusReturnValue = .authorized - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() notificationSettingsProxy = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()) notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .allMessages notificationSettingsProxy.isRoomMentionEnabledReturnValue = true @@ -31,7 +31,7 @@ struct NotificationSettingsScreenViewModelTests { toneManager = NotificationToneManagerMock() toneManager.customTonesReturnValue = [] - viewModel = NotificationSettingsScreenViewModel(appSettings: appSettings, + viewModel = NotificationSettingsScreenViewModel(userSettings: userSettings, userNotificationCenter: userNotificationCenter, notificationToneManager: toneManager, notificationSettingsProxy: notificationSettingsProxy, @@ -42,16 +42,16 @@ struct NotificationSettingsScreenViewModelTests { @Test func enableNotifications() { - appSettings.enableNotifications = false + userSettings.enableNotifications = false context.send(viewAction: .changedEnableNotifications) - #expect(appSettings.enableNotifications) + #expect(userSettings.enableNotifications) } @Test func disableNotifications() { - appSettings.enableNotifications = true + userSettings.enableNotifications = true context.send(viewAction: .changedEnableNotifications) - #expect(!appSettings.enableNotifications) + #expect(!userSettings.enableNotifications) } @Test @@ -410,8 +410,8 @@ struct NotificationSettingsScreenViewModelTests { func selectingAlertTonePersistsSelection() { // Given a tone and a manager that persists the selection to app settings let tone = NotificationTone.createBundledSound(label: "Test", filename: "test.caf") - toneManager.setSelectedToneClosure = { [appSettings] selectedTone in - appSettings.selectedNotificationTone = selectedTone + toneManager.setSelectedToneClosure = { [userSettings] selectedTone in + userSettings.selectedNotificationTone = selectedTone return NotificationToneManager.libraryLocation } @@ -419,21 +419,21 @@ struct NotificationSettingsScreenViewModelTests { context.send(viewAction: .selectAlertTone(tone)) // Then it is reflected in app settings - #expect(appSettings.selectedNotificationTone == tone) + #expect(userSettings.selectedNotificationTone == tone) } @Test func deletingActiveToneResetsSelection() { // Given the active tone is a custom tone let customTone = NotificationTone.createCustomUserSound(filename: "custom.caf") - appSettings.selectedNotificationTone = customTone + userSettings.selectedNotificationTone = customTone toneManager.customTonesReturnValue = [customTone] // When that tone is deleted context.send(viewAction: .deleteCustomAlertTones([customTone])) // Then the selection is cleared, falling back to the default - #expect(appSettings.selectedNotificationTone == nil) + #expect(userSettings.selectedNotificationTone == nil) } @Test @@ -441,14 +441,14 @@ struct NotificationSettingsScreenViewModelTests { // Given a custom tone is active and a different custom tone also exists let activeTone = NotificationTone.createCustomUserSound(filename: "active.caf") let otherTone = NotificationTone.createCustomUserSound(filename: "other.caf") - appSettings.selectedNotificationTone = activeTone + userSettings.selectedNotificationTone = activeTone toneManager.customTonesReturnValue = [activeTone, otherTone] // When the non-active tone is deleted context.send(viewAction: .deleteCustomAlertTones([otherTone])) // Then the active selection is unchanged - #expect(appSettings.selectedNotificationTone == activeTone) + #expect(userSettings.selectedNotificationTone == activeTone) } @Test @@ -457,7 +457,7 @@ struct NotificationSettingsScreenViewModelTests { let customTone = NotificationTone.createCustomUserSound(filename: "custom.caf") var remainingTones = [customTone] toneManager.customTonesClosure = { remainingTones } - let localVM = NotificationSettingsScreenViewModel(appSettings: appSettings, + let localVM = NotificationSettingsScreenViewModel(userSettings: userSettings, userNotificationCenter: userNotificationCenter, notificationToneManager: toneManager, notificationSettingsProxy: notificationSettingsProxy, @@ -476,7 +476,7 @@ struct NotificationSettingsScreenViewModelTests { func deleteCustomToneFailurePreservesSelection() { // Given the active tone is a custom tone and deletion will fail let customTone = NotificationTone.createCustomUserSound(filename: "custom.caf") - appSettings.selectedNotificationTone = customTone + userSettings.selectedNotificationTone = customTone toneManager.deleteCustomToneThrowableError = NSError(domain: "test", code: 1) toneManager.customTonesReturnValue = [customTone] @@ -484,7 +484,7 @@ struct NotificationSettingsScreenViewModelTests { context.send(viewAction: .deleteCustomAlertTones([customTone])) // Then the selection is unchanged - #expect(appSettings.selectedNotificationTone == customTone) + #expect(userSettings.selectedNotificationTone == customTone) } @Test diff --git a/UnitTests/Sources/NotificationToneManagerTests.swift b/UnitTests/Sources/NotificationToneManagerTests.swift index 9706cfc91..71a9243c3 100644 --- a/UnitTests/Sources/NotificationToneManagerTests.swift +++ b/UnitTests/Sources/NotificationToneManagerTests.swift @@ -18,7 +18,7 @@ struct NotificationToneManagerTests { private let manager: NotificationToneManager init() { - manager = NotificationToneManager(appSettings: .volatile()) + manager = NotificationToneManager(userSettings: .volatile()) } // MARK: - Deletion diff --git a/UnitTests/Sources/PillContextTests.swift b/UnitTests/Sources/PillContextTests.swift index 48b7b989f..5068739cd 100644 --- a/UnitTests/Sources/PillContextTests.swift +++ b/UnitTests/Sources/PillContextTests.swift @@ -15,7 +15,6 @@ import Testing struct PillContextTests { @Test func user() async { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let id = "@test:matrix.org" @@ -28,9 +27,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .user(userID: id), font: .preferredFont(forTextStyle: .body))) @@ -49,7 +47,6 @@ struct PillContextTests { @Test func ownUser() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let id = "@test:matrix.org" @@ -62,9 +59,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .user(userID: id), font: .preferredFont(forTextStyle: .body))) @@ -74,7 +70,6 @@ struct PillContextTests { @Test func allUsers() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let avatarURL = URL(string: "https://matrix.jpg") @@ -88,9 +83,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .allUsers, font: .preferredFont(forTextStyle: .body))) @@ -101,7 +95,6 @@ struct PillContextTests { @Test func roomIDMention() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let proxyMock = JoinedRoomProxyMock(.init()) @@ -114,9 +107,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomID("1"), font: .preferredFont(forTextStyle: .body))) @@ -128,7 +120,6 @@ struct PillContextTests { @Test func roomIDMentionMissingRoom() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let proxyMock = JoinedRoomProxyMock(.init()) @@ -139,9 +130,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomID("1"), font: .preferredFont(forTextStyle: .body))) @@ -153,7 +143,6 @@ struct PillContextTests { @Test func roomAliasMention() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let proxyMock = JoinedRoomProxyMock(.init()) @@ -168,9 +157,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomAlias("#foundation-and-empire:matrix.org"), font: .preferredFont(forTextStyle: .body))) @@ -182,7 +170,6 @@ struct PillContextTests { @Test func roomAliasMentionMissingRoom() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let proxyMock = JoinedRoomProxyMock(.init()) @@ -193,9 +180,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomAlias("#foundation-and-empire:matrix.org"), font: .preferredFont(forTextStyle: .body))) @@ -207,7 +193,6 @@ struct PillContextTests { @Test func eventOnRoomIDMention() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let proxyMock = JoinedRoomProxyMock(.init()) @@ -220,9 +205,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomID("1")), font: .preferredFont(forTextStyle: .body))) @@ -234,7 +218,6 @@ struct PillContextTests { @Test func eventOnRoomIDMentionMissingRoom() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let proxyMock = JoinedRoomProxyMock(.init()) @@ -245,9 +228,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomID("1")), font: .preferredFont(forTextStyle: .body))) @@ -259,7 +241,6 @@ struct PillContextTests { @Test func eventOnRoomAliasMention() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let proxyMock = JoinedRoomProxyMock(.init()) @@ -274,9 +255,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomAlias("#foundation-and-empire:matrix.org")), font: .preferredFont(forTextStyle: .body))) @@ -288,7 +268,6 @@ struct PillContextTests { @Test func eventOnRoomAliasMentionMissingRoom() { - let appSettings = AppSettings.volatile() let userIndicatorController = UserIndicatorControllerMock() let proxyMock = JoinedRoomProxyMock(.init()) @@ -299,9 +278,8 @@ struct PillContextTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomAlias("#foundation-and-empire:matrix.org")), font: .preferredFont(forTextStyle: .body))) diff --git a/UnitTests/Sources/PresenceServiceTests.swift b/UnitTests/Sources/PresenceServiceTests.swift index 292e2888a..9430545fd 100644 --- a/UnitTests/Sources/PresenceServiceTests.swift +++ b/UnitTests/Sources/PresenceServiceTests.swift @@ -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.makeStream() let (resumeOnlineSendStream, resumeOnlineSendContinuation) = AsyncStream.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) diff --git a/UnitTests/Sources/RoomDetailsEditScreenViewModelTests.swift b/UnitTests/Sources/RoomDetailsEditScreenViewModelTests.swift index 86c41ea19..dcfc95de1 100644 --- a/UnitTests/Sources/RoomDetailsEditScreenViewModelTests.swift +++ b/UnitTests/Sources/RoomDetailsEditScreenViewModelTests.swift @@ -167,7 +167,7 @@ struct RoomDetailsEditScreenViewModelTests { userIndicatorController = UserIndicatorControllerMock() viewModel = .init(roomProxy: JoinedRoomProxyMock(roomProxyConfiguration), userSession: UserSessionMock(.init()), - mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: .volatile()), + mediaUploadingPreprocessor: MediaUploadingPreprocessor(userSettings: .volatile()), userIndicatorController: userIndicatorController) } } diff --git a/UnitTests/Sources/RoomDetailsScreenViewModelTests.swift b/UnitTests/Sources/RoomDetailsScreenViewModelTests.swift index 30df628bc..572a1ec08 100644 --- a/UnitTests/Sources/RoomDetailsScreenViewModelTests.swift +++ b/UnitTests/Sources/RoomDetailsScreenViewModelTests.swift @@ -30,7 +30,7 @@ struct RoomDetailsScreenViewModelTests { notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -44,7 +44,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers, joinRule: .public)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -65,7 +65,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -87,7 +87,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -146,7 +146,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -168,7 +168,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -201,7 +201,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init(clientProxy: clientProxy)), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -233,7 +233,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -266,7 +266,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init(clientProxy: clientProxy)), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -300,7 +300,7 @@ struct RoomDetailsScreenViewModelTests { powerLevelsConfiguration: .init(canUserInvite: false))) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -318,7 +318,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers, joinRule: .public)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -367,7 +367,7 @@ struct RoomDetailsScreenViewModelTests { viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -403,7 +403,7 @@ struct RoomDetailsScreenViewModelTests { viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -439,7 +439,7 @@ struct RoomDetailsScreenViewModelTests { viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -460,7 +460,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -481,7 +481,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -500,7 +500,7 @@ struct RoomDetailsScreenViewModelTests { notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneThrowableError = NotificationSettingsError.Generic(msg: "error") viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -709,7 +709,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, knockRequestsState: .loaded(mockedRequests), joinRule: .knock)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -731,7 +731,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, knockRequestsState: .loading, joinRule: .knock)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -755,7 +755,7 @@ struct RoomDetailsScreenViewModelTests { powerLevelsConfiguration: .init(canUserInvite: false))) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -779,7 +779,7 @@ struct RoomDetailsScreenViewModelTests { roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, members: mockedMembers, knockRequestsState: .loaded(mockedRequests), joinRule: .knock)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), @@ -807,7 +807,7 @@ struct RoomDetailsScreenViewModelTests { viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, userSession: UserSessionMock(.init()), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), diff --git a/UnitTests/Sources/RoomFlowCoordinatorTests.swift b/UnitTests/Sources/RoomFlowCoordinatorTests.swift index 37b839d31..19b4680b6 100644 --- a/UnitTests/Sources/RoomFlowCoordinatorTests.swift +++ b/UnitTests/Sources/RoomFlowCoordinatorTests.swift @@ -19,10 +19,10 @@ final class RoomFlowCoordinatorTests { var navigationStackCoordinator: NavigationStackCoordinator! var cancellables = Set() - private let appSettings: AppSettings + private let userSettings: UserSettings init() { - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() } @Test @@ -230,7 +230,7 @@ final class RoomFlowCoordinatorTests { @Test func threadedEventRoutes() async throws { - appSettings.threadsEnabled = true + userSettings.threadsEnabled = true setupRoomFlowCoordinator() // Navigate directly to the threaded event @@ -526,10 +526,10 @@ final class RoomFlowCoordinatorTests { bugReportService: BugReportServiceMock(.init()), elementCallService: ElementCallServiceMock(.init()), timelineControllerFactory: timelineControllerFactory, - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: userSettings), linkMetadataProvider: LinkMetadataProvider(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, + userSettings: userSettings, appHooks: AppHooks(), analytics: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), diff --git a/UnitTests/Sources/RoomListFiltersStateTests.swift b/UnitTests/Sources/RoomListFiltersStateTests.swift index 875ae0c50..1e662209a 100644 --- a/UnitTests/Sources/RoomListFiltersStateTests.swift +++ b/UnitTests/Sources/RoomListFiltersStateTests.swift @@ -11,14 +11,14 @@ import Testing @MainActor final class RoomListFiltersStateTests { - var appSettings: AppSettings + var userSettings: UserSettings var state: RoomListFiltersState /// The filters that aren't hidden behind a feature flag. let defaultFilters = RoomListFilter.allCases.filter { $0 != .mentions && $0 != .lowPriority } init() { - appSettings = AppSettings.volatile() - state = RoomListFiltersState(appSettings: appSettings) + userSettings = UserSettings.volatile() + state = RoomListFiltersState(userSettings: userSettings) } @Test @@ -148,12 +148,12 @@ final class RoomListFiltersStateTests { // MARK: - Helpers private func enableLowPriorityFeature() { - appSettings.lowPriorityFilterEnabled = true - state = RoomListFiltersState(appSettings: appSettings) + userSettings.lowPriorityFilterEnabled = true + state = RoomListFiltersState(userSettings: userSettings) } private func enableMentionsFeature() { - appSettings.mentionsFilterEnabled = true - state = RoomListFiltersState(appSettings: appSettings) + userSettings.mentionsFilterEnabled = true + state = RoomListFiltersState(userSettings: userSettings) } } diff --git a/UnitTests/Sources/RoomMembersFlowCoordinatorTests.swift b/UnitTests/Sources/RoomMembersFlowCoordinatorTests.swift index 08dd059ed..021ffb06b 100644 --- a/UnitTests/Sources/RoomMembersFlowCoordinatorTests.swift +++ b/UnitTests/Sources/RoomMembersFlowCoordinatorTests.swift @@ -51,16 +51,16 @@ struct RoomMembersFlowCoordinatorTests { let clientProxy = ClientProxyMock(.init()) clientProxy.directRoomForUserIDReturnValue = .success(nil) - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() let flowParameters = CommonFlowParameters(userSession: UserSessionMock(.init(clientProxy: clientProxy)), bugReportService: BugReportServiceMock(.init()), elementCallService: ElementCallServiceMock(.init()), timelineControllerFactory: TimelineControllerFactoryMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: userSettings), linkMetadataProvider: LinkMetadataProvider(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, + userSettings: userSettings, appHooks: AppHooks(), analytics: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock(), diff --git a/UnitTests/Sources/RoomScreenViewModelTests.swift b/UnitTests/Sources/RoomScreenViewModelTests.swift index 7ec7a762e..a601d9192 100644 --- a/UnitTests/Sources/RoomScreenViewModelTests.swift +++ b/UnitTests/Sources/RoomScreenViewModelTests.swift @@ -16,12 +16,6 @@ import Testing @MainActor final class RoomScreenViewModelTests { - private let appSettings: AppSettings - - init() async throws { - appSettings = AppSettings.volatile() - } - @Test func pinnedEventsBanner() async throws { var configuration = JoinedRoomProxyMockConfiguration() @@ -42,7 +36,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -122,7 +115,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: "test1", ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -161,7 +153,9 @@ final class RoomScreenViewModelTests { @Test func pinnedEventsBannerThreadedSelection() async throws { - appSettings.threadsEnabled = true + let userSettings = UserSettings.volatile() + userSettings.threadsEnabled = true + let userSession = UserSessionMock(.init(userSettings: userSettings)) let roomProxyMock = JoinedRoomProxyMock(.init()) let eventMock = TimelineEventSDKMock() @@ -178,11 +172,10 @@ final class RoomScreenViewModelTests { .event(.init(item: EventTimelineItem(configuration: .init(eventID: "test3")), uniqueID: .init("3")))] roomProxyMock.pinnedEventsTimelineReturnValue = .success(pinnedTimelineMock) - let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()), + let viewModel = RoomScreenViewModel(userSession: userSession, roomProxy: roomProxyMock, initialSelectedPinnedEventID: "test1", ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -238,7 +231,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -273,7 +265,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: ongoingCallRoomIDSubject.asCurrentValuePublisher(), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -320,7 +311,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -342,7 +332,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -375,7 +364,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -403,7 +391,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -422,7 +409,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) @@ -448,7 +434,6 @@ final class RoomScreenViewModelTests { roomProxy: roomProxyMock, initialSelectedPinnedEventID: nil, ongoingCallRoomIDPublisher: .init(.init(nil)), - appSettings: appSettings, appHooks: AppHooks(), analyticsService: AnalyticsServiceMock(.init()), userIndicatorController: UserIndicatorControllerMock()) diff --git a/UnitTests/Sources/RoomSummaryProviderTests.swift b/UnitTests/Sources/RoomSummaryProviderTests.swift index 396de4a69..b7083db84 100644 --- a/UnitTests/Sources/RoomSummaryProviderTests.swift +++ b/UnitTests/Sources/RoomSummaryProviderTests.swift @@ -17,7 +17,7 @@ final class RoomSummaryProviderTests { .all(filters: [.space, .invite])]), .deduplicateVersions] - var appSettings: AppSettings! + var userSettings: UserSettings! var roomList: RoomListSDKMock! var dynamicEntriesController: RoomListDynamicEntriesControllerSDKMock! var roomSummaryProvider: RoomSummaryProvider! @@ -90,8 +90,8 @@ final class RoomSummaryProviderTests { // MARK: - Helpers private func setup(isLowPriorityFilterEnabled: Bool = false) { - appSettings = AppSettings.volatile() - appSettings.lowPriorityFilterEnabled = isLowPriorityFilterEnabled + userSettings = UserSettings.volatile() + userSettings.lowPriorityFilterEnabled = isLowPriorityFilterEnabled let stateEventStringBuilder = RoomStateEventStringBuilder(userID: "@me:matrix.org") let attributedStringBuilder = AttributedStringBuilder(mentionBuilder: MentionBuilder()) @@ -104,7 +104,7 @@ final class RoomSummaryProviderTests { eventStringBuilder: eventStringBuilder, name: "Test", notificationSettings: NotificationSettingsProxyMock(with: .init()), - appSettings: appSettings) + userSettings: userSettings) dynamicEntriesController = RoomListDynamicEntriesControllerSDKMock() dynamicEntriesController.setFilterKindReturnValue = true diff --git a/UnitTests/Sources/SearchScreenViewModelTests.swift b/UnitTests/Sources/SearchScreenViewModelTests.swift index 3b288d7cf..671dc7508 100644 --- a/UnitTests/Sources/SearchScreenViewModelTests.swift +++ b/UnitTests/Sources/SearchScreenViewModelTests.swift @@ -14,7 +14,7 @@ struct SearchScreenViewModelTests { let viewModel: SearchScreenViewModelProtocol let searchService: SearchServiceProxyMock let userIndicatorController: UserIndicatorControllerMock - let appSettings: AppSettings + let userSettings: UserSettings /// The rooms known to the client, empty until the room list loads. let staticRoomListSubject = CurrentValueSubject<[RoomSummary], Never>([]) /// Fires with the query each time the (async, debounced) message search runs. @@ -49,13 +49,13 @@ struct SearchScreenViewModelTests { staticRoomListSubject.value.first { $0.id == identifier } } - appSettings = AppSettings.volatile() + userSettings = UserSettings.volatile() viewModel = SearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))), clientProxy: clientProxy, mediaProvider: MediaProviderMock(.init()), userIndicatorController: userIndicatorController, - appSettings: appSettings) + userSettings: userSettings) } @Test @@ -77,7 +77,7 @@ struct SearchScreenViewModelTests { clientProxy: clientProxy, mediaProvider: MediaProviderMock(.init()), userIndicatorController: userIndicatorController, - appSettings: appSettings) + userSettings: userSettings) let deferred = deferFulfillment(viewModel.context.observe(\.viewState.rooms)) { !$0.isEmpty } viewModel.context.searchQuery = "room" @@ -130,13 +130,13 @@ struct SearchScreenViewModelTests { context.searchQuery = "Second" context.send(viewAction: .selectRoom(roomID: "2")) - #expect(appSettings.searchBreadcrumbs == [.room(roomID: "2"), .query("Second")]) + #expect(userSettings.searchBreadcrumbs == [.room(roomID: "2"), .query("Second")]) // Selecting the same room again from the empty state only bumps it back to the top. context.searchQuery = "" context.send(viewAction: .selectRoom(roomID: "2")) - #expect(appSettings.searchBreadcrumbs == [.room(roomID: "2"), .query("Second")]) + #expect(userSettings.searchBreadcrumbs == [.room(roomID: "2"), .query("Second")]) } @Test @@ -144,7 +144,7 @@ struct SearchScreenViewModelTests { staticRoomListSubject.send([.mock(id: "2", name: "Second")]) let deferred = deferFulfillment(context.observe(\.viewState.breadcrumbs)) { $0.count == 2 } - appSettings.searchBreadcrumbs = [.query("Second"), .room(roomID: "2")] + userSettings.searchBreadcrumbs = [.query("Second"), .room(roomID: "2")] try await deferred.fulfill() #expect(context.viewState.breadcrumbs.map(\.id) == ["query-Second", "room-2"]) @@ -154,7 +154,7 @@ struct SearchScreenViewModelTests { @Test func roomBreadcrumbsAreDisplayedAfterTheRoomListLoads() async throws { var deferred = deferFulfillment(context.observe(\.viewState.breadcrumbs)) { $0.count == 1 } - appSettings.searchBreadcrumbs = [.query("Second"), .room(roomID: "2")] + userSettings.searchBreadcrumbs = [.query("Second"), .room(roomID: "2")] try await deferred.fulfill() #expect(context.viewState.breadcrumbs.map(\.id) == ["query-Second"]) diff --git a/UnitTests/Sources/SecurityAndPrivacyScreenViewModelTests.swift b/UnitTests/Sources/SecurityAndPrivacyScreenViewModelTests.swift index 8a0748185..770a8b62a 100644 --- a/UnitTests/Sources/SecurityAndPrivacyScreenViewModelTests.swift +++ b/UnitTests/Sources/SecurityAndPrivacyScreenViewModelTests.swift @@ -457,9 +457,9 @@ final class SecurityAndPrivacyScreenViewModelTests { topLevelSpaces: [SpaceServiceRoom] = [], joinRule: ElementX.JoinRule, forceDisableE2EE: Bool = false) { - let appSettings = AppSettings.volatile() - appSettings.knockingEnabled = true - appSettings.forceDisableE2EE.applyRemoteValue(forceDisableE2EE) + let userSettings = UserSettings.volatile() + userSettings.knockingEnabled = true + userSettings.forceDisableE2EE.applyRemoteValue(forceDisableE2EE) roomProxy = JoinedRoomProxyMock(.init(isEncrypted: false, canonicalAlias: "#room:matrix.org", members: .allMembersAsCreator, @@ -473,6 +473,6 @@ final class SecurityAndPrivacyScreenViewModelTests { spaceServiceConfiguration: .init(topLevelSpaces: topLevelSpaces, joinedParentSpaces: joinedParentSpaces))), userIndicatorController: UserIndicatorControllerMock(), - appSettings: appSettings) + userSettings: userSettings) } } diff --git a/UnitTests/Sources/SessionVerificationViewModelTests.swift b/UnitTests/Sources/SessionVerificationViewModelTests.swift index f94be527e..0dda7b4a2 100644 --- a/UnitTests/Sources/SessionVerificationViewModelTests.swift +++ b/UnitTests/Sources/SessionVerificationViewModelTests.swift @@ -21,7 +21,7 @@ struct SessionVerificationViewModelTests { sessionVerificationController = SessionVerificationControllerProxyMock.configureMock() viewModel = SessionVerificationScreenViewModel(sessionVerificationControllerProxy: sessionVerificationController, flow: .deviceInitiator, - appSettings: .volatile(), + userSettings: .volatile(), mediaProvider: MediaProviderMock(.init())) context = viewModel.context } diff --git a/UnitTests/Sources/SettingsScreenViewModelTests.swift b/UnitTests/Sources/SettingsScreenViewModelTests.swift index 24f722ed1..e899a9bcb 100644 --- a/UnitTests/Sources/SettingsScreenViewModelTests.swift +++ b/UnitTests/Sources/SettingsScreenViewModelTests.swift @@ -177,7 +177,7 @@ struct SettingsScreenViewModelTests { private mutating func setupViewModel(status: UserStatus = .init()) { clientProxy = ClientProxyMock(.init(userID: "", status: status)) viewModel = SettingsScreenViewModel(userSession: UserSessionMock(.init(clientProxy: clientProxy)), - appSettings: AppSettings.volatile(), + userSettings: UserSettings.volatile(), isBugReportServiceEnabled: true, isInSecondaryWindow: false, userIndicatorController: UserIndicatorControllerMock()) diff --git a/UnitTests/Sources/TimelineInteractionHandlerTests.swift b/UnitTests/Sources/TimelineInteractionHandlerTests.swift index 4ffa45043..ce6ff0183 100644 --- a/UnitTests/Sources/TimelineInteractionHandlerTests.swift +++ b/UnitTests/Sources/TimelineInteractionHandlerTests.swift @@ -210,8 +210,6 @@ struct TimelineInteractionHandlerTests { let userSession = UserSessionMock(.init()) userSession.voiceMessageMediaManager = voiceMessageMediaManager - let appSettings = AppSettings.volatile() - return TimelineInteractionHandler(roomProxy: JoinedRoomProxyMock(.init()), timelineController: TimelineControllerMock(.init(timelineItems: timelineItems)), userSession: userSession, @@ -219,9 +217,8 @@ struct TimelineInteractionHandlerTests { voiceMessageRecorder: voiceMessageRecorder, userIndicatorController: UserIndicatorControllerMock(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) } diff --git a/UnitTests/Sources/TimelineItemMenuActionProviderTests.swift b/UnitTests/Sources/TimelineItemMenuActionProviderTests.swift index 782a27025..01d576539 100644 --- a/UnitTests/Sources/TimelineItemMenuActionProviderTests.swift +++ b/UnitTests/Sources/TimelineItemMenuActionProviderTests.swift @@ -123,7 +123,7 @@ struct TimelineItemMenuActionProviderTests { isViewSourceEnabled: true, areThreadsEnabled: true, timelineKind: timelineKind, - emojiProvider: EmojiProvider(appSettings: .volatile())) + emojiProvider: EmojiProvider(userSettings: .volatile())) .makeActions() } } diff --git a/UnitTests/Sources/TimelineViewModelTests.swift b/UnitTests/Sources/TimelineViewModelTests.swift index e3fe183ce..57f135402 100644 --- a/UnitTests/Sources/TimelineViewModelTests.swift +++ b/UnitTests/Sources/TimelineViewModelTests.swift @@ -294,17 +294,14 @@ final class TimelineViewModelTests { let timelineController = TimelineControllerMock(.init(roomProxy: roomProxy, timelineItems: items)) - let appSettings = AppSettings.volatile() - let viewModel = TimelineViewModel(roomProxy: roomProxy, timelineController: timelineController, userSession: UserSessionMock(.init()), mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: UserIndicatorControllerMock(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) return (viewModel, roomProxy, timelineProxy, timelineController) @@ -320,8 +317,6 @@ final class TimelineViewModelTests { addReadReceipts: receipts) let id = message.id - let appSettings = AppSettings.volatile() - // When showing them in a timeline. let timelineController = TimelineControllerMock(.init(timelineItems: [message])) let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])), @@ -330,9 +325,8 @@ final class TimelineViewModelTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: UserIndicatorControllerMock(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) @@ -346,8 +340,6 @@ final class TimelineViewModelTests { @Test func showManageUserAsAdmin() async throws { - let appSettings = AppSettings.volatile() - let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAdmin, RoomMemberProxyMock.mockAlice], @@ -357,9 +349,8 @@ final class TimelineViewModelTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: UserIndicatorControllerMock(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) @@ -385,8 +376,6 @@ final class TimelineViewModelTests { @Test func showDetailsForAnAdmin() async throws { - let appSettings = AppSettings.volatile() - let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAdmin, RoomMemberProxyMock.mockAlice], @@ -396,9 +385,8 @@ final class TimelineViewModelTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: UserIndicatorControllerMock(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) @@ -424,8 +412,6 @@ final class TimelineViewModelTests { @Test func showDetailsForABannedUser() async throws { - let appSettings = AppSettings.volatile() - let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAdmin, RoomMemberProxyMock.mockBanned[0]], @@ -435,9 +421,8 @@ final class TimelineViewModelTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: UserIndicatorControllerMock(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) @@ -466,8 +451,6 @@ final class TimelineViewModelTests { @Test func pinnedEvents() async throws { - let appSettings = AppSettings.volatile() - var configuration = JoinedRoomProxyMockConfiguration(name: "", pinnedEventIDs: .init(["test1"])) let roomProxyMock = JoinedRoomProxyMock(configuration) @@ -480,9 +463,8 @@ final class TimelineViewModelTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: UserIndicatorControllerMock(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) #expect(configuration.pinnedEventIDs == viewModel.context.viewState.pinnedEventIDs) @@ -497,8 +479,6 @@ final class TimelineViewModelTests { @Test func canUserPinEvents() async throws { - let appSettings = AppSettings.volatile() - let configuration = JoinedRoomProxyMockConfiguration(name: "", powerLevelsConfiguration: .init(canUserPin: true)) let roomProxyMock = JoinedRoomProxyMock(configuration) @@ -511,9 +491,8 @@ final class TimelineViewModelTests { mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: UserIndicatorControllerMock(), appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) @@ -915,15 +894,15 @@ final class TimelineViewModelTests { @Test func disablingTheFlagClearsTheSelection() async throws { let items = [TextRoomTimelineItem(eventID: "$1")] - let appSettings = AppSettings.volatile() - appSettings.messageMultiSelectEnabled = true - let viewModel = makeViewModel(timelineController: TimelineControllerMock(.init(timelineItems: items)), appSettings: appSettings) + let userSettings = UserSettings.volatile() + userSettings.messageMultiSelectEnabled = true + let viewModel = makeViewModel(timelineController: TimelineControllerMock(.init(timelineItems: items)), userSettings: userSettings) startSelection(items[0].id, in: viewModel) #expect(viewModel.state.messageSelection.isActive) let deferred = deferFulfillment(viewModel.context.$viewState) { !$0.messageSelection.isEnabled && !$0.messageSelection.isActive } - appSettings.messageMultiSelectEnabled = false + userSettings.messageMultiSelectEnabled = false try await deferred.fulfill() } @@ -933,17 +912,16 @@ final class TimelineViewModelTests { focussedEventID: String? = nil, timelineController: TimelineControllerProtocol, userIndicatorController: UserIndicatorControllerProtocol = UserIndicatorControllerMock(), - appSettings: AppSettings = .volatile()) -> TimelineViewModel { + userSettings: UserSettings = .volatile()) -> TimelineViewModel { TimelineViewModel(roomProxy: roomProxy ?? JoinedRoomProxyMock(.init(name: "")), focussedEventID: focussedEventID, timelineController: timelineController, - userSession: UserSessionMock(.init()), + userSession: UserSessionMock(.init(userSettings: userSettings)), mediaPlayerProvider: MediaPlayerProviderMock(), userIndicatorController: userIndicatorController, appMediator: AppMediatorMock(.init()), - appSettings: appSettings, analyticsService: AnalyticsServiceMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: .volatile()), linkMetadataProvider: LinkMetadataProvider(), timelineControllerFactory: TimelineControllerFactoryMock(.init())) } @@ -961,11 +939,11 @@ final class TimelineViewModelTests { private func makeSelectionViewModel(timelineController: TimelineControllerProtocol, userIndicatorController: UserIndicatorControllerProtocol = UserIndicatorControllerMock()) -> TimelineViewModel { - let appSettings = AppSettings.volatile() - appSettings.messageMultiSelectEnabled = true + let userSettings = UserSettings.volatile() + userSettings.messageMultiSelectEnabled = true return makeViewModel(timelineController: timelineController, userIndicatorController: userIndicatorController, - appSettings: appSettings) + userSettings: userSettings) } } diff --git a/UnitTests/Sources/UserDetailsEditScreenViewModelTests.swift b/UnitTests/Sources/UserDetailsEditScreenViewModelTests.swift index dcce979d3..6eeb0a3cb 100644 --- a/UnitTests/Sources/UserDetailsEditScreenViewModelTests.swift +++ b/UnitTests/Sources/UserDetailsEditScreenViewModelTests.swift @@ -20,7 +20,7 @@ struct UserDetailsEditScreenViewModelTests { init() { viewModel = .init(userSession: UserSessionMock(.init()), - mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: .volatile()), + mediaUploadingPreprocessor: MediaUploadingPreprocessor(userSettings: .volatile()), userIndicatorController: UserIndicatorControllerMock()) } diff --git a/UnitTests/Sources/UserSessionFlowCoordinatorTests.swift b/UnitTests/Sources/UserSessionFlowCoordinatorTests.swift index 6a3d50cb9..b8b66e775 100644 --- a/UnitTests/Sources/UserSessionFlowCoordinatorTests.swift +++ b/UnitTests/Sources/UserSessionFlowCoordinatorTests.swift @@ -48,16 +48,16 @@ struct UserSessionFlowCoordinatorTests { appMediator.networkMonitor = networkMonitor userIndicatorController = UserIndicatorControllerMock() - let appSettings = AppSettings.volatile() + let userSettings = UserSettings.volatile() let flowParameters = CommonFlowParameters(userSession: UserSessionMock(.init(clientProxy: clientProxy)), bugReportService: BugReportServiceMock(.init()), elementCallService: ElementCallServiceMock(.init()), timelineControllerFactory: TimelineControllerFactoryMock(.init()), - emojiProvider: EmojiProvider(appSettings: appSettings), + emojiProvider: EmojiProvider(userSettings: userSettings), linkMetadataProvider: LinkMetadataProvider(), appMediator: appMediator, - appSettings: appSettings, + userSettings: userSettings, appHooks: AppHooks(), analytics: AnalyticsServiceMock(.init()), userIndicatorController: userIndicatorController,