Add analytics for Room Moderation. (#2571)

* Add an option to use analytics locally.

* Add analytics for Room Moderation.

* Update tests.

* Include the role in the event where appropriate.

* Update the AnalyticsEvents package.
This commit is contained in:
Doug
2024-03-14 15:55:37 +00:00
committed by GitHub
parent d2a9db874d
commit c68ec2c382
26 changed files with 185 additions and 60 deletions
@@ -28,25 +28,19 @@ class RoomRolesAndPermissionsScreenViewModelTests: XCTestCase {
}
func testEmptyCounters() {
roomProxy = RoomProxyMock(with: .init())
viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy,
userIndicatorController: UserIndicatorControllerMock())
setupViewModel(members: .allMembers)
XCTAssertEqual(context.viewState.administratorCount, 0)
XCTAssertEqual(context.viewState.moderatorCount, 0)
}
func testFilledCounters() {
roomProxy = RoomProxyMock(with: .init(members: .allMembersAsAdmin))
viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy,
userIndicatorController: UserIndicatorControllerMock())
setupViewModel(members: .allMembersAsAdmin)
XCTAssertEqual(context.viewState.administratorCount, 2)
XCTAssertEqual(context.viewState.moderatorCount, 1)
}
func testResetPermissions() async throws {
roomProxy = RoomProxyMock(with: .init(members: .allMembersAsAdmin))
viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy,
userIndicatorController: UserIndicatorControllerMock())
setupViewModel(members: .allMembersAsAdmin)
context.send(viewAction: .reset)
XCTAssertNotNil(context.alertInfo)
@@ -59,9 +53,7 @@ class RoomRolesAndPermissionsScreenViewModelTests: XCTestCase {
}
func testDemoteToModerator() async throws {
roomProxy = RoomProxyMock(with: .init(members: .allMembersAsAdmin))
viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy,
userIndicatorController: UserIndicatorControllerMock())
setupViewModel(members: .allMembersAsAdmin)
context.send(viewAction: .editOwnUserRole)
XCTAssertNotNil(context.alertInfo)
@@ -76,9 +68,7 @@ class RoomRolesAndPermissionsScreenViewModelTests: XCTestCase {
}
func testDemoteToMember() async throws {
roomProxy = RoomProxyMock(with: .init(members: .allMembersAsAdmin))
viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy,
userIndicatorController: UserIndicatorControllerMock())
setupViewModel(members: .allMembersAsAdmin)
context.send(viewAction: .editOwnUserRole)
XCTAssertNotNil(context.alertInfo)
@@ -91,4 +81,11 @@ class RoomRolesAndPermissionsScreenViewModelTests: XCTestCase {
XCTAssertEqual(roomProxy.updatePowerLevelsForUsersReceivedUpdates?.first?.powerLevel,
RoomMemberDetails.Role.user.rustPowerLevel)
}
private func setupViewModel(members: [RoomMemberProxyMock]) {
roomProxy = RoomProxyMock(with: .init(members: members))
viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy,
userIndicatorController: UserIndicatorControllerMock(),
analytics: ServiceLocator.shared.analytics)
}
}