Skip to content

Instantly share code, notes, and snippets.

@vialyx
Last active October 15, 2018 04:22
Show Gist options
  • Save vialyx/a7f64ecb74ae010b4986a79f5e8e902e to your computer and use it in GitHub Desktop.
Save vialyx/a7f64ecb74ae010b4986a79f5e8e902e to your computer and use it in GitHub Desktop.
protocol CardType {
var holderName: String { get set }
var number: String { get set }
var expiration: String? { get set }
var month: String? { get }
var year: String? { get }
}
struct Card: CardType {
var holderName: String
var number: String
var expiration: String?
var month: String? { return "" }
var year: String? { return "" }
}
protocol Mockable {
static func mock(_ option: Int) -> Self
}
extension Card: Mockable {
static func mock(_ option: Int) -> Card {
switch option {
case 1:
return Card(holderName: "John Malkovich", number: "4111 1111 1111 1111", expiration: "09/12")
default:
return Card(holderName: "Mock", number: "0000 0000 0000 0000", expiration: "00/00")
}
}
}
let mockCard = Card.mock(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment