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
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