mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Convert the old MockTimelineController to the generated TimelineControllerMock
This commit is contained in:
@@ -46,6 +46,6 @@ struct EmojiPickerScreenViewModelTests {
|
||||
viewModel = EmojiPickerScreenViewModel(itemID: .randomEvent,
|
||||
selectedEmojis: selectedEmojis,
|
||||
emojiProvider: EmojiProvider(appSettings: .volatile()),
|
||||
timelineController: MockTimelineController(timelineProxy: timelineProxy))
|
||||
timelineController: TimelineControllerMock(.init(timelineProxy: timelineProxy)))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,7 +399,7 @@ struct LocationSharingScreenViewModelTests {
|
||||
viewModel = LocationSharingScreenViewModel(interactionMode: .viewLive(sender: nil, initialLiveLocationShare: nil),
|
||||
mapURLBuilder: appSettings.mapTilerSettings.publisher.value,
|
||||
roomProxy: roomProxyMock,
|
||||
timelineController: MockTimelineController(timelineProxy: TimelineProxyMock(.init())),
|
||||
timelineController: TimelineControllerMock(.init(timelineProxy: TimelineProxyMock(.init()))),
|
||||
liveLocationManager: LiveLocationManagerMock(.init()),
|
||||
analytics: AnalyticsServiceMock(.init()),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
@@ -434,7 +434,7 @@ struct LocationSharingScreenViewModelTests {
|
||||
viewModel = LocationSharingScreenViewModel(interactionMode: .picker(shouldShowLiveLocationOption: true),
|
||||
mapURLBuilder: appSettings.mapTilerSettings.publisher.value,
|
||||
roomProxy: JoinedRoomProxyMock(.init(members: members)),
|
||||
timelineController: MockTimelineController(timelineProxy: timelineProxy),
|
||||
timelineController: TimelineControllerMock(.init(timelineProxy: timelineProxy)),
|
||||
liveLocationManager: LiveLocationManagerMock(liveLocationManagerConfiguration),
|
||||
analytics: AnalyticsServiceMock(.init()),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
@@ -449,7 +449,7 @@ struct LocationSharingScreenViewModelTests {
|
||||
viewModel = LocationSharingScreenViewModel(interactionMode: .picker(shouldShowLiveLocationOption: true),
|
||||
mapURLBuilder: appSettings.mapTilerSettings.publisher.value,
|
||||
roomProxy: JoinedRoomProxyMock(.init(members: members)),
|
||||
timelineController: MockTimelineController(timelineProxy: timelineProxy),
|
||||
timelineController: TimelineControllerMock(.init(timelineProxy: timelineProxy)),
|
||||
liveLocationManager: liveLocationManagerMock,
|
||||
analytics: AnalyticsServiceMock(.init()),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
@@ -471,7 +471,7 @@ struct LocationSharingScreenViewModelTests {
|
||||
viewModel = LocationSharingScreenViewModel(interactionMode: .viewLive(sender: sender, initialLiveLocationShare: initialShare),
|
||||
mapURLBuilder: appSettings.mapTilerSettings.publisher.value,
|
||||
roomProxy: roomProxyMock,
|
||||
timelineController: MockTimelineController(timelineProxy: TimelineProxyMock(.init())),
|
||||
timelineController: TimelineControllerMock(.init(timelineProxy: TimelineProxyMock(.init()))),
|
||||
liveLocationManager: LiveLocationManagerMock(.init()),
|
||||
analytics: AnalyticsServiceMock(.init()),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
|
||||
@@ -293,7 +293,7 @@ final class MediaUploadPreviewScreenViewModelTests {
|
||||
isRoomEncrypted: true,
|
||||
shouldShowCaptionWarning: true,
|
||||
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: appSettings),
|
||||
timelineController: MockTimelineController(timelineProxy: timelineProxy),
|
||||
timelineController: TimelineControllerMock(.init(timelineProxy: timelineProxy)),
|
||||
clientProxy: clientProxy,
|
||||
userIndicatorController: userIndicatorController)
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ struct PillContextTests {
|
||||
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([])
|
||||
proxyMock.membersPublisher = subject.asCurrentValuePublisher()
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
timelineController: MockTimelineController(),
|
||||
timelineController: TimelineControllerMock(.init()),
|
||||
userSession: UserSessionMock(.init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
userIndicatorController: userIndicatorController,
|
||||
@@ -57,7 +57,7 @@ struct PillContextTests {
|
||||
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([])
|
||||
proxyMock.membersPublisher = subject.asCurrentValuePublisher()
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
timelineController: MockTimelineController(),
|
||||
timelineController: TimelineControllerMock(.init()),
|
||||
userSession: UserSessionMock(.init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
userIndicatorController: userIndicatorController,
|
||||
@@ -81,7 +81,7 @@ struct PillContextTests {
|
||||
let id = "test_room"
|
||||
let displayName = "Test"
|
||||
let proxyMock = JoinedRoomProxyMock(.init(id: id, name: displayName, avatarURL: avatarURL))
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
timelineController: mockController,
|
||||
userSession: UserSessionMock(.init()),
|
||||
@@ -105,7 +105,7 @@ struct PillContextTests {
|
||||
let userIndicatorController = UserIndicatorControllerMock()
|
||||
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let clientMock = ClientProxyMock(.init())
|
||||
clientMock.roomSummaryForIdentifierReturnValue = .mock(id: "1", name: "Foundation 🔭🪐🌌")
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
@@ -132,7 +132,7 @@ struct PillContextTests {
|
||||
let userIndicatorController = UserIndicatorControllerMock()
|
||||
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
timelineController: mockController,
|
||||
userSession: UserSessionMock(.init()),
|
||||
@@ -157,7 +157,7 @@ struct PillContextTests {
|
||||
let userIndicatorController = UserIndicatorControllerMock()
|
||||
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let clientMock = ClientProxyMock(.init())
|
||||
clientMock.roomSummaryForAliasReturnValue = .mock(id: "2",
|
||||
name: "Foundation and Empire",
|
||||
@@ -186,7 +186,7 @@ struct PillContextTests {
|
||||
let userIndicatorController = UserIndicatorControllerMock()
|
||||
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
timelineController: mockController,
|
||||
userSession: UserSessionMock(.init()),
|
||||
@@ -211,7 +211,7 @@ struct PillContextTests {
|
||||
let userIndicatorController = UserIndicatorControllerMock()
|
||||
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let clientMock = ClientProxyMock(.init())
|
||||
clientMock.roomSummaryForIdentifierReturnValue = .mock(id: "1", name: "Foundation 🔭🪐🌌")
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
@@ -238,7 +238,7 @@ struct PillContextTests {
|
||||
let userIndicatorController = UserIndicatorControllerMock()
|
||||
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
timelineController: mockController,
|
||||
userSession: UserSessionMock(.init()),
|
||||
@@ -263,7 +263,7 @@ struct PillContextTests {
|
||||
let userIndicatorController = UserIndicatorControllerMock()
|
||||
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let clientMock = ClientProxyMock(.init())
|
||||
clientMock.roomSummaryForAliasReturnValue = .mock(id: "2",
|
||||
name: "Foundation and Empire",
|
||||
@@ -292,7 +292,7 @@ struct PillContextTests {
|
||||
let userIndicatorController = UserIndicatorControllerMock()
|
||||
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController(roomProxy: proxyMock)
|
||||
let mockController = TimelineControllerMock(.init(roomProxy: proxyMock))
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
timelineController: mockController,
|
||||
userSession: UserSessionMock(.init()),
|
||||
|
||||
@@ -178,7 +178,7 @@ struct PollFormScreenViewModelTests {
|
||||
|
||||
private mutating func setupViewModel(mode: PollFormMode = .new(topic: nil)) {
|
||||
viewModel = PollFormScreenViewModel(mode: mode,
|
||||
timelineController: MockTimelineController(timelineProxy: timelineProxy),
|
||||
timelineController: TimelineControllerMock(.init(timelineProxy: timelineProxy)),
|
||||
analytics: AnalyticsServiceMock(.init()),
|
||||
userIndicatorController: UserIndicatorControllerMock())
|
||||
}
|
||||
|
||||
@@ -14,11 +14,11 @@ import Testing
|
||||
struct RoomPollsHistoryScreenViewModelTests {
|
||||
var viewModel: RoomPollsHistoryScreenViewModelProtocol!
|
||||
var interactionHandler: PollInteractionHandlerMock!
|
||||
var timelineController: MockTimelineController!
|
||||
var timelineController: TimelineControllerMock!
|
||||
|
||||
init() throws {
|
||||
interactionHandler = PollInteractionHandlerMock()
|
||||
timelineController = MockTimelineController()
|
||||
timelineController = TimelineControllerMock(.init())
|
||||
viewModel = RoomPollsHistoryScreenViewModel(pollInteractionHandler: interactionHandler,
|
||||
timelineController: timelineController,
|
||||
userIndicatorController: UserIndicatorControllerMock())
|
||||
@@ -26,12 +26,12 @@ struct RoomPollsHistoryScreenViewModelTests {
|
||||
|
||||
@Test
|
||||
func backPaginate() async throws {
|
||||
timelineController.backPaginationResponses = [
|
||||
timelineController.setupBackPagination(responses: [
|
||||
[PollRoomTimelineItem.mock(poll: .emptyDisclosed, isEditable: true),
|
||||
PollRoomTimelineItem.mock(poll: .disclosed(createdByAccountOwner: true)),
|
||||
PollRoomTimelineItem.mock(poll: .disclosed(createdByAccountOwner: false)),
|
||||
PollRoomTimelineItem.mock(poll: .endedDisclosed)]
|
||||
]
|
||||
])
|
||||
|
||||
let deferredViewState = deferFulfillment(viewModel.context.$viewState, keyPath: \.isBackPaginating, transitionValues: [false, true, false])
|
||||
|
||||
@@ -45,13 +45,13 @@ struct RoomPollsHistoryScreenViewModelTests {
|
||||
|
||||
@Test
|
||||
func backPaginateCanBackPaginate() async throws {
|
||||
timelineController.backPaginationResponses = [
|
||||
timelineController.setupBackPagination(responses: [
|
||||
[PollRoomTimelineItem.mock(poll: .emptyDisclosed, isEditable: true),
|
||||
PollRoomTimelineItem.mock(poll: .disclosed(createdByAccountOwner: true)),
|
||||
PollRoomTimelineItem.mock(poll: .disclosed(createdByAccountOwner: false)),
|
||||
PollRoomTimelineItem.mock(poll: .endedDisclosed)],
|
||||
[]
|
||||
]
|
||||
])
|
||||
|
||||
let deferredViewState = deferFulfillment(viewModel.context.$viewState, keyPath: \.isBackPaginating, transitionValues: [false, true, false])
|
||||
|
||||
@@ -65,12 +65,12 @@ struct RoomPollsHistoryScreenViewModelTests {
|
||||
|
||||
@Test
|
||||
func backPaginateTwice() async throws {
|
||||
timelineController.backPaginationResponses = [
|
||||
timelineController.setupBackPagination(responses: [
|
||||
[PollRoomTimelineItem.mock(poll: .emptyDisclosed, isEditable: true),
|
||||
PollRoomTimelineItem.mock(poll: .disclosed(createdByAccountOwner: true)),
|
||||
PollRoomTimelineItem.mock(poll: .disclosed(createdByAccountOwner: false))],
|
||||
[PollRoomTimelineItem.mock(poll: .endedDisclosed)]
|
||||
]
|
||||
])
|
||||
let deferredViewState = deferFulfillment(viewModel.context.$viewState, keyPath: \.isBackPaginating, transitionValues: [false, true, false])
|
||||
|
||||
viewModel.context.send(viewAction: .loadMore)
|
||||
@@ -84,13 +84,13 @@ struct RoomPollsHistoryScreenViewModelTests {
|
||||
|
||||
@Test
|
||||
func filters() async throws {
|
||||
timelineController.backPaginationResponses = [
|
||||
timelineController.setupBackPagination(responses: [
|
||||
[PollRoomTimelineItem.mock(poll: .emptyDisclosed, isEditable: true),
|
||||
PollRoomTimelineItem.mock(poll: .disclosed(createdByAccountOwner: true)),
|
||||
PollRoomTimelineItem.mock(poll: .disclosed(createdByAccountOwner: false)),
|
||||
PollRoomTimelineItem.mock(poll: .endedDisclosed)],
|
||||
[]
|
||||
]
|
||||
])
|
||||
|
||||
let deferredViewState = deferFulfillment(viewModel.context.$viewState) { value in
|
||||
!value.pollTimelineItems.isEmpty
|
||||
|
||||
@@ -22,7 +22,7 @@ struct TimelineMediaPreviewViewModelTests {
|
||||
|
||||
var mediaProvider: MediaProviderMock!
|
||||
var photoLibraryManager: PhotoLibraryManagerMock!
|
||||
var timelineController: MockTimelineController!
|
||||
var timelineController: TimelineControllerMock!
|
||||
|
||||
@Test
|
||||
mutating func loadingItem() async throws {
|
||||
@@ -94,11 +94,10 @@ struct TimelineMediaPreviewViewModelTests {
|
||||
mutating func loadingMoreItems() async throws {
|
||||
// Given a view model with a loaded item.
|
||||
try await loadingItem()
|
||||
#expect(timelineController.paginateBackwardsCallCount == 0)
|
||||
#expect(timelineController.paginateBackwardsRequestSizeCallsCount == 0)
|
||||
|
||||
// When swiping to a "loading more" item and there are more media items to load.
|
||||
timelineController.paginationState = .init(backward: .idle, forward: .endReached)
|
||||
timelineController.backPaginationResponses.append(RoomTimelineItemFixtures.mediaChunk)
|
||||
timelineController.update(paginationState: .init(backward: .idle, forward: .endReached))
|
||||
let failure = deferFailure(viewModel.state.previewControllerDriver, timeout: .seconds(1)) { $0.isItemLoaded }
|
||||
context.send(viewAction: .updateCurrentItem(.loading(.paginatingBackwards)))
|
||||
try await failure.fulfill()
|
||||
@@ -106,7 +105,7 @@ struct TimelineMediaPreviewViewModelTests {
|
||||
// Then there should no longer be a media preview and instead of loading any media, a pagination request should be made.
|
||||
#expect(mediaProvider.loadFileFromSourceFilenameCallsCount == 1)
|
||||
#expect(context.viewState.currentItem == .loading(.paginatingBackwards)) // Note: This item only changes when the preview controller handles the new items.
|
||||
#expect(timelineController.paginateBackwardsCallCount == 1)
|
||||
#expect(timelineController.paginateBackwardsRequestSizeCallsCount == 1)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -117,7 +116,7 @@ struct TimelineMediaPreviewViewModelTests {
|
||||
|
||||
// When more items are added via a back pagination.
|
||||
let deferred = deferFulfillment(context.viewState.dataSource.previewItemsPaginationPublisher) { _ in true }
|
||||
timelineController.backPaginationResponses.append(makeItems())
|
||||
timelineController.setupBackPagination(responses: [makeItems()])
|
||||
_ = await timelineController.paginateBackwards(requestSize: 20)
|
||||
try await deferred.fulfill()
|
||||
|
||||
@@ -292,7 +291,7 @@ struct TimelineMediaPreviewViewModelTests {
|
||||
|
||||
private mutating func setupViewModel(initialItemIndex: Int = 0, photoLibraryAuthorizationDenied: Bool = false) {
|
||||
let initialItems = makeItems()
|
||||
timelineController = MockTimelineController(timelineKind: .media(.mediaFilesScreen), timelineItems: initialItems)
|
||||
timelineController = TimelineControllerMock(.init(timelineKind: .media(.mediaFilesScreen), timelineItems: initialItems))
|
||||
|
||||
mediaProvider = MediaProviderMock(.init())
|
||||
photoLibraryManager = PhotoLibraryManagerMock(.init(authorizationDenied: photoLibraryAuthorizationDenied))
|
||||
|
||||
@@ -35,7 +35,7 @@ final class TimelineViewModelTests {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
// Then the messages should be grouped together.
|
||||
@@ -63,7 +63,7 @@ final class TimelineViewModelTests {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
// Then the messages should be grouped by sender.
|
||||
@@ -89,7 +89,7 @@ final class TimelineViewModelTests {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
// Then the first message should not be grouped but the other two should.
|
||||
@@ -112,7 +112,7 @@ final class TimelineViewModelTests {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
// Then the first and second messages should be grouped and the last one should not.
|
||||
@@ -135,7 +135,7 @@ final class TimelineViewModelTests {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
// Then the messages should be grouped together.
|
||||
@@ -152,10 +152,10 @@ final class TimelineViewModelTests {
|
||||
let items = [TextRoomTimelineItem(eventID: "t1"),
|
||||
TextRoomTimelineItem(eventID: "t2"),
|
||||
TextRoomTimelineItem(eventID: "t3")]
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
#expect(timelineController.focusOnEventCallCount == 0)
|
||||
#expect(timelineController.focusOnEventTimelineSizeCallsCount == 0)
|
||||
#expect(viewModel.context.viewState.timelineState.isLive)
|
||||
#expect(viewModel.context.viewState.timelineState.focussedEvent == nil)
|
||||
|
||||
@@ -165,7 +165,7 @@ final class TimelineViewModelTests {
|
||||
try await deferred.fulfill()
|
||||
|
||||
// Then a new timeline should be loaded and the room focussed on that event.
|
||||
#expect(timelineController.focusOnEventCallCount == 1)
|
||||
#expect(timelineController.focusOnEventTimelineSizeCallsCount == 1)
|
||||
#expect(!viewModel.context.viewState.timelineState.isLive)
|
||||
#expect(viewModel.context.viewState.timelineState.focussedEvent == .init(eventID: "t4", appearance: .immediate))
|
||||
}
|
||||
@@ -176,10 +176,10 @@ final class TimelineViewModelTests {
|
||||
let items = [TextRoomTimelineItem(eventID: "t1"),
|
||||
TextRoomTimelineItem(eventID: "t2"),
|
||||
TextRoomTimelineItem(eventID: "t3")]
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
#expect(timelineController.focusOnEventCallCount == 0)
|
||||
#expect(timelineController.focusOnEventTimelineSizeCallsCount == 0)
|
||||
#expect(viewModel.context.viewState.timelineState.isLive)
|
||||
#expect(viewModel.context.viewState.timelineState.focussedEvent == nil)
|
||||
|
||||
@@ -189,7 +189,7 @@ final class TimelineViewModelTests {
|
||||
try await deferred.fulfill()
|
||||
|
||||
// Then the timeline should remain live and the item should be focussed.
|
||||
#expect(timelineController.focusOnEventCallCount == 0)
|
||||
#expect(timelineController.focusOnEventTimelineSizeCallsCount == 0)
|
||||
#expect(viewModel.context.viewState.timelineState.isLive)
|
||||
#expect(viewModel.context.viewState.timelineState.focussedEvent == .init(eventID: "t1", appearance: .animated))
|
||||
}
|
||||
@@ -200,7 +200,7 @@ final class TimelineViewModelTests {
|
||||
let items = [TextRoomTimelineItem(eventID: "t1"),
|
||||
TextRoomTimelineItem(eventID: "t2"),
|
||||
TextRoomTimelineItem(eventID: "t3")]
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
@@ -208,7 +208,7 @@ final class TimelineViewModelTests {
|
||||
await viewModel.focusOnEvent(eventID: "t4")
|
||||
try await deferred.fulfill()
|
||||
|
||||
#expect(timelineController.focusLiveCallCount == 0)
|
||||
#expect(timelineController.focusLiveCallsCount == 0)
|
||||
#expect(!viewModel.context.viewState.timelineState.isLive)
|
||||
#expect(viewModel.context.viewState.timelineState.focussedEvent == .init(eventID: "t4", appearance: .immediate))
|
||||
|
||||
@@ -218,14 +218,14 @@ final class TimelineViewModelTests {
|
||||
try await deferred.fulfill()
|
||||
|
||||
// Then the timeline should switch back to being live and the event focus should be removed.
|
||||
#expect(timelineController.focusLiveCallCount == 1)
|
||||
#expect(timelineController.focusLiveCallsCount == 1)
|
||||
#expect(viewModel.context.viewState.timelineState.isLive)
|
||||
#expect(viewModel.context.viewState.timelineState.focussedEvent == nil)
|
||||
}
|
||||
|
||||
@Test
|
||||
func initialFocusViewState() {
|
||||
let timelineController = MockTimelineController()
|
||||
let timelineController = TimelineControllerMock(.init())
|
||||
|
||||
let viewModel = makeViewModel(focussedEventID: "t10", timelineController: timelineController)
|
||||
#expect(viewModel.context.viewState.timelineState.focussedEvent == .init(eventID: "t10", appearance: .immediate))
|
||||
@@ -285,14 +285,14 @@ final class TimelineViewModelTests {
|
||||
private func readReceiptsConfiguration(with items: [RoomTimelineItemProtocol]) -> (TimelineViewModel,
|
||||
JoinedRoomProxyMock,
|
||||
TimelineProxyMock,
|
||||
MockTimelineController) {
|
||||
TimelineControllerMock) {
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
timelineProxy.sendReadReceiptForTypeReturnValue = .success(())
|
||||
|
||||
let roomProxy = JoinedRoomProxyMock(.init(name: ""))
|
||||
roomProxy.timeline = timelineProxy
|
||||
|
||||
let timelineController = MockTimelineController(roomProxy: roomProxy, timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(roomProxy: roomProxy, timelineItems: items))
|
||||
|
||||
let appSettings = AppSettings.volatile()
|
||||
|
||||
@@ -323,7 +323,7 @@ final class TimelineViewModelTests {
|
||||
let appSettings = AppSettings.volatile()
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockTimelineController(timelineItems: [message])
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: [message]))
|
||||
let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])),
|
||||
timelineController: timelineController,
|
||||
userSession: UserSessionMock(.init()),
|
||||
@@ -352,7 +352,7 @@ final class TimelineViewModelTests {
|
||||
members: [RoomMemberProxyMock.mockAdmin,
|
||||
RoomMemberProxyMock.mockAlice],
|
||||
ownUserID: RoomMemberProxyMock.mockAdmin.userID)),
|
||||
timelineController: MockTimelineController(),
|
||||
timelineController: TimelineControllerMock(.init()),
|
||||
userSession: UserSessionMock(.init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
@@ -391,7 +391,7 @@ final class TimelineViewModelTests {
|
||||
members: [RoomMemberProxyMock.mockAdmin,
|
||||
RoomMemberProxyMock.mockAlice],
|
||||
ownUserID: RoomMemberProxyMock.mockAlice.userID)),
|
||||
timelineController: MockTimelineController(),
|
||||
timelineController: TimelineControllerMock(.init()),
|
||||
userSession: UserSessionMock(.init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
@@ -430,7 +430,7 @@ final class TimelineViewModelTests {
|
||||
members: [RoomMemberProxyMock.mockAdmin,
|
||||
RoomMemberProxyMock.mockBanned[0]],
|
||||
ownUserID: RoomMemberProxyMock.mockAdmin.userID)),
|
||||
timelineController: MockTimelineController(),
|
||||
timelineController: TimelineControllerMock(.init()),
|
||||
userSession: UserSessionMock(.init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
@@ -475,7 +475,7 @@ final class TimelineViewModelTests {
|
||||
roomProxyMock.underlyingInfoPublisher = infoSubject.asCurrentValuePublisher()
|
||||
|
||||
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||
timelineController: MockTimelineController(),
|
||||
timelineController: TimelineControllerMock(.init()),
|
||||
userSession: UserSessionMock(.init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
@@ -506,7 +506,7 @@ final class TimelineViewModelTests {
|
||||
roomProxyMock.underlyingInfoPublisher = infoSubject.asCurrentValuePublisher()
|
||||
|
||||
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||
timelineController: MockTimelineController(),
|
||||
timelineController: TimelineControllerMock(.init()),
|
||||
userSession: UserSessionMock(.init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
@@ -543,7 +543,7 @@ final class TimelineViewModelTests {
|
||||
func tapSendInfoEncryptionAuthentictyDisplaysAlert() {
|
||||
// Given a room with an event whose authenticity could not be verified
|
||||
let items = [TextRoomTimelineItem(eventID: "t1", encryptionAuthenticity: .verificationViolation(color: .red))]
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
#expect(viewModel.state.bindings.alertInfo == nil)
|
||||
@@ -557,7 +557,7 @@ final class TimelineViewModelTests {
|
||||
func tapSendInfoEncryptionForwarderDisplaysAlert() {
|
||||
// Given a room with an event whose key was forwarded
|
||||
let items = [TextRoomTimelineItem(eventID: "t1", keyForwarder: .test)]
|
||||
let timelineController = MockTimelineController(timelineItems: items)
|
||||
let timelineController = TimelineControllerMock(.init(timelineItems: items))
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
#expect(viewModel.state.bindings.alertInfo == nil)
|
||||
|
||||
@@ -205,7 +205,7 @@ struct VoiceMessageRecorderTests {
|
||||
|
||||
@Test
|
||||
func sendVoiceMessage_NoRecordingFile() async {
|
||||
let timelineController = MockTimelineController()
|
||||
let timelineController = TimelineControllerMock(.init())
|
||||
|
||||
// If there is no recording file, an error is expected
|
||||
audioRecorder.audioFileURL = nil
|
||||
@@ -222,7 +222,7 @@ struct VoiceMessageRecorderTests {
|
||||
// If the converter returns an error
|
||||
audioConverter.convertToOpusOggSourceURLDestinationURLThrowableError = AudioConverterError.conversionFailed(nil)
|
||||
|
||||
let timelineController = MockTimelineController()
|
||||
let timelineController = TimelineControllerMock(.init())
|
||||
guard case .failure(.failedSendingVoiceMessage) = await voiceMessageRecorder.sendVoiceMessage(timelineController: timelineController,
|
||||
audioConverter: audioConverter) else {
|
||||
Issue.record("An error is expected")
|
||||
@@ -239,7 +239,7 @@ struct VoiceMessageRecorderTests {
|
||||
}
|
||||
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
let timelineController = MockTimelineController(timelineProxy: timelineProxy)
|
||||
let timelineController = TimelineControllerMock(.init(timelineProxy: timelineProxy))
|
||||
timelineProxy.sendVoiceMessageUrlAudioInfoWaveformRequestHandleReturnValue = .failure(.sdkError(SDKError.generic))
|
||||
guard case .failure(.failedSendingVoiceMessage) = await voiceMessageRecorder.sendVoiceMessage(timelineController: timelineController,
|
||||
audioConverter: audioConverter) else {
|
||||
@@ -258,7 +258,7 @@ struct VoiceMessageRecorderTests {
|
||||
}
|
||||
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
let timelineController = MockTimelineController(timelineProxy: timelineProxy)
|
||||
let timelineController = TimelineControllerMock(.init(timelineProxy: timelineProxy))
|
||||
timelineProxy.sendVoiceMessageUrlAudioInfoWaveformRequestHandleReturnValue = .failure(.sdkError(SDKError.generic))
|
||||
guard case .failure(.failedSendingVoiceMessage) = await voiceMessageRecorder.sendVoiceMessage(timelineController: timelineController,
|
||||
audioConverter: audioConverter) else {
|
||||
@@ -279,7 +279,7 @@ struct VoiceMessageRecorderTests {
|
||||
|
||||
// If the media upload fails
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
let timelineController = MockTimelineController(timelineProxy: timelineProxy)
|
||||
let timelineController = TimelineControllerMock(.init(timelineProxy: timelineProxy))
|
||||
timelineProxy.sendVoiceMessageUrlAudioInfoWaveformRequestHandleReturnValue = .failure(.sdkError(SDKError.generic))
|
||||
guard case .failure(.failedSendingVoiceMessage) = await voiceMessageRecorder.sendVoiceMessage(timelineController: timelineController,
|
||||
audioConverter: audioConverter) else {
|
||||
@@ -293,7 +293,7 @@ struct VoiceMessageRecorderTests {
|
||||
let imageFileURL = try #require(Bundle(for: UnitTestsAppCoordinator.self).url(forResource: "test_voice_message", withExtension: "m4a"), "Test audio file is missing")
|
||||
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
let timelineController = MockTimelineController(timelineProxy: timelineProxy)
|
||||
let timelineController = TimelineControllerMock(.init(timelineProxy: timelineProxy))
|
||||
audioRecorder.currentTime = 42
|
||||
audioRecorder.audioFileURL = imageFileURL
|
||||
_ = await voiceMessageRecorder.startRecording()
|
||||
|
||||
Reference in New Issue
Block a user