diff --git a/Tests/BodegaTests/DiskStorageEngineTests.swift b/Tests/BodegaTests/DiskStorageEngineTests.swift index 31941e3..b52d288 100644 --- a/Tests/BodegaTests/DiskStorageEngineTests.swift +++ b/Tests/BodegaTests/DiskStorageEngineTests.swift @@ -84,6 +84,19 @@ final class DiskStorageEngineTests: XCTestCase { "Value 9" ]) } + + func testReadingDataAndNonExistentKeys() async throws { + try await self.writeItemsToDisk(count: 5) + let allDataAndKeys = await storage.readAllDataAndKeys() + .sorted(by: { $0.key.value > $1.key.value }) + + let goodAndBadKeys = (0 ..< 10).reversed().map({ CacheKey(verbatim: "\($0)") }) + let validDataAndKeys = await storage.readDataAndKeys(keys: goodAndBadKeys) + .sorted(by: { $0.key.value > $1.key.value }) + + XCTAssertEqual(allDataAndKeys.map(\.key), validDataAndKeys.map(\.key)) + XCTAssertEqual(allDataAndKeys.map(\.data), validDataAndKeys.map(\.data)) + } func testReadingAllDataSucceeds() async throws { try await self.writeItemsToDisk(count: 10) diff --git a/Tests/BodegaTests/ObjectStorageTests.swift b/Tests/BodegaTests/ObjectStorageTests.swift index 8079571..47dc5e9 100644 --- a/Tests/BodegaTests/ObjectStorageTests.swift +++ b/Tests/BodegaTests/ObjectStorageTests.swift @@ -153,6 +153,19 @@ class ObjectStorageTests: XCTestCase { ]) } + func testReadingObjectsAndNonExistentKeys() async throws { + try await self.writeObjectsToDisk(count: 5) + let allDataAndKeys = await storage.allObjectsAndKeys() + .sorted(by: { $0.key.value > $1.key.value }) + + let goodAndBadKeys = (0 ..< 10).reversed().map({ CacheKey(verbatim: "\($0)") }) + let validObjectsAndKeys = await storage.objectsAndKeys(keys: goodAndBadKeys) + .sorted(by: { $0.key.value > $1.key.value }) + + XCTAssertEqual(allDataAndKeys.map(\.key), validObjectsAndKeys.map(\.key)) + XCTAssertEqual(allDataAndKeys.map(\.object), validObjectsAndKeys.map(\.object)) + } + func testReadingAllObjectsSucceeds() async throws { try await self.writeObjectsToDisk(count: 10) diff --git a/Tests/BodegaTests/SQLiteStorageEngineTests.swift b/Tests/BodegaTests/SQLiteStorageEngineTests.swift index 431ee31..6538aa8 100644 --- a/Tests/BodegaTests/SQLiteStorageEngineTests.swift +++ b/Tests/BodegaTests/SQLiteStorageEngineTests.swift @@ -84,6 +84,19 @@ final class SQLiteStorageEngineTests: XCTestCase { "Value 9" ]) } + + func testReadingDataAndNonExistentKeys() async throws { + try await self.writeItemsToDatabase(count: 5) + let allDataAndKeys = await storage.readAllDataAndKeys() + .sorted(by: { $0.key.value > $1.key.value }) + + let goodAndBadKeys = (0 ..< 10).reversed().map({ CacheKey(verbatim: "\($0)") }) + let validDataAndKeys = await storage.readDataAndKeys(keys: goodAndBadKeys) + .sorted(by: { $0.key.value > $1.key.value }) + + XCTAssertEqual(allDataAndKeys.map(\.key), validDataAndKeys.map(\.key)) + XCTAssertEqual(allDataAndKeys.map(\.data), validDataAndKeys.map(\.data)) + } func testReadingAllDataSucceeds() async throws { try await self.writeItemsToDatabase(count: 10)