diff --git a/Sources/ElixxirDAppsSDK/Models/BackupReport.swift b/Sources/ElixxirDAppsSDK/Models/BackupReport.swift index 3ee3dca91518e3379279c28af174b5abe252c660..33b5b2e24b8210dfa634f7e72149a9e2026fa7c1 100644 --- a/Sources/ElixxirDAppsSDK/Models/BackupReport.swift +++ b/Sources/ElixxirDAppsSDK/Models/BackupReport.swift @@ -2,14 +2,14 @@ import Foundation public struct BackupReport: Equatable { public init( - ids: Data, + ids: [Data], params: Data ) { self.ids = ids self.params = params } - public var ids: Data + public var ids: [Data] public var params: Data } @@ -26,4 +26,18 @@ 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) + } } diff --git a/Tests/ElixxirDAppsSDKTests/Models/BackupReportTests.swift b/Tests/ElixxirDAppsSDKTests/Models/BackupReportTests.swift index 93ef4f65d49f0387dc282cb9f8364dcb1120729d..6eea07267c36108b22b9efa4cc6ec51b4acbf83c 100644 --- a/Tests/ElixxirDAppsSDKTests/Models/BackupReportTests.swift +++ b/Tests/ElixxirDAppsSDKTests/Models/BackupReportTests.swift @@ -4,7 +4,12 @@ import XCTest final class BackupReportTests: XCTestCase { func testCoding() throws { - let idsB64 = "WyJPRHRRTTA4ZERpV3lXaE0wWUhjanRHWnZQcHRSa1JOZ1pHR2FkTG10dE9BRCJd" + let ids: [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 = """ { @@ -16,7 +21,7 @@ final class BackupReportTests: XCTestCase { let model = try BackupReport.decode(jsonData) XCTAssertNoDifference(model, BackupReport( - ids: Data(base64Encoded: idsB64)!, + ids: ids, params: Data(base64Encoded: paramsB64)! ))