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

Add SearchUD.Params struct

parent 70badd4b
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!93Lookup, Multi-Lookup and Search API improvements
......@@ -2,30 +2,44 @@ import Bindings
import XCTestDynamicOverlay
public struct SearchUD {
public var run: (Int, Contact, [Fact], Data, UdSearchCallback) throws -> SingleUseSendReport
public struct Params: Equatable {
public init(
e2eId: Int,
udContact: Contact,
facts: [Fact],
singleRequestParamsJSON: Data = GetSingleUseParams.liveDefault()
) {
self.e2eId = e2eId
self.udContact = udContact
self.facts = facts
self.singleRequestParamsJSON = singleRequestParamsJSON
}
public var e2eId: Int
public var udContact: Contact
public var facts: [Fact]
public var singleRequestParamsJSON: Data
}
public var run: (Params, UdSearchCallback) throws -> SingleUseSendReport
public func callAsFunction(
e2eId: Int,
udContact: Contact,
facts: [Fact],
singleRequestParamsJSON: Data = GetSingleUseParams.liveDefault(),
params: Params,
callback: UdSearchCallback
) throws -> SingleUseSendReport {
try run(e2eId, udContact, facts, singleRequestParamsJSON, callback)
try run(params, callback)
}
}
extension SearchUD {
public static let live = SearchUD {
e2eId, udContact, facts, singleRequestParamsJSON, callback in
public static let live = SearchUD { params, callback in
var error: NSError?
let reportData = BindingsSearchUD(
e2eId,
udContact.data,
params.e2eId,
params.udContact.data,
callback.makeBindingsUdSearchCallback(),
try facts.encode(),
singleRequestParamsJSON,
try params.facts.encode(),
params.singleRequestParamsJSON,
&error
)
if let error = error {
......
......@@ -43,11 +43,13 @@ extension MessengerSearchContacts {
var result: Result<[Contact], Swift.Error>!
let semaphore = DispatchSemaphore(value: 0)
_ = try env.searchUD(
e2eId: e2e.getId(),
udContact: try ud.getContact(),
facts: query.facts,
singleRequestParamsJSON: env.getSingleUseParams(),
callback: .init { searchResult in
params: SearchUD.Params(
e2eId: e2e.getId(),
udContact: try ud.getContact(),
facts: query.facts,
singleRequestParamsJSON: env.getSingleUseParams()
),
callback: UdSearchCallback { searchResult in
switch searchResult {
case .success(let contacts):
result = .success(contacts)
......
......@@ -47,11 +47,13 @@ extension MessengerVerifyContact {
var searchResult: Result<[Contact], NSError>!
let semaphore = DispatchSemaphore(value: 0)
_ = try env.searchUD(
e2eId: e2e.getId(),
udContact: try ud.getContact(),
facts: facts,
singleRequestParamsJSON: env.getSingleUseParams(),
callback: .init { result in
params: SearchUD.Params(
e2eId: e2e.getId(),
udContact: try ud.getContact(),
facts: facts,
singleRequestParamsJSON: env.getSingleUseParams()
),
callback: UdSearchCallback { result in
searchResult = result
semaphore.signal()
}
......
......@@ -5,14 +5,7 @@ import XXClient
final class MessengerSearchContactsTests: XCTestCase {
func testSearch() throws {
struct SearchUdParams: Equatable {
var e2eId: Int
var udContact: Contact
var facts: [Fact]
var singleRequestParamsJSON: Data
}
var didSearchUdWithParams: [SearchUdParams] = []
var didSearchUdWithParams: [SearchUD.Params] = []
var env: MessengerEnvironment = .unimplemented
env.e2e.get = {
......@@ -26,13 +19,8 @@ final class MessengerSearchContactsTests: XCTestCase {
return ud
}
env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! }
env.searchUD.run = { e2eId, udContact, facts, singleRequestParamsJSON, callback in
didSearchUdWithParams.append(.init(
e2eId: e2eId,
udContact: udContact,
facts: facts,
singleRequestParamsJSON: singleRequestParamsJSON
))
env.searchUD.run = { params, callback in
didSearchUdWithParams.append(params)
callback.handle(.success([
.unimplemented("contact-1".data(using: .utf8)!),
.unimplemented("contact-2".data(using: .utf8)!),
......@@ -101,7 +89,7 @@ final class MessengerSearchContactsTests: XCTestCase {
return ud
}
env.getSingleUseParams.run = { Data() }
env.searchUD.run = { _, _, _, _, _ in throw error }
env.searchUD.run = { _, _ in throw error }
let search: MessengerSearchContacts = .live(env)
......@@ -126,7 +114,7 @@ final class MessengerSearchContactsTests: XCTestCase {
return ud
}
env.getSingleUseParams.run = { Data() }
env.searchUD.run = { _, _, _, _, callback in
env.searchUD.run = { _, callback in
callback.handle(.failure(error as NSError))
return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data())
}
......
......@@ -28,12 +28,6 @@ final class MessengerVerifyContactTests: XCTestCase {
}
func testVerifyContactWithoutFacts() throws {
struct LookupUDParams: Equatable {
var e2eId: Int
var udContact: Contact
var lookupId: Data
var singleRequestParamsJSON: Data
}
struct VerifyOwnershipParams: Equatable {
var received: Contact
var verified: Contact
......@@ -124,18 +118,12 @@ final class MessengerVerifyContactTests: XCTestCase {
}
func testVerifyContactWithFacts() throws {
struct SearchUDParams: Equatable {
var e2eId: Int
var udContact: Contact
var facts: [Fact]
var singleRequestParamsJSON: Data
}
struct VerifyOwnershipParams: Equatable {
var received: Contact
var verified: Contact
var e2eId: Int
}
var didSearchUDWithParams: [SearchUDParams] = []
var didSearchUDWithParams: [SearchUD.Params] = []
var didVerifyOwnershipWithParams: [VerifyOwnershipParams] = []
var contact = Contact.unimplemented("contact-data".data(using: .utf8)!)
......@@ -169,13 +157,8 @@ final class MessengerVerifyContactTests: XCTestCase {
return ud
}
env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! }
env.searchUD.run = { e2eId, udContact, facts, singleRequestParamsJSON, callback in
didSearchUDWithParams.append(.init(
e2eId: e2eId,
udContact: udContact,
facts: facts,
singleRequestParamsJSON: singleRequestParamsJSON
))
env.searchUD.run = { params, callback in
didSearchUDWithParams.append(params)
callback.handle(.success([foundContact]))
return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data())
}
......@@ -221,7 +204,7 @@ final class MessengerVerifyContactTests: XCTestCase {
return ud
}
env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! }
env.searchUD.run = { e2eId, udContact, facts, singleRequestParamsJSON, callback in
env.searchUD.run = { _, callback in
callback.handle(.success([]))
return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data())
}
......@@ -257,7 +240,7 @@ final class MessengerVerifyContactTests: XCTestCase {
return ud
}
env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! }
env.searchUD.run = { _, _, _, _, callback in
env.searchUD.run = { _, callback in
callback.handle(.failure(searchFailure))
return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data())
}
......@@ -291,7 +274,7 @@ final class MessengerVerifyContactTests: XCTestCase {
return ud
}
env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! }
env.searchUD.run = { _, _, _, _, callback in
env.searchUD.run = { _, callback in
callback.handle(.success([.unimplemented("found-contact-data".data(using: .utf8)!)]))
return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data())
}
......@@ -330,7 +313,7 @@ final class MessengerVerifyContactTests: XCTestCase {
return ud
}
env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! }
env.searchUD.run = { _, _, _, _, callback in
env.searchUD.run = { _, callback in
callback.handle(.success([.unimplemented("found-contact-data".data(using: .utf8)!)]))
return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data())
}
......
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