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

Update BackupReport model

parent 38c2aa56
No related branches found
No related tags found
1 merge request!102Release 1.0.0
......@@ -2,21 +2,21 @@ import Foundation
public struct BackupReport: Equatable {
public init(
ids: [Data],
restoredContacts: [Data],
params: Data
) {
self.ids = ids
self.restoredContacts = restoredContacts
self.params = params
}
public var ids: [Data]
public var restoredContacts: [Data]
public var params: Data
}
extension BackupReport: Codable {
enum CodingKeys: String, CodingKey {
case ids = "BackupIdListJson"
case params = "BackupParams"
case restoredContacts = "RestoredContacts"
case params = "Params"
}
public static func decode(_ data: Data) throws -> Self {
......@@ -26,18 +26,4 @@ extension BackupReport: Codable {
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
let idsData = try container.decode(Data.self, forKey: .ids)
ids = try JSONDecoder().decode([Data].self, from: idsData)
params = try container.decode(Data.self, forKey: .params)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
let idsData = try JSONEncoder().encode(ids)
try container.encode(idsData, forKey: .ids)
try container.encode(params, forKey: .params)
}
}
......@@ -4,24 +4,23 @@ import XCTest
final class BackupReportTests: XCTestCase {
func testCoding() throws {
let ids: [Data] = [
let restoredContacts: [Data] = [
"id1".data(using: .utf8)!,
"id2".data(using: .utf8)!,
"id3".data(using: .utf8)!,
]
let idsB64 = try JSONEncoder().encode(ids).base64EncodedString()
let paramsB64 = "cGFyYW1z"
let jsonString = """
{
"BackupIdListJson": "\(idsB64)",
"BackupParams": "\(paramsB64)"
"RestoredContacts": [\(restoredContacts.map { "\"\($0.base64EncodedString())\"" }.joined(separator: ", "))],
"Params": "\(paramsB64)"
}
"""
let jsonData = jsonString.data(using: .utf8)!
let model = try BackupReport.decode(jsonData)
XCTAssertNoDifference(model, BackupReport(
ids: ids,
restoredContacts: restoredContacts,
params: Data(base64Encoded: paramsB64)!
))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment