Skip to content

Commit

Permalink
UITests
Browse files Browse the repository at this point in the history
  • Loading branch information
nimau committed Jul 25, 2023
1 parent d35f13d commit e895ed9
Show file tree
Hide file tree
Showing 14 changed files with 76 additions and 13 deletions.
24 changes: 22 additions & 2 deletions ElementX/Sources/Mocks/NotificationSettingsProxyMock.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,13 @@ import MatrixRustSDK

struct NotificationSettingsProxyMockConfiguration {
var callback = PassthroughSubject<NotificationSettingsProxyCallback, Never>()
var defaultRoomMode: RoomNotificationMode = .mentionsAndKeywordsOnly
var roomMode = RoomNotificationSettingsProxyMock(with: RoomNotificationSettingsProxyMockConfiguration(mode: .allMessages, isDefault: true))
var defaultRoomMode: RoomNotificationMode
var roomMode: RoomNotificationSettingsProxyMock

init(defaultRoomMode: RoomNotificationMode = .allMessages, roomMode: RoomNotificationMode = .allMessages) {
self.defaultRoomMode = defaultRoomMode
self.roomMode = RoomNotificationSettingsProxyMock(with: RoomNotificationSettingsProxyMockConfiguration(mode: roomMode, isDefault: defaultRoomMode == roomMode))
}
}

extension NotificationSettingsProxyMock {
Expand All @@ -31,5 +36,20 @@ extension NotificationSettingsProxyMock {
callbacks = configuration.callback
getNotificationSettingsRoomIdIsEncryptedActiveMembersCountReturnValue = configuration.roomMode
getDefaultNotificationRoomModeIsEncryptedActiveMembersCountReturnValue = configuration.defaultRoomMode

setNotificationModeRoomIdModeClosure = { [weak self] _, mode in
guard let self else { return }
self.getNotificationSettingsRoomIdIsEncryptedActiveMembersCountReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: mode, isDefault: false))
Task {
self.callbacks.send(.settingsDidChange)
}
}
restoreDefaultNotificationModeRoomIdClosure = { [weak self] _ in
guard let self else { return }
self.getNotificationSettingsRoomIdIsEncryptedActiveMembersCountReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: configuration.defaultRoomMode, isDefault: true))
Task {
self.callbacks.send(.settingsDidChange)
}
}
}
}
5 changes: 5 additions & 0 deletions ElementX/Sources/Other/AccessibilityIdentifiers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ struct A11yIdentifiers {
static let reportContent = ReportContent()
static let roomScreen = RoomScreen()
static let roomDetailsScreen = RoomDetailsScreen()
static let roomNotificationSettingsScreen = RoomNotificationSettingsScreen()
static let serverConfirmationScreen = ServerConfirmationScreen()
static let sessionVerificationScreen = SessionVerificationScreen()
static let softLogoutScreen = SoftLogoutScreen()
Expand Down Expand Up @@ -111,6 +112,10 @@ struct A11yIdentifiers {
let unignore = "room_member_details-unignore"
}

struct RoomNotificationSettingsScreen {
let allowCustomSetting = "room_notification_settings-allow_custom"
}

struct ServerConfirmationScreen {
let `continue` = "server_confirmation-continue"
let changeServer = "server_confirmation-change_server"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,11 @@ struct RoomNotificationSettingsScreen: View {
Text(L10n.screenRoomNotificationSettingsAllowCustom)
}
.toggleStyle(.compoundForm)
.accessibilityIdentifier(A11yIdentifiers.roomNotificationSettingsScreen.allowCustomSetting)
.disabled(context.viewState.notificationSettingsState.isLoading)
.onChange(of: context.allowCustomSetting) { _ in
context.send(viewAction: .changedAllowCustomSettings)
}
.disabled(context.viewState.notificationSettingsState.isLoading)
} footer: {
Text(L10n.screenRoomNotificationSettingsAllowCustomFootnote)
.compoundFormSectionFooter()
Expand Down Expand Up @@ -100,8 +101,7 @@ struct RoomNotificationSettingsScreen: View {

struct RoomNotificationSettingsScreen_Previews: PreviewProvider {
static let viewModel = {
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(roomMode: .init(with: .init(mode: .mentionsAndKeywordsOnly,
isDefault: true))))
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .mentionsAndKeywordsOnly, roomMode: .mentionsAndKeywordsOnly))

let roomProxy = RoomProxyMock(with: .init(displayName: "Room", isEncrypted: true, joinedMembersCount: 4))

Expand All @@ -112,8 +112,7 @@ struct RoomNotificationSettingsScreen_Previews: PreviewProvider {
}()

static let viewModelCustom = {
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(roomMode: .init(with: .init(mode: .mentionsAndKeywordsOnly,
isDefault: false))))
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .mentionsAndKeywordsOnly))

let roomProxy = RoomProxyMock(with: .init(displayName: "Room", isEncrypted: true, joinedMembersCount: 4))

Expand Down
11 changes: 9 additions & 2 deletions ElementX/Sources/UITests/UITestsAppCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -478,10 +478,17 @@ class MockScreen: Identifiable {
roomProxy: RoomProxyMock(with: .init(displayName: "test", members: members))))
navigationStackCoordinator.setRootCoordinator(coordinator)
return navigationStackCoordinator
case .roomNotificationSettings:
case .roomNotificationSettingsDefaultSetting:
let navigationStackCoordinator = NavigationStackCoordinator()
let members: [RoomMemberProxyMock] = [.mockInvitedAlice, .mockBob, .mockCharlie]
let coordinator = RoomNotificationSettingsScreenCoordinator(parameters: .init(notificationSettingsProxy: NotificationSettingsProxyMock(with: .init()),
let coordinator = RoomNotificationSettingsScreenCoordinator(parameters: .init(notificationSettingsProxy: NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .allMessages)),
roomProxy: RoomProxyMock(with: .init(displayName: "test", members: members))))
navigationStackCoordinator.setRootCoordinator(coordinator)
return navigationStackCoordinator
case .roomNotificationSettingsCustomSetting:
let navigationStackCoordinator = NavigationStackCoordinator()
let members: [RoomMemberProxyMock] = [.mockInvitedAlice, .mockBob, .mockCharlie]
let coordinator = RoomNotificationSettingsScreenCoordinator(parameters: .init(notificationSettingsProxy: NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .mentionsAndKeywordsOnly)),
roomProxy: RoomProxyMock(with: .init(displayName: "test", members: members))))
navigationStackCoordinator.setRootCoordinator(coordinator)
return navigationStackCoordinator
Expand Down
3 changes: 2 additions & 1 deletion ElementX/Sources/UITests/UITestsScreenIdentifier.swift
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ enum UITestsScreenIdentifier: String {
case roomMemberDetailsAccountOwner
case roomMemberDetails
case roomMemberDetailsIgnoredUser
case roomNotificationSettings
case roomNotificationSettingsDefaultSetting
case roomNotificationSettingsCustomSetting
case reportContent
case startChat
case startChatWithSearchResults
Expand Down
13 changes: 10 additions & 3 deletions UITests/Sources/RoomNotificationSettingsScreenUITests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,15 @@ import XCTest

@MainActor
class RoomNotificationSettingsScreenUITests: XCTestCase {
func testInitialStateComponents() async throws {
let app = Application.launch(.roomNotificationSettings)
try await app.assertScreenshot(.roomNotificationSettings)
func testDefaultSetting() async throws {
let app = Application.launch(.roomNotificationSettingsDefaultSetting)
XCTAssertFalse(app.switches[A11yIdentifiers.roomNotificationSettingsScreen.allowCustomSetting].isOn)
try await app.assertScreenshot(.roomNotificationSettingsDefaultSetting)
}

func testCustomSettings() async throws {
let app = Application.launch(.roomNotificationSettingsCustomSetting)
XCTAssert(app.switches[A11yIdentifiers.roomNotificationSettingsScreen.allowCustomSetting].isOn)
try await app.assertScreenshot(.roomNotificationSettingsCustomSetting)
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit e895ed9

Please sign in to comment.