diff options
author | Florian Dold <florian@dold.me> | 2022-01-12 16:04:19 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-01-12 16:04:19 +0100 |
commit | dd66e43b3ceb3e393f399ac5544941de8912c59d (patch) | |
tree | b6c0369056f65d751944707453edaedd274cd892 /packages/idb-bridge | |
parent | dc596f1f4d494c3bf9e57253d773205dc0479179 (diff) |
idb-bridge: add test for updating the same record with/without index key
Diffstat (limited to 'packages/idb-bridge')
-rw-r--r-- | packages/idb-bridge/src/MemoryBackend.test.ts | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/MemoryBackend.test.ts b/packages/idb-bridge/src/MemoryBackend.test.ts index ac1a9d908..3c5e13dff 100644 --- a/packages/idb-bridge/src/MemoryBackend.test.ts +++ b/packages/idb-bridge/src/MemoryBackend.test.ts @@ -356,6 +356,59 @@ test("export", async (t) => { t.pass(); }); +test("update with non-existent index values", async (t) => { + const backend = new MemoryBackend(); + backend.enableTracing = true; + const idb = new BridgeIDBFactory(backend); + const request = idb.open("mydb"); + request.onupgradeneeded = () => { + const db = request.result; + const store = db.createObjectStore("bla", { keyPath: "x" }); + store.createIndex("by_y", "y"); + store.createIndex("by_z", "z"); + }; + + const db: BridgeIDBDatabase = await promiseFromRequest(request); + + t.is(db.name, "mydb"); + + { + const tx = db.transaction("bla", "readwrite"); + const store = tx.objectStore("bla"); + store.put({ x: 0, y: "a", z: 42 }); + const index = store.index("by_z"); + const indRes = await promiseFromRequest(index.get(42)); + t.is(indRes.x, 0); + const res = await promiseFromRequest(store.get(0)); + t.is(res.z, 42); + await promiseFromTransaction(tx); + } + + { + const tx = db.transaction("bla", "readwrite"); + const store = tx.objectStore("bla"); + store.put({ x: 0, y: "a" }); + const res = await promiseFromRequest(store.get(0)); + t.is(res.z, undefined); + await promiseFromTransaction(tx); + } + + { + const tx = db.transaction("bla", "readwrite"); + const store = tx.objectStore("bla"); + const index = store.index("by_z"); + { + const indRes = await promiseFromRequest(index.get(42)); + t.is(indRes, undefined); + } + const res = await promiseFromRequest(store.get(0)); + t.is(res.z, undefined); + await promiseFromTransaction(tx); + } + + t.pass(); +}); + test("range queries", async (t) => { const backend = new MemoryBackend(); backend.enableTracing = true; |