119 lines
3.0 KiB
Swift
119 lines
3.0 KiB
Swift
|
//
|
||
|
// 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
|