FBSDKShareKit/FBSDKShareKitTests/Content/MediaLibrary/TestPHImageManager.swift (44 lines of code) (raw):

/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * This source code is licensed under the license found in the * LICENSE file in the root directory of this source tree. */ import Photos import UIKit // This test double simply subclasses `PHImageManager` in order to capture calls to itself final class TestPHImageManager: PHImageManager { // MARK: - Requesting images var requestImageAsset: PHAsset? var requestImageTargetSize: CGSize? var requestImageContentMode: PHImageContentMode? var requestImageOptions: PHImageRequestOptions? var stubbedRequestImageImage: UIImage? var stubbedRequestImageInfo: [AnyHashable: Any]? override func requestImage( for asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHImageRequestOptions?, resultHandler: @escaping (UIImage?, [AnyHashable: Any]?) -> Void ) -> PHImageRequestID { requestImageAsset = asset requestImageTargetSize = targetSize requestImageContentMode = contentMode requestImageOptions = options resultHandler(stubbedRequestImageImage, stubbedRequestImageInfo) return PHImageRequestID(14) } // MARK: - Getting video URLs typealias RequestAVAssetResultHandler = (AVAsset?, AVAudioMix?, [AnyHashable: Any]?) -> Void var requestAVAssetAsset: PHAsset? var requestAVAssetOptions: PHVideoRequestOptions? var stubbedGetVideoURLAsset: AVAsset? var stubbedGetVideoURLAudioMix: AVAudioMix? var stubbedGetVideoURLInfo: [AnyHashable: Any]? override func requestAVAsset( forVideo asset: PHAsset, options: PHVideoRequestOptions?, resultHandler: @escaping RequestAVAssetResultHandler ) -> PHImageRequestID { requestAVAssetAsset = asset requestAVAssetOptions = options resultHandler( stubbedGetVideoURLAsset, stubbedGetVideoURLAudioMix, stubbedGetVideoURLInfo ) return PHImageRequestID(14) } }