From 7b722418a8fa9512d4348fbfba7f0fc62dbe6128 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Thu, 29 Sep 2022 22:02:54 +0200 Subject: [PATCH] Add BackupStorage.stored function --- .../Utils/BackupStorage.swift | 6 +++- .../Utils/BackupStorageTests.swift | 29 ++++++++++++------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Sources/XXMessengerClient/Utils/BackupStorage.swift b/Sources/XXMessengerClient/Utils/BackupStorage.swift index e85e2e86..2f9112be 100644 --- a/Sources/XXMessengerClient/Utils/BackupStorage.swift +++ b/Sources/XXMessengerClient/Utils/BackupStorage.swift @@ -18,6 +18,7 @@ public struct BackupStorage { public typealias Observer = (Backup?) -> Void + public var stored: () -> Backup? public var store: (Data) throws -> Void public var observe: (@escaping Observer) -> Cancellable public var remove: () throws -> Void @@ -43,6 +44,9 @@ extension BackupStorage { backup = Backup(date: fileDate, data: fileData) } return BackupStorage( + stored: { + backup + }, store: { data in let newBackup = Backup( date: now(), @@ -55,7 +59,6 @@ extension BackupStorage { observe: { observer in let id = UUID() observers[id] = observer - defer { observers[id]?(backup) } return Cancellable { observers[id] = nil } @@ -71,6 +74,7 @@ extension BackupStorage { extension BackupStorage { public static let unimplemented = BackupStorage( + stored: XCTUnimplemented("\(Self.self).stored"), store: XCTUnimplemented("\(Self.self).store"), observe: XCTUnimplemented("\(Self.self).observe", placeholder: Cancellable {}), remove: XCTUnimplemented("\(Self.self).remove") diff --git a/Tests/XXMessengerClientTests/Utils/BackupStorageTests.swift b/Tests/XXMessengerClientTests/Utils/BackupStorageTests.swift index d373ce6e..10da4a7c 100644 --- a/Tests/XXMessengerClientTests/Utils/BackupStorageTests.swift +++ b/Tests/XXMessengerClientTests/Utils/BackupStorageTests.swift @@ -32,6 +32,10 @@ final class BackupStorageTests: XCTestCase { path: path ) + XCTAssertNoDifference( + storage.stored(), + BackupStorage.Backup(date: fileDate, data: fileData) + ) XCTAssertNoDifference(actions, [ .didLoadFile(path), .didGetModifiedTime(path), @@ -42,43 +46,46 @@ final class BackupStorageTests: XCTestCase { actions.append(.didObserve("A", backup)) } - XCTAssertNoDifference(actions, [ - .didObserve("A", .init(date: fileDate, data: fileData)) - ]) + XCTAssertNoDifference(actions, []) + XCTAssertNoDifference( + storage.stored(), + BackupStorage.Backup(date: fileDate, data: fileData) + ) actions = [] now = .init(1) let data1 = "data-1".data(using: .utf8)! try storage.store(data1) + XCTAssertNoDifference( + storage.stored(), + BackupStorage.Backup(date: .init(1), data: data1) + ) XCTAssertNoDifference(actions, [ .didObserve("A", .init(date: .init(1), data: data1)), .didSaveFile(path, data1), ]) actions = [] - now = .init(2) let observerB = storage.observe { backup in actions.append(.didObserve("B", backup)) } - XCTAssertNoDifference(actions, [ - .didObserve("B", .init(date: .init(1), data: data1)) - ]) + XCTAssertNoDifference(actions, []) actions = [] - now = .init(3) + now = .init(2) observerA.cancel() let data2 = "data-2".data(using: .utf8)! try storage.store(data2) XCTAssertNoDifference(actions, [ - .didObserve("B", .init(date: .init(3), data: data2)), + .didObserve("B", .init(date: .init(2), data: data2)), .didSaveFile(path, data2), ]) actions = [] - now = .init(4) + now = .init(3) try storage.remove() XCTAssertNoDifference(actions, [ @@ -87,7 +94,7 @@ final class BackupStorageTests: XCTestCase { ]) actions = [] - now = .init(5) + now = .init(4) observerB.cancel() let data3 = "data-3".data(using: .utf8)! try storage.store(data3) -- GitLab