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
No related branches found
No related tags found
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.
Finish editing this message first!
Please register or to comment