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

Add UDSearchResult model

parent 5a2606ef
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!40Fix user discovery search
This commit is part of merge request !40. Comments created here will be created in the context of that merge request.
import Foundation
public struct UDSearchResult: Equatable {
public init(
id: Data,
facts: [Fact]
) {
self.id = id
self.facts = facts
}
public var id: Data
public var facts: [Fact]
}
extension UDSearchResult: Codable {
enum CodingKeys: String, CodingKey {
case id = "ID"
case facts = "Facts"
}
public static func decode(_ data: Data) throws -> Self {
try JSONDecoder().decode(Self.self, from: data)
}
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
}
extension Array where Element == UDSearchResult {
public static func decode(_ data: Data) throws -> Self {
try JSONDecoder().decode(Self.self, from: data)
}
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
}
import CustomDump
import XCTest
@testable import XXClient
final class UDSearchResultTests: XCTestCase {
func testCoding() throws {
let idB64 = "pYIpRwPy+FnOkl5tndkG8RC93W/t5b1lszqPpMDynlUD"
let facts: [Fact] = [
Fact(fact: "carlos_arimateias", type: 0),
]
let jsonString = """
{
"ID": "\(idB64)",
"Facts": \(String(data: try! facts.encode(), encoding: .utf8)!)
}
"""
let jsonData = jsonString.data(using: .utf8)!
let model = try UDSearchResult.decode(jsonData)
XCTAssertNoDifference(model, UDSearchResult(
id: Data(base64Encoded: idB64)!,
facts: facts
))
let encodedModel = try model.encode()
let decodedModel = try UDSearchResult.decode(encodedModel)
XCTAssertNoDifference(decodedModel, model)
}
func testCodingArray() throws {
let models: [UDSearchResult] = [
UDSearchResult(
id: Data(base64Encoded: "pYIpRwPy+FnOkl5tndkG8RC93W/t5b1lszqPpMDynlUD")!,
facts: [
Fact(fact: "carlos_arimateias", type: 0),
]
),
]
let encodedModels = try models.encode()
let decodedModels = try [UDSearchResult].decode(encodedModels)
XCTAssertNoDifference(decodedModels, models)
}
}
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