Make AnalyticsService mockable via `AnalyticsServiceProtocol (#5599)

* Create AnalyticsServiceProtocol and conform AnalyticsService

* Replace AnalyticsService properties and arguments with AnalyticsServiceProtocol

* Inline AnalyticsServiceMock replacing old mock

* handle more complex AnalyticsServiceMock callsites

* move documentation from AnalyticsService to AnalyticsServiceProtocol
This commit is contained in:
Michael
2026-05-20 00:23:58 -05:00
committed by GitHub
parent 946cb53559
commit 5a07c98afc
118 changed files with 1218 additions and 505 deletions
@@ -222,13 +222,10 @@ struct HomeScreen_Previews: PreviewProvider, TestablePreview {
let userSession = UserSessionMock(.init(clientProxy: clientProxy))
let appSettings = AppSettings()
let analytics = AnalyticsService.mock(settings: appSettings)
return HomeScreenViewModel(userSession: userSession,
selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(),
appSettings: appSettings,
analyticsService: analytics,
appSettings: AppSettings(),
analyticsService: AnalyticsServiceMock.default(),
notificationManager: NotificationManagerMock(),
userIndicatorController: UserIndicatorControllerMock.default)
}
@@ -143,13 +143,10 @@ struct HomeScreenEmptyStateView_Previews: PreviewProvider, TestablePreview {
static let viewModel = {
let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@user:example.com",
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([])))))))
let appSettings = AppSettings()
let analytics = AnalyticsService.mock(settings: appSettings)
return HomeScreenViewModel(userSession: userSession,
selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(),
appSettings: appSettings,
analyticsService: analytics,
appSettings: AppSettings(),
analyticsService: AnalyticsServiceMock.default(),
notificationManager: NotificationManagerMock(),
userIndicatorController: UserIndicatorControllerMock.default)
}()
@@ -200,13 +200,10 @@ struct HomeScreenInviteCell_Previews: PreviewProvider, TestablePreview {
let userSession = UserSessionMock(.init(clientProxy: clientProxy))
let appSettings = AppSettings()
let analytics = AnalyticsService.mock(settings: appSettings)
return HomeScreenViewModel(userSession: userSession,
selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(),
appSettings: appSettings,
analyticsService: analytics,
appSettings: AppSettings(),
analyticsService: AnalyticsServiceMock.default(),
notificationManager: NotificationManagerMock(),
userIndicatorController: UserIndicatorControllerMock.default)
}
@@ -132,13 +132,10 @@ struct HomeScreenKnockedCell_Previews: PreviewProvider, TestablePreview {
let userSession = UserSessionMock(.init(clientProxy: clientProxy))
let appSettings = AppSettings()
let analytics = AnalyticsService.mock(settings: appSettings)
return HomeScreenViewModel(userSession: userSession,
selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(),
appSettings: appSettings,
analyticsService: analytics,
appSettings: AppSettings(),
analyticsService: AnalyticsServiceMock.default(),
notificationManager: NotificationManagerMock(),
userIndicatorController: UserIndicatorControllerMock.default)
}
@@ -121,13 +121,10 @@ struct HomeScreenRecoveryKeyConfirmationBanner_Previews: PreviewProvider, Testab
let userSession = UserSessionMock(.init(clientProxy: clientProxy))
let appSettings = AppSettings()
let analytics = AnalyticsService.mock(settings: appSettings)
return HomeScreenViewModel(userSession: userSession,
selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(),
appSettings: appSettings,
analyticsService: analytics,
appSettings: AppSettings(),
analyticsService: AnalyticsServiceMock.default(),
notificationManager: NotificationManagerMock(),
userIndicatorController: UserIndicatorControllerMock.default)
}
@@ -253,13 +253,10 @@ struct HomeScreenRoomCell_Previews: PreviewProvider, TestablePreview {
static func makeViewModel(roomSummaryProvider: RoomSummaryProviderProtocol) -> HomeScreenViewModel {
let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "John Doe", roomSummaryProvider: roomSummaryProvider))))
let appSettings = AppSettings()
let analytics = AnalyticsService.mock(settings: appSettings)
return HomeScreenViewModel(userSession: userSession,
selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(),
appSettings: appSettings,
analyticsService: analytics,
appSettings: AppSettings(),
analyticsService: AnalyticsServiceMock.default(),
notificationManager: NotificationManagerMock(),
userIndicatorController: UserIndicatorControllerMock.default)
}