Skip to content
Snippets Groups Projects
Commit b15f1caa authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Replace MakeContact with Contact static extensions

parent 94d97dba
Branches
Tags
2 merge requests!102Release 1.0.0,!42Update Bindings
......@@ -16,20 +16,13 @@ extension UdSearchCallback {
}
extension UdSearchCallback {
func makeBindingsUdSearchCallback(
makeContact: MakeContact = .live()
) -> BindingsUdSearchCallbackProtocol {
func makeBindingsUdSearchCallback() -> BindingsUdSearchCallbackProtocol {
class CallbackObject: NSObject, BindingsUdSearchCallbackProtocol {
init(
callback: UdSearchCallback,
makeContact: MakeContact
) {
init(_ callback: UdSearchCallback) {
self.callback = callback
self.makeContact = makeContact
}
let callback: UdSearchCallback
let makeContact: MakeContact
func callback(_ contactListJSON: Data?, err: Error?) {
if let error = err {
......@@ -37,7 +30,7 @@ extension UdSearchCallback {
} else if let data = contactListJSON {
do {
let contactsData = try JSONDecoder().decode([Data].self, from: data)
let contacts: [Contact] = contactsData.map { makeContact($0) }
let contacts: [Contact] = contactsData.map { Contact.live($0) }
callback.handle(.success(contacts))
} catch {
callback.handle(.failure(error as NSError))
......@@ -48,9 +41,6 @@ extension UdSearchCallback {
}
}
return CallbackObject(
callback: self,
makeContact: makeContact
)
return CallbackObject(self)
}
}
import Foundation
public struct MakeContact {
public var run: (Data) -> Contact
public func callAsFunction(_ data: Data) -> Contact {
run(data)
}
}
extension MakeContact {
public static func live(
getIdFromContact: GetIdFromContact = .live,
getPublicKeyFromContact: GetPublicKeyFromContact = .live,
getFactsFromContact: GetFactsFromContact = .live
) -> MakeContact {
MakeContact { data in
Contact(
data: data,
getId: { try getIdFromContact(data) },
getPublicKey: { try getPublicKeyFromContact(data) },
getFacts: { try getFactsFromContact(data) }
)
}
}
}
import Foundation
import XCTestDynamicOverlay
public struct Contact {
public init(
......@@ -24,3 +25,30 @@ extension Contact: Equatable {
lhs.data == rhs.data
}
}
extension Contact {
public static func live(
_ data: Data,
getIdFromContact: GetIdFromContact = .live,
getPublicKeyFromContact: GetPublicKeyFromContact = .live,
getFactsFromContact: GetFactsFromContact = .live
) -> Contact {
Contact(
data: data,
getId: { try getIdFromContact(data) },
getPublicKey: { try getPublicKeyFromContact(data) },
getFacts: { try getFactsFromContact(data) }
)
}
}
extension Contact {
public static func unimplemented(_ data: Data) -> Contact {
Contact(
data: data,
getId: XCTUnimplemented("\(Self.self).getId"),
getPublicKey: XCTUnimplemented("\(Self.self).getPublicKey"),
getFacts: XCTUnimplemented("\(Self.self).getFacts")
)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment