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 ...@@ -2,21 +2,21 @@ import Foundation
public struct BackupReport: Equatable { public struct BackupReport: Equatable {
public init( public init(
ids: [Data], restoredContacts: [Data],
params: Data params: Data
) { ) {
self.ids = ids self.restoredContacts = restoredContacts
self.params = params self.params = params
} }
public var ids: [Data] public var restoredContacts: [Data]
public var params: Data public var params: Data
} }
extension BackupReport: Codable { extension BackupReport: Codable {
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case ids = "BackupIdListJson" case restoredContacts = "RestoredContacts"
case params = "BackupParams" case params = "Params"
} }
public static func decode(_ data: Data) throws -> Self { public static func decode(_ data: Data) throws -> Self {
...@@ -26,18 +26,4 @@ extension BackupReport: Codable { ...@@ -26,18 +26,4 @@ extension BackupReport: Codable {
public func encode() throws -> Data { public func encode() throws -> Data {
try JSONEncoder().encode(self) 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 ...@@ -4,24 +4,23 @@ import XCTest
final class BackupReportTests: XCTestCase { final class BackupReportTests: XCTestCase {
func testCoding() throws { func testCoding() throws {
let ids: [Data] = [ let restoredContacts: [Data] = [
"id1".data(using: .utf8)!, "id1".data(using: .utf8)!,
"id2".data(using: .utf8)!, "id2".data(using: .utf8)!,
"id3".data(using: .utf8)!, "id3".data(using: .utf8)!,
] ]
let idsB64 = try JSONEncoder().encode(ids).base64EncodedString()
let paramsB64 = "cGFyYW1z" let paramsB64 = "cGFyYW1z"
let jsonString = """ let jsonString = """
{ {
"BackupIdListJson": "\(idsB64)", "RestoredContacts": [\(restoredContacts.map { "\"\($0.base64EncodedString())\"" }.joined(separator: ", "))],
"BackupParams": "\(paramsB64)" "Params": "\(paramsB64)"
} }
""" """
let jsonData = jsonString.data(using: .utf8)! let jsonData = jsonString.data(using: .utf8)!
let model = try BackupReport.decode(jsonData) let model = try BackupReport.decode(jsonData)
XCTAssertNoDifference(model, BackupReport( XCTAssertNoDifference(model, BackupReport(
ids: ids, restoredContacts: restoredContacts,
params: Data(base64Encoded: paramsB64)! params: Data(base64Encoded: paramsB64)!
)) ))
......
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