#352: Add basic UI tests for the timeline. (#363)

Makes the MockTimelineController configurable with incoming items and pagination responses.
This commit is contained in:
Doug
2022-12-12 12:27:49 +00:00
committed by GitHub
parent 1791993560
commit 6dc2ea800e
21 changed files with 380 additions and 82 deletions
@@ -32,6 +32,9 @@ enum UITestScreenIdentifier: String {
case onboarding
case roomPlainNoAvatar
case roomEncryptedWithAvatar
case roomSmallTimeline
case roomSmallTimelineIncomingAndSmallPagination
case roomSmallTimelineLargePagination
case sessionVerification
}
@@ -23,6 +23,7 @@ class UITestsAppCoordinator: AppCoordinatorProtocol {
let notificationManager: NotificationManagerProtocol? = nil
init() {
UIView.setAnimationsEnabled(false)
navigationStackCoordinator = NavigationStackCoordinator()
ServiceLocator.shared.register(userNotificationController: MockUserNotificationController())
@@ -132,6 +133,40 @@ class MockScreen: Identifiable {
roomAvatarUrl: "mock_url",
emojiProvider: EmojiProvider())
return RoomScreenCoordinator(parameters: parameters)
case .roomSmallTimeline:
let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
let parameters = RoomScreenCoordinatorParameters(navigationStackCoordinator: navigationStackCoordinator,
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
roomName: "New room",
roomAvatarUrl: "mock_url",
emojiProvider: EmojiProvider())
return RoomScreenCoordinator(parameters: parameters)
case .roomSmallTimelineIncomingAndSmallPagination:
let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.singleMessageChunk]
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
timelineController.simulateIncomingItems()
let parameters = RoomScreenCoordinatorParameters(navigationStackCoordinator: navigationStackCoordinator,
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
roomName: "Small timeline",
roomAvatarUrl: "mock_url",
emojiProvider: EmojiProvider())
return RoomScreenCoordinator(parameters: parameters)
case .roomSmallTimelineLargePagination:
let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
let parameters = RoomScreenCoordinatorParameters(navigationStackCoordinator: navigationStackCoordinator,
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
roomName: "Small timeline, paginating",
roomAvatarUrl: "mock_url",
emojiProvider: EmojiProvider())
return RoomScreenCoordinator(parameters: parameters)
case .sessionVerification:
let parameters = SessionVerificationCoordinatorParameters(sessionVerificationControllerProxy: MockSessionVerificationControllerProxy())
return SessionVerificationCoordinator(parameters: parameters)