mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Update the SDK and handle breaking changes. (#2527)
This commit is contained in:
@@ -27,7 +27,7 @@ final class CompletionSuggestionServiceTests: XCTestCase {
|
||||
cancellables.removeAll()
|
||||
}
|
||||
|
||||
func testUserSuggestons() async throws {
|
||||
func testUserSuggestions() async throws {
|
||||
let alice: RoomMemberProxyMock = .mockAlice
|
||||
let members: [RoomMemberProxyMock] = [alice, .mockBob, .mockCharlie, .mockMe]
|
||||
let roomProxyMock = RoomProxyMock(with: .init(name: "test", members: members))
|
||||
@@ -64,7 +64,7 @@ final class CompletionSuggestionServiceTests: XCTestCase {
|
||||
try await deferred.fulfill()
|
||||
}
|
||||
|
||||
func testUserSuggestonsIncludingAllUsers() async throws {
|
||||
func testUserSuggestionsIncludingAllUsers() async throws {
|
||||
let alice: RoomMemberProxyMock = .mockAlice
|
||||
let members: [RoomMemberProxyMock] = [alice, .mockBob, .mockCharlie, .mockMe]
|
||||
let roomProxyMock = RoomProxyMock(with: .init(name: "test", members: members, canUserTriggerRoomNotification: true))
|
||||
|
||||
@@ -27,9 +27,11 @@ class ReportContentScreenViewModelTests: XCTestCase {
|
||||
// Given the report content view for some content.
|
||||
let roomProxy = RoomProxyMock(with: .init(name: "test"))
|
||||
roomProxy.reportContentReasonReturnValue = .success(())
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
let viewModel = ReportContentScreenViewModel(eventID: eventID,
|
||||
senderID: senderID,
|
||||
roomProxy: roomProxy)
|
||||
roomProxy: roomProxy,
|
||||
clientProxy: clientProxy)
|
||||
|
||||
// When reporting the content without ignoring the user.
|
||||
viewModel.state.bindings.reasonText = reportReason
|
||||
@@ -46,18 +48,19 @@ class ReportContentScreenViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(roomProxy.reportContentReasonCallsCount, 1, "The content should always be reported.")
|
||||
XCTAssertEqual(roomProxy.reportContentReasonReceivedArguments?.eventID, eventID, "The event ID should match the content being reported.")
|
||||
XCTAssertEqual(roomProxy.reportContentReasonReceivedArguments?.reason, reportReason, "The reason should match the user input.")
|
||||
XCTAssertEqual(roomProxy.ignoreUserCallsCount, 0, "A call to ignore a user should not have been made.")
|
||||
XCTAssertNil(roomProxy.ignoreUserReceivedUserID, "The sender shouldn't have been ignored.")
|
||||
XCTAssertEqual(clientProxy.ignoreUserCallsCount, 0, "A call to ignore a user should not have been made.")
|
||||
XCTAssertNil(clientProxy.ignoreUserReceivedUserID, "The sender shouldn't have been ignored.")
|
||||
}
|
||||
|
||||
func testReportIgnoringSender() async throws {
|
||||
// Given the report content view for some content.
|
||||
let roomProxy = RoomProxyMock(with: .init(name: "test"))
|
||||
roomProxy.reportContentReasonReturnValue = .success(())
|
||||
roomProxy.ignoreUserReturnValue = .success(())
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
let viewModel = ReportContentScreenViewModel(eventID: eventID,
|
||||
senderID: senderID,
|
||||
roomProxy: roomProxy)
|
||||
roomProxy: roomProxy,
|
||||
clientProxy: clientProxy)
|
||||
|
||||
// When reporting the content and also ignoring the user.
|
||||
viewModel.state.bindings.reasonText = reportReason
|
||||
@@ -75,7 +78,7 @@ class ReportContentScreenViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(roomProxy.reportContentReasonCallsCount, 1, "The content should always be reported.")
|
||||
XCTAssertEqual(roomProxy.reportContentReasonReceivedArguments?.eventID, eventID, "The event ID should match the content being reported.")
|
||||
XCTAssertEqual(roomProxy.reportContentReasonReceivedArguments?.reason, reportReason, "The reason should match the user input.")
|
||||
XCTAssertEqual(roomProxy.ignoreUserCallsCount, 1, "A call should have been made to ignore the sender.")
|
||||
XCTAssertEqual(roomProxy.ignoreUserReceivedUserID, senderID, "The ignored user ID should match the sender.")
|
||||
XCTAssertEqual(clientProxy.ignoreUserCallsCount, 1, "A call should have been made to ignore the sender.")
|
||||
XCTAssertEqual(clientProxy.ignoreUserReceivedUserID, senderID, "The ignored user ID should match the sender.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,61 +30,57 @@ class RoomDetailsEditScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testCannotSaveOnLanding() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMeAdmin]))
|
||||
XCTAssertFalse(context.viewState.canSave)
|
||||
}
|
||||
|
||||
func testCanEdit() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
func testCanEdit() async throws {
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMeAdmin]))
|
||||
|
||||
let deferred = deferFulfillment(context.$viewState) { $0.canEditName }
|
||||
try await deferred.fulfill()
|
||||
|
||||
XCTAssertTrue(context.viewState.canEditAvatar)
|
||||
XCTAssertTrue(context.viewState.canEditName)
|
||||
XCTAssertTrue(context.viewState.canEditTopic)
|
||||
}
|
||||
|
||||
func testCannotEdit() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: []),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMe]))
|
||||
XCTAssertFalse(context.viewState.canEditAvatar)
|
||||
XCTAssertFalse(context.viewState.canEditName)
|
||||
XCTAssertFalse(context.viewState.canEditTopic)
|
||||
}
|
||||
|
||||
func testNameDidChange() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMeAdmin]))
|
||||
context.name = "name"
|
||||
XCTAssertTrue(context.viewState.nameDidChange)
|
||||
XCTAssertTrue(context.viewState.canSave)
|
||||
}
|
||||
|
||||
func testTopicDidChange() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMeAdmin]))
|
||||
context.topic = "topic"
|
||||
XCTAssertTrue(context.viewState.topicDidChange)
|
||||
XCTAssertTrue(context.viewState.canSave)
|
||||
}
|
||||
|
||||
func testAvatarDidChange() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room", avatarURL: .picturesDirectory))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", avatarURL: .picturesDirectory, members: [.mockMeAdmin]))
|
||||
context.send(viewAction: .removeImage)
|
||||
XCTAssertTrue(context.viewState.avatarDidChange)
|
||||
XCTAssertTrue(context.viewState.canSave)
|
||||
}
|
||||
|
||||
func testEmptyNameCannotBeSaved() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMeAdmin]))
|
||||
context.name = ""
|
||||
XCTAssertFalse(context.viewState.canSave)
|
||||
}
|
||||
|
||||
func testSaveShowsSheet() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMeAdmin]))
|
||||
context.name = "name"
|
||||
XCTAssertFalse(context.showMediaSheet)
|
||||
context.send(viewAction: .presentMediaSource)
|
||||
@@ -92,8 +88,7 @@ class RoomDetailsEditScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testSaveTriggersViewModelAction() async throws {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMeAdmin]))
|
||||
|
||||
let deferred = deferFulfillment(viewModel.actions) { action in
|
||||
action == .saveFinished
|
||||
@@ -107,16 +102,14 @@ class RoomDetailsEditScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testErrorShownOnFailedFetchOfMedia() async throws {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room"))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", members: [.mockMeAdmin]))
|
||||
viewModel.didSelectMediaUrl(url: .picturesDirectory)
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
XCTAssertNotNil(userIndicatorController.alertInfo)
|
||||
}
|
||||
|
||||
func testDeleteAvatar() {
|
||||
setupViewModel(accountOwner: .mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]),
|
||||
roomProxyConfiguration: .init(name: "Some room", avatarURL: .picturesDirectory))
|
||||
setupViewModel(roomProxyConfiguration: .init(name: "Some room", avatarURL: .picturesDirectory, members: [.mockMeAdmin]))
|
||||
XCTAssertNotNil(context.viewState.avatarURL)
|
||||
context.send(viewAction: .removeImage)
|
||||
XCTAssertNil(context.viewState.avatarURL)
|
||||
@@ -124,11 +117,10 @@ class RoomDetailsEditScreenViewModelTests: XCTestCase {
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
private func setupViewModel(accountOwner: RoomMemberProxyMock, roomProxyConfiguration: RoomProxyMockConfiguration) {
|
||||
private func setupViewModel(roomProxyConfiguration: RoomProxyMockConfiguration) {
|
||||
userIndicatorController = UserIndicatorControllerMock.default
|
||||
viewModel = .init(accountOwner: accountOwner,
|
||||
viewModel = .init(roomProxy: RoomProxyMock(with: roomProxyConfiguration),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
roomProxy: RoomProxyMock(with: roomProxyConfiguration),
|
||||
userIndicatorController: userIndicatorController)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,8 +33,8 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
cancellables.removeAll()
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test"))
|
||||
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -48,8 +48,8 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
func testLeaveRoomTappedWhenPublic() async throws {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isPublic: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -70,8 +70,8 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
func testLeaveRoomTappedWhenRoomNotPublic() async throws {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -93,8 +93,8 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
func testLeaveRoomTappedWithLessThanTwoMembers() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -146,8 +146,8 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
let recipient = RoomMemberProxyMock.mockDan
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -166,15 +166,11 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testIgnoreSuccess() async throws {
|
||||
let recipient = RoomMemberProxyMock.mockDan
|
||||
recipient.ignoreUserClosure = {
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
return .success(())
|
||||
}
|
||||
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -203,14 +199,12 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testIgnoreFailure() async throws {
|
||||
let recipient = RoomMemberProxyMock.mockDan
|
||||
recipient.ignoreUserClosure = {
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
return .failure(.ignoreUserFailed)
|
||||
}
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
clientProxy.ignoreUserReturnValue = .failure(.failedIgnoringUser)
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: clientProxy,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -240,14 +234,10 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testUnignoreSuccess() async throws {
|
||||
let recipient = RoomMemberProxyMock.mockIgnored
|
||||
recipient.unignoreUserClosure = {
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
return .success(())
|
||||
}
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -276,14 +266,12 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testUnignoreFailure() async throws {
|
||||
let recipient = RoomMemberProxyMock.mockIgnored
|
||||
recipient.unignoreUserClosure = {
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
return .failure(.unignoreUserFailed)
|
||||
}
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
clientProxy.unignoreUserReturnValue = .failure(.failedUnignoringUser)
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: clientProxy,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -312,13 +300,13 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testCannotInvitePeople() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test",
|
||||
isPublic: true,
|
||||
members: mockedMembers,
|
||||
memberForID: .mockOwner(allowedStateEvents: [], canInviteUsers: false)))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
canUserInvite: false))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -334,8 +322,8 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
func testInvitePeople() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isPublic: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -365,11 +353,13 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testCanEditAvatar() async {
|
||||
let owner: RoomMemberProxyMock = .mockOwner(allowedStateEvents: [.roomAvatar])
|
||||
let mockedMembers: [RoomMemberProxyMock] = [owner, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers, memberForID: owner))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomAvatar)
|
||||
}
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -386,11 +376,13 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testCanEditName() async {
|
||||
let owner: RoomMemberProxyMock = .mockOwner(allowedStateEvents: [.roomName])
|
||||
let mockedMembers: [RoomMemberProxyMock] = [owner, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers, memberForID: owner))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomName)
|
||||
}
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -407,11 +399,13 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testCanEditTopic() async {
|
||||
let owner: RoomMemberProxyMock = .mockOwner(allowedStateEvents: [.roomTopic])
|
||||
let mockedMembers: [RoomMemberProxyMock] = [owner, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers, memberForID: owner))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomTopic)
|
||||
}
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -428,11 +422,10 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testCannotEditRoom() async {
|
||||
let owner: RoomMemberProxyMock = .mockOwner(allowedStateEvents: [])
|
||||
let mockedMembers: [RoomMemberProxyMock] = [owner, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers, memberForID: owner))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -449,10 +442,10 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testCannotEditDirectRoom() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockOwner(allowedStateEvents: [.roomAvatar, .roomName, .roomTopic]), .mockBob, .mockAlice]
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMeAdmin, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
@@ -469,8 +462,8 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testNotificationLoadingSettingsFailure() async throws {
|
||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
|
||||
@@ -35,8 +35,9 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
||||
|
||||
func testInitialState() async throws {
|
||||
roomMemberProxyMock = RoomMemberProxyMock.mockAlice
|
||||
viewModel = RoomMemberDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
userID: roomMemberProxyMock.userID,
|
||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||
roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
|
||||
@@ -50,12 +51,9 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
||||
|
||||
func testIgnoreSuccess() async throws {
|
||||
roomMemberProxyMock = RoomMemberProxyMock.mockAlice
|
||||
roomMemberProxyMock.ignoreUserClosure = {
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
return .success(())
|
||||
}
|
||||
viewModel = RoomMemberDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
userID: roomMemberProxyMock.userID,
|
||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||
roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
|
||||
@@ -88,12 +86,11 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
||||
|
||||
func testIgnoreFailure() async throws {
|
||||
roomMemberProxyMock = RoomMemberProxyMock.mockAlice
|
||||
roomMemberProxyMock.ignoreUserClosure = {
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
return .failure(.ignoreUserFailed)
|
||||
}
|
||||
viewModel = RoomMemberDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
userID: roomMemberProxyMock.userID,
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
clientProxy.ignoreUserReturnValue = .failure(.failedIgnoringUser)
|
||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||
roomProxy: roomProxyMock,
|
||||
clientProxy: clientProxy,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
|
||||
@@ -126,13 +123,10 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
||||
|
||||
func testUnignoreSuccess() async throws {
|
||||
roomMemberProxyMock = RoomMemberProxyMock.mockIgnored
|
||||
roomMemberProxyMock.unignoreUserClosure = {
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
return .success(())
|
||||
}
|
||||
|
||||
viewModel = RoomMemberDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
userID: roomMemberProxyMock.userID,
|
||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||
roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
|
||||
@@ -163,12 +157,11 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
||||
|
||||
func testUnignoreFailure() async throws {
|
||||
roomMemberProxyMock = RoomMemberProxyMock.mockIgnored
|
||||
roomMemberProxyMock.unignoreUserClosure = {
|
||||
try? await Task.sleep(for: .milliseconds(100))
|
||||
return .failure(.unignoreUserFailed)
|
||||
}
|
||||
viewModel = RoomMemberDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
userID: roomMemberProxyMock.userID,
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
clientProxy.unignoreUserReturnValue = .failure(.failedUnignoringUser)
|
||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||
roomProxy: roomProxyMock,
|
||||
clientProxy: clientProxy,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
|
||||
@@ -201,8 +194,9 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
||||
|
||||
func testInitialStateAccountOwner() async throws {
|
||||
roomMemberProxyMock = RoomMemberProxyMock.mockMe
|
||||
viewModel = RoomMemberDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
userID: roomMemberProxyMock.userID,
|
||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||
roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
|
||||
@@ -216,8 +210,9 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
||||
|
||||
func testInitialStateIgnoredUser() async throws {
|
||||
roomMemberProxyMock = RoomMemberProxyMock.mockIgnored
|
||||
viewModel = RoomMemberDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
userID: roomMemberProxyMock.userID,
|
||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||
roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user