MockMediaProvider → MediaProviderMock.

This commit is contained in:
Doug
2024-10-02 17:41:08 +01:00
committed by Doug
parent 77e4fae2fb
commit 5522871dd9
65 changed files with 636 additions and 219 deletions
@@ -10199,6 +10199,429 @@ class MediaPlayerProviderMock: MediaPlayerProviderProtocol {
await detachAllStatesExceptClosure?(exception)
}
}
class MediaProviderMock: MediaProviderProtocol {
//MARK: - imageFromSource
var imageFromSourceSizeUnderlyingCallsCount = 0
var imageFromSourceSizeCallsCount: Int {
get {
if Thread.isMainThread {
return imageFromSourceSizeUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = imageFromSourceSizeUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
imageFromSourceSizeUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
imageFromSourceSizeUnderlyingCallsCount = newValue
}
}
}
}
var imageFromSourceSizeCalled: Bool {
return imageFromSourceSizeCallsCount > 0
}
var imageFromSourceSizeReceivedArguments: (source: MediaSourceProxy?, size: CGSize?)?
var imageFromSourceSizeReceivedInvocations: [(source: MediaSourceProxy?, size: CGSize?)] = []
var imageFromSourceSizeUnderlyingReturnValue: UIImage?
var imageFromSourceSizeReturnValue: UIImage? {
get {
if Thread.isMainThread {
return imageFromSourceSizeUnderlyingReturnValue
} else {
var returnValue: UIImage?? = nil
DispatchQueue.main.sync {
returnValue = imageFromSourceSizeUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
imageFromSourceSizeUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
imageFromSourceSizeUnderlyingReturnValue = newValue
}
}
}
}
var imageFromSourceSizeClosure: ((MediaSourceProxy?, CGSize?) -> UIImage?)?
func imageFromSource(_ source: MediaSourceProxy?, size: CGSize?) -> UIImage? {
imageFromSourceSizeCallsCount += 1
imageFromSourceSizeReceivedArguments = (source: source, size: size)
DispatchQueue.main.async {
self.imageFromSourceSizeReceivedInvocations.append((source: source, size: size))
}
if let imageFromSourceSizeClosure = imageFromSourceSizeClosure {
return imageFromSourceSizeClosure(source, size)
} else {
return imageFromSourceSizeReturnValue
}
}
//MARK: - loadImageFromSource
var loadImageFromSourceSizeUnderlyingCallsCount = 0
var loadImageFromSourceSizeCallsCount: Int {
get {
if Thread.isMainThread {
return loadImageFromSourceSizeUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = loadImageFromSourceSizeUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadImageFromSourceSizeUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
loadImageFromSourceSizeUnderlyingCallsCount = newValue
}
}
}
}
var loadImageFromSourceSizeCalled: Bool {
return loadImageFromSourceSizeCallsCount > 0
}
var loadImageFromSourceSizeReceivedArguments: (source: MediaSourceProxy, size: CGSize?)?
var loadImageFromSourceSizeReceivedInvocations: [(source: MediaSourceProxy, size: CGSize?)] = []
var loadImageFromSourceSizeUnderlyingReturnValue: Result<UIImage, MediaProviderError>!
var loadImageFromSourceSizeReturnValue: Result<UIImage, MediaProviderError>! {
get {
if Thread.isMainThread {
return loadImageFromSourceSizeUnderlyingReturnValue
} else {
var returnValue: Result<UIImage, MediaProviderError>? = nil
DispatchQueue.main.sync {
returnValue = loadImageFromSourceSizeUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadImageFromSourceSizeUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
loadImageFromSourceSizeUnderlyingReturnValue = newValue
}
}
}
}
var loadImageFromSourceSizeClosure: ((MediaSourceProxy, CGSize?) async -> Result<UIImage, MediaProviderError>)?
func loadImageFromSource(_ source: MediaSourceProxy, size: CGSize?) async -> Result<UIImage, MediaProviderError> {
loadImageFromSourceSizeCallsCount += 1
loadImageFromSourceSizeReceivedArguments = (source: source, size: size)
DispatchQueue.main.async {
self.loadImageFromSourceSizeReceivedInvocations.append((source: source, size: size))
}
if let loadImageFromSourceSizeClosure = loadImageFromSourceSizeClosure {
return await loadImageFromSourceSizeClosure(source, size)
} else {
return loadImageFromSourceSizeReturnValue
}
}
//MARK: - loadImageDataFromSource
var loadImageDataFromSourceUnderlyingCallsCount = 0
var loadImageDataFromSourceCallsCount: Int {
get {
if Thread.isMainThread {
return loadImageDataFromSourceUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = loadImageDataFromSourceUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadImageDataFromSourceUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
loadImageDataFromSourceUnderlyingCallsCount = newValue
}
}
}
}
var loadImageDataFromSourceCalled: Bool {
return loadImageDataFromSourceCallsCount > 0
}
var loadImageDataFromSourceReceivedSource: MediaSourceProxy?
var loadImageDataFromSourceReceivedInvocations: [MediaSourceProxy] = []
var loadImageDataFromSourceUnderlyingReturnValue: Result<Data, MediaProviderError>!
var loadImageDataFromSourceReturnValue: Result<Data, MediaProviderError>! {
get {
if Thread.isMainThread {
return loadImageDataFromSourceUnderlyingReturnValue
} else {
var returnValue: Result<Data, MediaProviderError>? = nil
DispatchQueue.main.sync {
returnValue = loadImageDataFromSourceUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadImageDataFromSourceUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
loadImageDataFromSourceUnderlyingReturnValue = newValue
}
}
}
}
var loadImageDataFromSourceClosure: ((MediaSourceProxy) async -> Result<Data, MediaProviderError>)?
func loadImageDataFromSource(_ source: MediaSourceProxy) async -> Result<Data, MediaProviderError> {
loadImageDataFromSourceCallsCount += 1
loadImageDataFromSourceReceivedSource = source
DispatchQueue.main.async {
self.loadImageDataFromSourceReceivedInvocations.append(source)
}
if let loadImageDataFromSourceClosure = loadImageDataFromSourceClosure {
return await loadImageDataFromSourceClosure(source)
} else {
return loadImageDataFromSourceReturnValue
}
}
//MARK: - loadImageRetryingOnReconnection
var loadImageRetryingOnReconnectionSizeUnderlyingCallsCount = 0
var loadImageRetryingOnReconnectionSizeCallsCount: Int {
get {
if Thread.isMainThread {
return loadImageRetryingOnReconnectionSizeUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = loadImageRetryingOnReconnectionSizeUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadImageRetryingOnReconnectionSizeUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
loadImageRetryingOnReconnectionSizeUnderlyingCallsCount = newValue
}
}
}
}
var loadImageRetryingOnReconnectionSizeCalled: Bool {
return loadImageRetryingOnReconnectionSizeCallsCount > 0
}
var loadImageRetryingOnReconnectionSizeReceivedArguments: (source: MediaSourceProxy, size: CGSize?)?
var loadImageRetryingOnReconnectionSizeReceivedInvocations: [(source: MediaSourceProxy, size: CGSize?)] = []
var loadImageRetryingOnReconnectionSizeUnderlyingReturnValue: Task<UIImage, Error>!
var loadImageRetryingOnReconnectionSizeReturnValue: Task<UIImage, Error>! {
get {
if Thread.isMainThread {
return loadImageRetryingOnReconnectionSizeUnderlyingReturnValue
} else {
var returnValue: Task<UIImage, Error>? = nil
DispatchQueue.main.sync {
returnValue = loadImageRetryingOnReconnectionSizeUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadImageRetryingOnReconnectionSizeUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
loadImageRetryingOnReconnectionSizeUnderlyingReturnValue = newValue
}
}
}
}
var loadImageRetryingOnReconnectionSizeClosure: ((MediaSourceProxy, CGSize?) -> Task<UIImage, Error>)?
func loadImageRetryingOnReconnection(_ source: MediaSourceProxy, size: CGSize?) -> Task<UIImage, Error> {
loadImageRetryingOnReconnectionSizeCallsCount += 1
loadImageRetryingOnReconnectionSizeReceivedArguments = (source: source, size: size)
DispatchQueue.main.async {
self.loadImageRetryingOnReconnectionSizeReceivedInvocations.append((source: source, size: size))
}
if let loadImageRetryingOnReconnectionSizeClosure = loadImageRetryingOnReconnectionSizeClosure {
return loadImageRetryingOnReconnectionSizeClosure(source, size)
} else {
return loadImageRetryingOnReconnectionSizeReturnValue
}
}
//MARK: - loadThumbnailForSource
var loadThumbnailForSourceSourceSizeUnderlyingCallsCount = 0
var loadThumbnailForSourceSourceSizeCallsCount: Int {
get {
if Thread.isMainThread {
return loadThumbnailForSourceSourceSizeUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = loadThumbnailForSourceSourceSizeUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadThumbnailForSourceSourceSizeUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
loadThumbnailForSourceSourceSizeUnderlyingCallsCount = newValue
}
}
}
}
var loadThumbnailForSourceSourceSizeCalled: Bool {
return loadThumbnailForSourceSourceSizeCallsCount > 0
}
var loadThumbnailForSourceSourceSizeReceivedArguments: (source: MediaSourceProxy, size: CGSize)?
var loadThumbnailForSourceSourceSizeReceivedInvocations: [(source: MediaSourceProxy, size: CGSize)] = []
var loadThumbnailForSourceSourceSizeUnderlyingReturnValue: Result<Data, MediaProviderError>!
var loadThumbnailForSourceSourceSizeReturnValue: Result<Data, MediaProviderError>! {
get {
if Thread.isMainThread {
return loadThumbnailForSourceSourceSizeUnderlyingReturnValue
} else {
var returnValue: Result<Data, MediaProviderError>? = nil
DispatchQueue.main.sync {
returnValue = loadThumbnailForSourceSourceSizeUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadThumbnailForSourceSourceSizeUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
loadThumbnailForSourceSourceSizeUnderlyingReturnValue = newValue
}
}
}
}
var loadThumbnailForSourceSourceSizeClosure: ((MediaSourceProxy, CGSize) async -> Result<Data, MediaProviderError>)?
func loadThumbnailForSource(source: MediaSourceProxy, size: CGSize) async -> Result<Data, MediaProviderError> {
loadThumbnailForSourceSourceSizeCallsCount += 1
loadThumbnailForSourceSourceSizeReceivedArguments = (source: source, size: size)
DispatchQueue.main.async {
self.loadThumbnailForSourceSourceSizeReceivedInvocations.append((source: source, size: size))
}
if let loadThumbnailForSourceSourceSizeClosure = loadThumbnailForSourceSourceSizeClosure {
return await loadThumbnailForSourceSourceSizeClosure(source, size)
} else {
return loadThumbnailForSourceSourceSizeReturnValue
}
}
//MARK: - loadFileFromSource
var loadFileFromSourceBodyUnderlyingCallsCount = 0
var loadFileFromSourceBodyCallsCount: Int {
get {
if Thread.isMainThread {
return loadFileFromSourceBodyUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = loadFileFromSourceBodyUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadFileFromSourceBodyUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
loadFileFromSourceBodyUnderlyingCallsCount = newValue
}
}
}
}
var loadFileFromSourceBodyCalled: Bool {
return loadFileFromSourceBodyCallsCount > 0
}
var loadFileFromSourceBodyReceivedArguments: (source: MediaSourceProxy, body: String?)?
var loadFileFromSourceBodyReceivedInvocations: [(source: MediaSourceProxy, body: String?)] = []
var loadFileFromSourceBodyUnderlyingReturnValue: Result<MediaFileHandleProxy, MediaProviderError>!
var loadFileFromSourceBodyReturnValue: Result<MediaFileHandleProxy, MediaProviderError>! {
get {
if Thread.isMainThread {
return loadFileFromSourceBodyUnderlyingReturnValue
} else {
var returnValue: Result<MediaFileHandleProxy, MediaProviderError>? = nil
DispatchQueue.main.sync {
returnValue = loadFileFromSourceBodyUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
loadFileFromSourceBodyUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
loadFileFromSourceBodyUnderlyingReturnValue = newValue
}
}
}
}
var loadFileFromSourceBodyClosure: ((MediaSourceProxy, String?) async -> Result<MediaFileHandleProxy, MediaProviderError>)?
func loadFileFromSource(_ source: MediaSourceProxy, body: String?) async -> Result<MediaFileHandleProxy, MediaProviderError> {
loadFileFromSourceBodyCallsCount += 1
loadFileFromSourceBodyReceivedArguments = (source: source, body: body)
DispatchQueue.main.async {
self.loadFileFromSourceBodyReceivedInvocations.append((source: source, body: body))
}
if let loadFileFromSourceBodyClosure = loadFileFromSourceBodyClosure {
return await loadFileFromSourceBodyClosure(source, body)
} else {
return loadFileFromSourceBodyReturnValue
}
}
}
class NetworkMonitorMock: NetworkMonitorProtocol {
var reachabilityPublisher: CurrentValuePublisher<NetworkMonitorReachability, Never> {
get { return underlyingReachabilityPublisher }
@@ -0,0 +1,57 @@
//
// Copyright 2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only
// Please see LICENSE in the repository root for full details.
//
import SwiftUI
extension MediaProviderMock {
struct Configuration { }
convenience init(configuration: Configuration) {
self.init()
imageFromSourceSizeClosure = { mediaSource, _ in
guard mediaSource != nil else {
return nil
}
if mediaSource?.url == .picturesDirectory {
return Asset.Images.appLogo.image
}
return UIImage(systemName: "photo")
}
loadImageFromSourceSizeClosure = { _, _ in
guard let image = UIImage(systemName: "photo") else {
fatalError()
}
return .success(image)
}
loadImageDataFromSourceClosure = { _ in
guard let image = UIImage(systemName: "photo"),
let data = image.pngData() else {
fatalError()
}
return .success(data)
}
loadFileFromSourceBodyReturnValue = .failure(.failedRetrievingFile)
loadImageRetryingOnReconnectionSizeClosure = { _, _ in
Task {
guard let image = UIImage(systemName: "photo") else {
fatalError()
}
return image
}
}
}
}
+1 -1
View File
@@ -17,7 +17,7 @@ extension UserSessionMock {
self.init()
clientProxy = configuration.clientProxy
mediaProvider = MockMediaProvider()
mediaProvider = MediaProviderMock(configuration: .init())
voiceMessageMediaManager = VoiceMessageMediaManagerMock()
sessionSecurityStatePublisher = CurrentValueSubject<SessionSecurityState, Never>(.init(verificationState: .verified, recoveryState: .enabled)).asCurrentValuePublisher()
@@ -46,7 +46,7 @@ final class PillAttachmentViewProvider: NSTextAttachmentViewProvider, NSSecureCo
if ProcessInfo.isXcodePreview || ProcessInfo.isRunningTests {
// The mock viewModel simulates the loading logic for testing purposes
context = PillContext.mock(type: .loadUser(isOwn: false))
mediaProvider = MockMediaProvider()
mediaProvider = MediaProviderMock(configuration: .init())
} else if let timelineContext = delegate?.timelineContext {
context = PillContext(timelineContext: timelineContext, data: pillData)
mediaProvider = timelineContext.mediaProvider
+1 -1
View File
@@ -37,7 +37,7 @@ struct PillView: View {
}
struct PillView_Previews: PreviewProvider, TestablePreview {
static let mockMediaProvider = MockMediaProvider()
static let mockMediaProvider = MediaProviderMock(configuration: .init())
static var previews: some View {
PillView(mediaProvider: mockMediaProvider,
@@ -189,7 +189,7 @@ struct AvatarHeaderView_Previews: PreviewProvider, TestablePreview {
isEncrypted: true,
isPublic: true),
avatarSize: .room(on: .details),
mediaProvider: MockMediaProvider()) {
mediaProvider: MediaProviderMock(configuration: .init())) {
HStack(spacing: 32) {
ShareLink(item: "test") {
CompoundIcon(\.shareIos)
@@ -203,7 +203,7 @@ struct AvatarHeaderView_Previews: PreviewProvider, TestablePreview {
Form {
AvatarHeaderView(accountOwner: RoomMemberDetails(withProxy: RoomMemberProxyMock.mockMe), dmRecipient: RoomMemberDetails(withProxy: RoomMemberProxyMock.mockAlice),
mediaProvider: MockMediaProvider()) {
mediaProvider: MediaProviderMock(configuration: .init())) {
HStack(spacing: 32) {
ShareLink(item: "test") {
CompoundIcon(\.shareIos)
@@ -218,11 +218,11 @@ struct AvatarHeaderView_Previews: PreviewProvider, TestablePreview {
VStack(spacing: 16) {
AvatarHeaderView(member: RoomMemberDetails(withProxy: RoomMemberProxyMock.mockAlice),
avatarSize: .room(on: .details),
mediaProvider: MockMediaProvider()) { Text("") }
mediaProvider: MediaProviderMock(configuration: .init())) { Text("") }
AvatarHeaderView(member: RoomMemberDetails(withProxy: RoomMemberProxyMock.mockBanned[3]),
avatarSize: .room(on: .details),
mediaProvider: MockMediaProvider()) { Text("") }
mediaProvider: MediaProviderMock(configuration: .init())) { Text("") }
}
.padding()
.background(Color.compound.bgSubtleSecondaryLevel0)
@@ -93,30 +93,30 @@ struct RoomAvatarImage_Previews: PreviewProvider, TestablePreview {
name: "Room",
avatarURL: nil),
avatarSize: .room(on: .home),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .room(id: "!2:server.com",
name: "Room",
avatarURL: .picturesDirectory),
avatarSize: .room(on: .home),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .heroes([.init(userID: "@user:server.com",
displayName: "User",
avatarURL: nil)]),
avatarSize: .room(on: .home),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .heroes([.init(userID: "@user:server.com",
displayName: "User",
avatarURL: .picturesDirectory)]),
avatarSize: .room(on: .home),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
RoomAvatarImage(avatar: .heroes([.init(userID: "@alice:server.com", displayName: "Alice", avatarURL: nil),
.init(userID: "@bob:server.net", displayName: "Bob", avatarURL: nil)]),
avatarSize: .room(on: .home),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
}
}
}
@@ -62,13 +62,13 @@ struct RoomInviterLabel_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
VStack(spacing: 10) {
RoomInviterLabel(inviter: .init(member: RoomMemberProxyMock.mockAlice),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
RoomInviterLabel(inviter: .init(member: RoomMemberProxyMock.mockDan),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
RoomInviterLabel(inviter: .init(member: RoomMemberProxyMock.mockNoName),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
RoomInviterLabel(inviter: .init(member: RoomMemberProxyMock.mockCharlie),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
.foregroundStyle(.compound.textPrimary)
}
.font(.compound.bodyMD)
@@ -65,21 +65,21 @@ struct UserProfileCell_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
Form {
UserProfileListRow(user: .mockAlice, membership: nil, mediaProvider: MockMediaProvider(),
UserProfileListRow(user: .mockAlice, membership: nil, mediaProvider: MediaProviderMock(configuration: .init()),
kind: .multiSelection(isSelected: true, action: action))
UserProfileListRow(user: .mockBob, membership: nil, mediaProvider: MockMediaProvider(),
UserProfileListRow(user: .mockBob, membership: nil, mediaProvider: MediaProviderMock(configuration: .init()),
kind: .multiSelection(isSelected: false, action: action))
UserProfileListRow(user: .mockCharlie, membership: .join, mediaProvider: MockMediaProvider(),
UserProfileListRow(user: .mockCharlie, membership: .join, mediaProvider: MediaProviderMock(configuration: .init()),
kind: .multiSelection(isSelected: true, action: action))
.disabled(true)
UserProfileListRow(user: .init(userID: "@someone:matrix.org"), membership: .join, mediaProvider: MockMediaProvider(),
UserProfileListRow(user: .init(userID: "@someone:matrix.org"), membership: .join, mediaProvider: MediaProviderMock(configuration: .init()),
kind: .multiSelection(isSelected: false, action: action))
.disabled(true)
UserProfileListRow(user: .init(userID: "@someone:matrix.org"), membership: nil, mediaProvider: MockMediaProvider(),
UserProfileListRow(user: .init(userID: "@someone:matrix.org"), membership: nil, mediaProvider: MediaProviderMock(configuration: .init()),
kind: .multiSelection(isSelected: false, action: action))
}
.compoundList()
@@ -55,7 +55,7 @@ struct BlockedUsersScreen: View {
struct BlockedUsersScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = BlockedUsersScreenViewModel(hideProfiles: true,
clientProxy: ClientProxyMock(.init(userID: RoomMemberProxyMock.mockMe.userID)),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: UserIndicatorControllerMock())
static var previews: some View {
@@ -206,7 +206,7 @@ private class GlobalSearchTextField: UITextField {
struct GlobalSearchScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = GlobalSearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
static var previews: some View {
NavigationStack {
@@ -37,7 +37,7 @@ struct GlobalSearchScreenListRow: View {
struct GlobalSearchScreenListRow_Previews: PreviewProvider, TestablePreview {
static let viewModel = GlobalSearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
static var previews: some View {
List {
@@ -154,7 +154,7 @@ struct InviteUsersScreen_Previews: PreviewProvider, TestablePreview {
return InviteUsersScreenViewModel(clientProxy: ClientProxyMock(.init()),
selectedUsers: .init([]),
roomType: .draft,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userDiscoveryService: userDiscoveryService,
userIndicatorController: UserIndicatorControllerMock())
}()
@@ -50,7 +50,7 @@ struct InviteUsersScreenSelectedItem_Previews: PreviewProvider, TestablePreview
ScrollView(.horizontal) {
HStack(spacing: 28) {
ForEach(people, id: \.userID) { user in
InviteUsersScreenSelectedItem(user: user, mediaProvider: MockMediaProvider(), dismissAction: { })
InviteUsersScreenSelectedItem(user: user, mediaProvider: MediaProviderMock(configuration: .init()), dismissAction: { })
.frame(width: 72)
}
}
@@ -168,7 +168,7 @@ struct JoinRoomScreen_Previews: PreviewProvider, TestablePreview {
via: [],
allowKnocking: true,
clientProxy: clientProxy,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: ServiceLocator.shared.userIndicatorController)
}
}
@@ -99,7 +99,7 @@ struct MessageForwardingScreen_Previews: PreviewProvider, TestablePreview {
clientProxy: ClientProxyMock(.init()),
roomSummaryProvider: summaryProvider,
userIndicatorController: UserIndicatorControllerMock(),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
NavigationStack {
MessageForwardingScreen(context: viewModel.context)
@@ -90,7 +90,7 @@ struct PinnedEventsTimelineScreen_Previews: PreviewProvider, TestablePreview {
timelineController.timelineItems = []
return TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Preview room")),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: UserIndicatorControllerMock(),
@@ -122,7 +122,7 @@ struct RoomChangeRolesScreen_Previews: PreviewProvider, TestablePreview {
static func makeViewModel(mode: RoomMemberDetails.Role) -> RoomChangeRolesScreenViewModel {
RoomChangeRolesScreenViewModel(mode: mode,
roomProxy: JoinedRoomProxyMock(.init(members: .allMembersAsAdmin)),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: UserIndicatorControllerMock(),
analytics: ServiceLocator.shared.analytics)
}
@@ -39,34 +39,34 @@ struct RoomChangeRolesScreenRow_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
Form {
RoomChangeRolesScreenRow(member: .init(withProxy: RoomMemberProxyMock.mockAlice),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
isSelected: true,
action: action)
RoomChangeRolesScreenRow(member: .init(withProxy: RoomMemberProxyMock.mockBob),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
isSelected: false,
action: action)
RoomChangeRolesScreenRow(member: .init(withProxy: RoomMemberProxyMock.mockInvited),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
isSelected: false,
action: action)
RoomChangeRolesScreenRow(member: .init(withProxy: RoomMemberProxyMock.mockCharlie),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
isSelected: true,
action: action)
.disabled(true)
RoomChangeRolesScreenRow(member: .init(withProxy: RoomMemberProxyMock(with: .init(userID: "@someone:matrix.org", membership: .join))),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
isSelected: false,
action: action)
.disabled(true)
RoomChangeRolesScreenRow(member: .init(withProxy: RoomMemberProxyMock(with: .init(userID: "@someone:matrix.org", membership: .join))),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
isSelected: false,
action: action)
}
@@ -60,7 +60,7 @@ struct RoomChangeRolesScreenSelectedItem_Previews: PreviewProvider, TestablePrev
HStack(spacing: 12) {
ForEach(members, id: \.id) { member in
RoomChangeRolesScreenSelectedItem(member: member,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
dismissAction: { })
.frame(width: 72)
}
@@ -153,7 +153,7 @@ struct RoomDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
members: [.mockMeAdmin]))
return RoomDetailsEditScreenViewModel(roomProxy: roomProxy,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: UserIndicatorControllerMock.default)
}()
@@ -163,7 +163,7 @@ struct RoomDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
members: [.mockAlice]))
return RoomDetailsEditScreenViewModel(roomProxy: roomProxy,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: UserIndicatorControllerMock.default)
}()
@@ -321,7 +321,7 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
return RoomDetailsScreenViewModel(roomProxy: roomProxy,
clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
analyticsService: ServiceLocator.shared.analytics,
userIndicatorController: ServiceLocator.shared.userIndicatorController,
notificationSettingsProxy: notificationSettingsProxy,
@@ -347,7 +347,7 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
return RoomDetailsScreenViewModel(roomProxy: roomProxy,
clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
analyticsService: ServiceLocator.shared.analytics,
userIndicatorController: ServiceLocator.shared.userIndicatorController,
notificationSettingsProxy: notificationSettingsProxy,
@@ -372,7 +372,7 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
return RoomDetailsScreenViewModel(roomProxy: roomProxy,
clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
analyticsService: ServiceLocator.shared.analytics,
userIndicatorController: ServiceLocator.shared.userIndicatorController,
notificationSettingsProxy: notificationSettingsProxy,
@@ -55,7 +55,7 @@ struct RoomDirectorySearchCell_Previews: PreviewProvider, TestablePreview {
name: "Test title",
avatarURL: nil),
canBeJoined: true),
mediaProvider: MockMediaProvider()) { }
mediaProvider: MediaProviderMock(configuration: .init())) { }
RoomDirectorySearchCell(result: .init(id: "!test_id_2:matrix.org",
alias: "#test:example.com",
@@ -65,7 +65,7 @@ struct RoomDirectorySearchCell_Previews: PreviewProvider, TestablePreview {
name: nil,
avatarURL: nil),
canBeJoined: true),
mediaProvider: MockMediaProvider()) { }
mediaProvider: MediaProviderMock(configuration: .init())) { }
RoomDirectorySearchCell(result: .init(id: "!test_id_3:example.com",
alias: "#test_no_topic:example.com",
@@ -75,7 +75,7 @@ struct RoomDirectorySearchCell_Previews: PreviewProvider, TestablePreview {
name: "Test title no topic",
avatarURL: nil),
canBeJoined: true),
mediaProvider: MockMediaProvider()) { }
mediaProvider: MediaProviderMock(configuration: .init())) { }
RoomDirectorySearchCell(result: .init(id: "!test_id_4:example.com",
alias: "#test_no_topic:example.com",
@@ -85,7 +85,7 @@ struct RoomDirectorySearchCell_Previews: PreviewProvider, TestablePreview {
name: nil,
avatarURL: nil),
canBeJoined: true),
mediaProvider: MockMediaProvider()) { }
mediaProvider: MediaProviderMock(configuration: .init())) { }
RoomDirectorySearchCell(result: .init(id: "!test_id_5:example.com",
alias: nil,
@@ -95,7 +95,7 @@ struct RoomDirectorySearchCell_Previews: PreviewProvider, TestablePreview {
name: "Test title no alias",
avatarURL: nil),
canBeJoined: false),
mediaProvider: MockMediaProvider()) { }
mediaProvider: MediaProviderMock(configuration: .init())) { }
RoomDirectorySearchCell(result: .init(id: "!test_id_6:example.com",
alias: nil,
@@ -105,7 +105,7 @@ struct RoomDirectorySearchCell_Previews: PreviewProvider, TestablePreview {
name: "Test title no alias",
avatarURL: nil),
canBeJoined: false),
mediaProvider: MockMediaProvider()) { }
mediaProvider: MediaProviderMock(configuration: .init())) { }
RoomDirectorySearchCell(result: .init(id: "!test_id_7:example.com",
alias: nil,
@@ -115,7 +115,7 @@ struct RoomDirectorySearchCell_Previews: PreviewProvider, TestablePreview {
name: nil,
avatarURL: nil),
canBeJoined: false),
mediaProvider: MockMediaProvider()) { }
mediaProvider: MediaProviderMock(configuration: .init())) { }
RoomDirectorySearchCell(result: .init(id: "!test_id_8:example.com",
alias: nil,
name: nil,
@@ -124,7 +124,7 @@ struct RoomDirectorySearchCell_Previews: PreviewProvider, TestablePreview {
name: nil,
avatarURL: nil),
canBeJoined: false),
mediaProvider: MockMediaProvider()) { }
mediaProvider: MediaProviderMock(configuration: .init())) { }
}
.compoundList()
}
@@ -93,7 +93,7 @@ struct RoomDirectorySearchScreen_Previews: PreviewProvider, TestablePreview {
return RoomDirectorySearchScreenViewModel(clientProxy: clientProxy,
userIndicatorController: UserIndicatorControllerMock(),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
}()
static var previews: some View {
@@ -147,7 +147,7 @@ struct RoomMemberDetailsScreen_Previews: PreviewProvider, TestablePreview {
return RoomMemberDetailsScreenViewModel(userID: member.userID,
roomProxy: roomProxyMock,
clientProxy: clientProxyMock,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics)
}
@@ -100,7 +100,7 @@ private extension RoomMembersListScreenViewModel {
static var mock: RoomMembersListScreenViewModel {
RoomMembersListScreenViewModel(initialMode: .members,
roomProxy: JoinedRoomProxyMock(.init(members: .allMembersAsAdmin)),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics)
}
@@ -174,7 +174,7 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
members: members,
ownUserID: ownUserID,
canUserInvite: false)),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics)
}
@@ -99,7 +99,7 @@ struct RoomMembersListMemberCell_Previews: PreviewProvider, TestablePreview {
static let viewModel = RoomMembersListScreenViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Some room",
members: members)),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics)
static var previews: some View {
@@ -116,12 +116,12 @@ struct CompletionSuggestion_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
// Putting them is VStack allows the preview to work properly in tests
VStack(spacing: 8) {
CompletionSuggestionView(mediaProvider: MockMediaProvider(),
CompletionSuggestionView(mediaProvider: MediaProviderMock(configuration: .init()),
items: [.user(item: MentionSuggestionItem(id: "@user_mention_1:matrix.org", displayName: "User 1", avatarURL: nil, range: .init())),
.user(item: MentionSuggestionItem(id: "@user_mention_2:matrix.org", displayName: "User 2", avatarURL: URL.documentsDirectory, range: .init()))]) { _ in }
}
VStack(spacing: 8) {
CompletionSuggestionView(mediaProvider: MockMediaProvider(),
CompletionSuggestionView(mediaProvider: MediaProviderMock(configuration: .init()),
items: multipleItems) { _ in }
}
}
@@ -295,7 +295,7 @@ struct ComposerToolbar_Previews: PreviewProvider, TestablePreview {
static let wysiwygViewModel = WysiwygComposerViewModel()
static let composerViewModel = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel,
completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init(suggestions: suggestions)),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mentionDisplayHelper: ComposerMentionDisplayHelper.mock,
analyticsService: ServiceLocator.shared.analytics,
composerDraftService: ComposerDraftServiceMock())
@@ -338,7 +338,7 @@ extension ComposerToolbar {
var composerViewModel: ComposerToolbarViewModel {
let model = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel,
completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mentionDisplayHelper: ComposerMentionDisplayHelper.mock,
analyticsService: ServiceLocator.shared.analytics,
composerDraftService: ComposerDraftServiceMock())
@@ -355,7 +355,7 @@ extension ComposerToolbar {
var composerViewModel: ComposerToolbarViewModel {
let model = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel,
completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mentionDisplayHelper: ComposerMentionDisplayHelper.mock,
analyticsService: ServiceLocator.shared.analytics,
composerDraftService: ComposerDraftServiceMock())
@@ -372,7 +372,7 @@ extension ComposerToolbar {
var composerViewModel: ComposerToolbarViewModel {
let model = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel,
completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mentionDisplayHelper: ComposerMentionDisplayHelper.mock,
analyticsService: ServiceLocator.shared.analytics,
composerDraftService: ComposerDraftServiceMock())
@@ -390,7 +390,7 @@ extension ComposerToolbar {
var composerViewModel: ComposerToolbarViewModel {
let model = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel,
completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mentionDisplayHelper: ComposerMentionDisplayHelper.mock,
analyticsService: ServiceLocator.shared.analytics,
composerDraftService: ComposerDraftServiceMock())
@@ -411,7 +411,7 @@ extension ComposerToolbar {
var composerViewModel: ComposerToolbarViewModel {
let model = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel,
completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mentionDisplayHelper: ComposerMentionDisplayHelper.mock,
analyticsService: ServiceLocator.shared.analytics,
composerDraftService: ComposerDraftServiceMock())
@@ -35,7 +35,7 @@ struct MentionSuggestionItemView: View {
}
struct MentionSuggestionItemView_Previews: PreviewProvider, TestablePreview {
static let mockMediaProvider = MockMediaProvider()
static let mockMediaProvider = MediaProviderMock(configuration: .init())
static var previews: some View {
MentionSuggestionItemView(mediaProvider: mockMediaProvider, item: .init(id: "test", displayName: "Test", avatarURL: URL.documentsDirectory, range: .init()))
@@ -89,7 +89,7 @@ private struct RoomAttachmentPickerButtonStyle: ButtonStyle {
struct RoomAttachmentPicker_Previews: PreviewProvider, TestablePreview {
static let viewModel = ComposerToolbarViewModel(wysiwygViewModel: WysiwygComposerViewModel(),
completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mentionDisplayHelper: ComposerMentionDisplayHelper.mock,
analyticsService: ServiceLocator.shared.analytics,
composerDraftService: ComposerDraftServiceMock())
@@ -196,7 +196,7 @@ extension RoomScreenViewModel {
static func mock(roomProxyMock: JoinedRoomProxyMock) -> RoomScreenViewModel {
RoomScreenViewModel(roomProxy: roomProxyMock,
initialSelectedPinnedEventID: nil,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
ongoingCallRoomIDPublisher: .init(.init(nil)),
appMediator: AppMediatorMock.default,
appSettings: ServiceLocator.shared.settings,
@@ -42,7 +42,7 @@ struct RoomHeaderView_Previews: PreviewProvider, TestablePreview {
roomAvatar: .room(id: "1",
name: "Some Room Name",
avatarURL: URL.picturesDirectory),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
.previewLayout(.sizeThatFits)
.padding()
@@ -50,7 +50,7 @@ struct RoomHeaderView_Previews: PreviewProvider, TestablePreview {
roomAvatar: .room(id: "1",
name: "Some Room Name",
avatarURL: nil),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
.previewLayout(.sizeThatFits)
.padding()
}
@@ -214,7 +214,7 @@ struct RoomScreen_Previews: PreviewProvider, TestablePreview {
static let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -116,7 +116,7 @@ struct UserDetailsEditScreen: View {
struct UserDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = UserDetailsEditScreenViewModel(clientProxy: ClientProxyMock(.init(userID: "@stefan:matrix.org")),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: UserIndicatorControllerMock.default)
static var previews: some View {
@@ -845,7 +845,7 @@ extension TimelineViewModel {
static let mock = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Preview room")),
focussedEventID: nil,
timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -856,7 +856,7 @@ extension TimelineViewModel {
static let pinnedEventsTimelineMock = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Preview room")),
focussedEventID: nil,
timelineController: MockRoomTimelineController(timelineKind: .pinned),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -61,18 +61,18 @@ struct ReadReceiptCell_Previews: PreviewProvider, TestablePreview {
formattedTimestamp: "10:00"),
memberState: .init(displayName: "Test",
avatarURL: nil),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
.previewDisplayName("No Image")
ReadReceiptCell(readReceipt: .init(userID: "@test:matrix.org",
formattedTimestamp: "10:00"),
memberState: .init(displayName: "Test",
avatarURL: URL.documentsDirectory),
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
.previewDisplayName("With Image")
ReadReceiptCell(readReceipt: .init(userID: "@test:matrix.org",
formattedTimestamp: "10:00"),
memberState: nil,
mediaProvider: MockMediaProvider())
mediaProvider: MediaProviderMock(configuration: .init()))
.previewDisplayName("Loading Member")
}
}
@@ -45,7 +45,7 @@ struct ReadReceiptsSummaryView_Previews: PreviewProvider, TestablePreview {
let roomProxyMock = JoinedRoomProxyMock(.init(name: "Room", members: members))
let mock = TimelineViewModel(roomProxy: roomProxyMock,
timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: UserIndicatorControllerMock(),
@@ -359,7 +359,7 @@ struct TimelineItemBubbledStylerView_Previews: PreviewProvider, TestablePreview
return TimelineViewModel(roomProxy: roomProxy,
focussedEventID: nil,
timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -139,7 +139,7 @@ struct ReactionsSummaryView_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
ReactionsSummaryView(reactions: AggregatedReaction.mockReactions,
members: [:],
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
selectedReactionKey: AggregatedReaction.mockReactions[0].key)
}
}
@@ -83,7 +83,7 @@ struct TimelineReadReceiptsView_Previews: PreviewProvider, TestablePreview {
static let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Test", members: members)),
timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -90,7 +90,7 @@ struct HighlightedTimelineItemTimeline_Previews: PreviewProvider {
static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
focussedEventID: focussedEventID,
timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -80,7 +80,7 @@ struct TimelineView_Previews: PreviewProvider, TestablePreview {
static let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -111,7 +111,7 @@ struct UserProfileScreen_Previews: PreviewProvider, TestablePreview {
return UserProfileScreenViewModel(userID: userID,
isPresentedModally: false,
clientProxy: clientProxyMock,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics)
}
@@ -16,6 +16,7 @@ enum MediaProviderError: Error {
case cancelled
}
// sourcery: AutoMockable
protocol MediaProviderProtocol {
func imageFromSource(_ source: MediaSourceProxy?, size: CGSize?) -> UIImage?
func loadImageFromSource(_ source: MediaSourceProxy, size: CGSize?) async -> Result<UIImage, MediaProviderError>
@@ -1,62 +0,0 @@
//
// Copyright 2022-2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only
// Please see LICENSE in the repository root for full details.
//
import Foundation
import UIKit
struct MockMediaProvider: MediaProviderProtocol {
func loadThumbnailForSource(source: MediaSourceProxy, size: CGSize) async -> Result<Data, MediaProviderError> {
fatalError("Not implemented")
}
func imageFromSource(_ source: MediaSourceProxy?, size: CGSize?) -> UIImage? {
guard source != nil else {
return nil
}
if source?.url == .picturesDirectory {
return Asset.Images.appLogo.image
}
return UIImage(systemName: "photo")
}
func loadImageFromSource(_ source: MediaSourceProxy, size: CGSize?) async -> Result<UIImage, MediaProviderError> {
guard let image = UIImage(systemName: "photo") else {
fatalError()
}
return .success(image)
}
func loadImageDataFromSource(_ source: MediaSourceProxy) async -> Result<Data, MediaProviderError> {
guard let image = UIImage(systemName: "photo"),
let data = image.pngData() else {
fatalError()
}
return .success(data)
}
var loadFileFromSourceReturnValue: MediaFileHandleProxy?
func loadFileFromSource(_ source: MediaSourceProxy, body: String?) async -> Result<MediaFileHandleProxy, MediaProviderError> {
if let loadFileFromSourceReturnValue {
return .success(loadFileFromSourceReturnValue)
}
return .failure(.failedRetrievingFile)
}
func loadImageRetryingOnReconnection(_ source: MediaSourceProxy, size: CGSize?) -> Task<UIImage, any Error> {
Task {
guard let image = UIImage(systemName: "photo") else {
fatalError()
}
return image
}
}
}
@@ -235,7 +235,7 @@ class MockScreen: Identifiable {
let navigationStackCoordinator = NavigationStackCoordinator()
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Some room name", avatarURL: nil)),
timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -253,7 +253,7 @@ class MockScreen: Identifiable {
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -271,7 +271,7 @@ class MockScreen: Identifiable {
timelineController.timelineItems = RoomTimelineItemFixtures.default
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -289,7 +289,7 @@ class MockScreen: Identifiable {
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunkWithReadReceipts
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -310,7 +310,7 @@ class MockScreen: Identifiable {
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Small timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -331,7 +331,7 @@ class MockScreen: Identifiable {
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Small timeline, paginating", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -352,7 +352,7 @@ class MockScreen: Identifiable {
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -374,7 +374,7 @@ class MockScreen: Identifiable {
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -395,7 +395,7 @@ class MockScreen: Identifiable {
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -415,7 +415,7 @@ class MockScreen: Identifiable {
timelineController.timelineItems = RoomTimelineItemFixtures.permalinkChunk
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Timeline highlight", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -449,7 +449,7 @@ class MockScreen: Identifiable {
timelineController.incomingItems = []
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -470,7 +470,7 @@ class MockScreen: Identifiable {
timelineController.incomingItems = []
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -491,7 +491,7 @@ class MockScreen: Identifiable {
timelineController.incomingItems = []
let parameters = RoomScreenCoordinatorParameters(roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController,
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
mediaPlayerProvider: MediaPlayerProviderMock(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
emojiProvider: EmojiProvider(),
@@ -542,7 +542,7 @@ class MockScreen: Identifiable {
case .roomMembersListScreenPendingInvites:
let navigationStackCoordinator = NavigationStackCoordinator()
let members: [RoomMemberProxyMock] = [.mockInvitedAlice, .mockBob, .mockCharlie]
let coordinator = RoomMembersListScreenCoordinator(parameters: .init(mediaProvider: MockMediaProvider(),
let coordinator = RoomMembersListScreenCoordinator(parameters: .init(mediaProvider: MediaProviderMock(configuration: .init()),
roomProxy: JoinedRoomProxyMock(.init(name: "test", members: members)),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics))
@@ -552,7 +552,7 @@ class MockScreen: Identifiable {
let navigationStackCoordinator = NavigationStackCoordinator()
navigationStackCoordinator.setRootCoordinator(BlankFormCoordinator())
let coordinator = RoomRolesAndPermissionsFlowCoordinator(parameters: .init(roomProxy: JoinedRoomProxyMock(.init(members: .allMembersAsAdmin)),
mediaProvider: MockMediaProvider(),
mediaProvider: MediaProviderMock(configuration: .init()),
navigationStackCoordinator: navigationStackCoordinator,
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics))