// // PassKitMocks.swift // PSCB-OOS-iOSTests // // Created by OA on 22.10.2020. // #if canImport(PassKit) import Foundation import PassKit // MARK: - Mock payment internal class MockPayment: PKPayment { override var token: PKPaymentToken { return self._token } override var billingContact: PKContact? { return self._billingContact } override var shippingContact: PKContact? { return self._shippingContact } override var shippingMethod: PKShippingMethod? { return self._shippingMethod } let _token: MockPaymentToken let _billingContact: PKContact? let _shippingContact: PKContact? let _shippingMethod: PKShippingMethod? init(token: MockPaymentToken, billingContact: PKContact? = nil, shippingContact: PKContact? = nil, shippingMethod: PKShippingMethod? = nil) { self._token = token self._billingContact = billingContact self._shippingContact = shippingContact self._shippingMethod = shippingMethod } static func createPayment() -> PKPayment { let token = MockPaymentToken.createToken() return MockPayment(token: token as! MockPaymentToken) } } // MARK: - Mock payment token internal class MockPaymentToken: PKPaymentToken { override var paymentMethod: PKPaymentMethod { return self._paymentMethod } override var transactionIdentifier: String { return self._transactionIdentifier } override var paymentData: Data { return self._paymentData } let _paymentMethod: MockPaymentMethod let _transactionIdentifier = "2C7B4FD8-7D1B-49D4-8AB5-AFE3CC79265A" let _paymentData: Data = { let dict: [AnyHashable: AnyHashable] = [ "version": "EC_v1", "data": "....", "signature": "...." ] return try! JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted) }() init(paymentMethod: MockPaymentMethod) { self._paymentMethod = paymentMethod } static func createToken() -> PKPaymentToken { return MockPaymentToken(paymentMethod: MockPaymentMethod.createMethod() as! MockPaymentMethod) } } // MARK: - Mock payment method internal class MockPaymentMethod: PKPaymentMethod { override var displayName: String? { return self._displayName } override var network: PKPaymentNetwork? { return self._network } override var type: PKPaymentMethodType { return self._type } let _displayName: String? let _network: PKPaymentNetwork? let _type: PKPaymentMethodType init(type: PKPaymentMethodType, network: PKPaymentNetwork? = nil, displayName: String? = nil) { self._network = network self._type = type self._displayName = displayName } static func createMethod() -> PKPaymentMethod { return MockPaymentMethod(type: .debit, network: .visa, displayName: "PSCB Visa") } } #endif