mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Added a disclaimer in Notification Settings for "Mentions Only" (#2081)
This commit is contained in:
@@ -72,6 +72,49 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
|
||||
XCTAssertEqual(context.viewState.defaultMode, .mentionsAndKeywordsOnly)
|
||||
XCTAssertNil(context.viewState.bindings.alertInfo)
|
||||
XCTAssertFalse(context.viewState.canHomeServerPushEncryptedEvents)
|
||||
XCTAssertNotNil(context.viewState.description(for: .mentionsAndKeywordsOnly))
|
||||
}
|
||||
|
||||
func testFetchSettingsWithCanPushEncryptedEvents() async throws {
|
||||
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneClosure = { isEncrypted, isOneToOne in
|
||||
switch (isEncrypted, isOneToOne) {
|
||||
case (_, true):
|
||||
return .allMessages
|
||||
case (_, _):
|
||||
return .mentionsAndKeywordsOnly
|
||||
}
|
||||
}
|
||||
notificationSettingsProxy.canHomeserverPushEncryptedEventsToDeviceClosure = {
|
||||
true
|
||||
}
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.defaultMode != nil
|
||||
}
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
// `getDefaultRoomNotificationModeIsEncryptedIsOneToOne` must have been called twice (for encrypted and unencrypted group chats)
|
||||
let invocations = notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReceivedInvocations
|
||||
|
||||
XCTAssertEqual(invocations.count, 2)
|
||||
// First call for encrypted group chats
|
||||
XCTAssertEqual(invocations[0].isEncrypted, true)
|
||||
XCTAssertEqual(invocations[0].isOneToOne, false)
|
||||
// Second call for unencrypted group chats
|
||||
XCTAssertEqual(invocations[1].isEncrypted, false)
|
||||
XCTAssertEqual(invocations[1].isOneToOne, false)
|
||||
|
||||
XCTAssertEqual(context.viewState.defaultMode, .mentionsAndKeywordsOnly)
|
||||
XCTAssertNil(context.viewState.bindings.alertInfo)
|
||||
XCTAssertTrue(context.viewState.canHomeServerPushEncryptedEvents)
|
||||
XCTAssertNil(context.viewState.description(for: .mentionsAndKeywordsOnly))
|
||||
}
|
||||
|
||||
func testSetModeAllMessages() async throws {
|
||||
|
||||
@@ -32,8 +32,8 @@ class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
}
|
||||
|
||||
func testInitialStateDefaultMode() async throws {
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", joinedMembersCount: 0))
|
||||
func testInitialStateDefaultModeEncryptedRoom() async throws {
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: true, joinedMembersCount: 0))
|
||||
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
|
||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
|
||||
@@ -50,6 +50,52 @@ class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
try await deferred.fulfill()
|
||||
|
||||
XCTAssertFalse(viewModel.context.allowCustomSetting)
|
||||
XCTAssertTrue(viewModel.context.viewState.shouldDisplayMentionsOnlyDisclaimer)
|
||||
XCTAssertNotNil(viewModel.context.viewState.description(mode: .mentionsAndKeywordsOnly))
|
||||
}
|
||||
|
||||
func testInitialStateDefaultModeEncryptedRoomWithCanPushEncrypted() async throws {
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: true, joinedMembersCount: 0))
|
||||
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: .init(canHomeserverPushEncryptedEvents: true))
|
||||
|
||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
|
||||
|
||||
let viewModel = RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxyMock,
|
||||
roomProxy: roomProxyMock,
|
||||
displayAsUserDefinedRoomSettings: false)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.notificationSettingsState.isLoaded
|
||||
}
|
||||
|
||||
notificationSettingsProxyMock.callbacks.send(.settingsDidChange)
|
||||
try await deferred.fulfill()
|
||||
|
||||
XCTAssertFalse(viewModel.context.allowCustomSetting)
|
||||
XCTAssertFalse(viewModel.context.viewState.shouldDisplayMentionsOnlyDisclaimer)
|
||||
XCTAssertNil(viewModel.context.viewState.description(mode: .mentionsAndKeywordsOnly))
|
||||
}
|
||||
|
||||
func testInitialStateDefaultModeUnencryptedRoom() async throws {
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: false, joinedMembersCount: 0))
|
||||
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
|
||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
|
||||
|
||||
let viewModel = RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxyMock,
|
||||
roomProxy: roomProxyMock,
|
||||
displayAsUserDefinedRoomSettings: false)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.notificationSettingsState.isLoaded
|
||||
}
|
||||
|
||||
notificationSettingsProxyMock.callbacks.send(.settingsDidChange)
|
||||
try await deferred.fulfill()
|
||||
|
||||
XCTAssertFalse(viewModel.context.allowCustomSetting)
|
||||
XCTAssertFalse(viewModel.context.viewState.shouldDisplayMentionsOnlyDisclaimer)
|
||||
XCTAssertNil(viewModel.context.viewState.description(mode: .mentionsAndKeywordsOnly))
|
||||
}
|
||||
|
||||
func testInitialStateCustomMode() async throws {
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:079404f4f75675434fae3f30eb0ed9c1e518ffd54d906377c0c5b0f3a674c9a8
|
||||
size 86893
|
||||
oid sha256:ce476aa338694340df878df31e12240481afcda2531599c6636d0367356180d0
|
||||
size 103319
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:22d50be6a710056db52d44a3ccb36b70892a2858efa79e7d48033cd082ba610c
|
||||
size 86704
|
||||
oid sha256:6f0f5853cdc2865fdf622de333e31b53acfccd945f35085990f02031c3978e05
|
||||
size 103330
|
||||
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:16268407b37510cc9ec162e62db9789051471119d5e18dc72a49c8bbc5b09d13
|
||||
size 103672
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ea1a397f5b093408427d418fed45cb52ce9f2660bfcc5b0ddb165dbd04e9b393
|
||||
size 87137
|
||||
oid sha256:16268407b37510cc9ec162e62db9789051471119d5e18dc72a49c8bbc5b09d13
|
||||
size 103672
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1ed0ca5f41ff96941ae11ab56d0df3b89e55a92b8e601520021a264d0a3ed5c0
|
||||
size 89433
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6545c6f94180cae00cde1a5851813fda9335db6b9dbdbb41132ebe2d391beaa8
|
||||
size 104199
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6545c6f94180cae00cde1a5851813fda9335db6b9dbdbb41132ebe2d391beaa8
|
||||
size 104199
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4a54e7727b1cb45d7bd3e7b6bde700507d0e27f4ba33b4e97595d23ff785c89f
|
||||
size 98086
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:84816004db958e01290609776f4455e95d73a24a1af223a6af21d0e818a060e2
|
||||
size 114117
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:84816004db958e01290609776f4455e95d73a24a1af223a6af21d0e818a060e2
|
||||
size 114117
|
||||
Reference in New Issue
Block a user