@@ -51,6 +51,59 @@ final class DiskPersistenceDatastoreTests: XCTestCase {
51
51
XCTAssertEqual ( count, 3 )
52
52
}
53
53
54
+ func testLoadingEntriesFromDisk( ) async throws {
55
+ enum Version : Int , CaseIterable {
56
+ case zero
57
+ }
58
+
59
+ struct TestStruct : Codable , Identifiable {
60
+ var id : String
61
+ var value : String
62
+ }
63
+
64
+ do {
65
+ let persistence = try DiskPersistence ( readWriteURL: temporaryStoreURL)
66
+
67
+ let datastore = Datastore . JSONStore (
68
+ persistence: persistence,
69
+ key: " test " ,
70
+ version: Version . zero,
71
+ migrations: [
72
+ . zero: { data, decoder in
73
+ try decoder. decode ( TestStruct . self, from: data)
74
+ }
75
+ ]
76
+ )
77
+
78
+ try await datastore. persist ( TestStruct ( id: " 3 " , value: " My name is Dimitri " ) )
79
+ try await datastore. persist ( TestStruct ( id: " 1 " , value: " Hello, World! " ) )
80
+ try await datastore. persist ( TestStruct ( id: " 2 " , value: " Twenty Three is Number One " ) )
81
+ } catch { throw error }
82
+
83
+ /// Create a brand new persistence and load the entries we saved
84
+ let persistence = try DiskPersistence ( readWriteURL: temporaryStoreURL)
85
+
86
+ let datastore = Datastore . JSONStore (
87
+ persistence: persistence,
88
+ key: " test " ,
89
+ version: Version . zero,
90
+ migrations: [
91
+ . zero: { data, decoder in
92
+ try decoder. decode ( TestStruct . self, from: data)
93
+ }
94
+ ]
95
+ )
96
+ let count = try await datastore. count
97
+ XCTAssertEqual ( count, 3 )
98
+
99
+ let entry1 = try await datastore. load ( " 1 " )
100
+ XCTAssertEqual ( entry1? . value, " Hello, World! " )
101
+ let entry2 = try await datastore. load ( " 2 " )
102
+ XCTAssertEqual ( entry2? . value, " Twenty Three is Number One " )
103
+ let entry3 = try await datastore. load ( " 3 " )
104
+ XCTAssertEqual ( entry3? . value, " My name is Dimitri " )
105
+ }
106
+
54
107
func testWritingEntryWithIndex( ) async throws {
55
108
enum Version : Int , CaseIterable {
56
109
case zero
0 commit comments