aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/MemoryBackend.test.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-06-23 22:16:03 +0200
committerFlorian Dold <florian.dold@gmail.com>2019-06-23 22:16:03 +0200
commit859a9e72e1e0431d729e429865d6272e2fb03ff7 (patch)
tree85c36750a947733d7fc93947557f2635799b5b0e /packages/idb-bridge/src/MemoryBackend.test.ts
parenta4e4125cca8644703d7cff527a39c1a5a9842eba (diff)
downloadwallet-core-859a9e72e1e0431d729e429865d6272e2fb03ff7.tar.gz
wallet-core-859a9e72e1e0431d729e429865d6272e2fb03ff7.tar.bz2
wallet-core-859a9e72e1e0431d729e429865d6272e2fb03ff7.zip
idb: more tests working
Diffstat (limited to 'packages/idb-bridge/src/MemoryBackend.test.ts')
-rw-r--r--packages/idb-bridge/src/MemoryBackend.test.ts65
1 files changed, 48 insertions, 17 deletions
diff --git a/packages/idb-bridge/src/MemoryBackend.test.ts b/packages/idb-bridge/src/MemoryBackend.test.ts
index 213bff750..c882b9760 100644
--- a/packages/idb-bridge/src/MemoryBackend.test.ts
+++ b/packages/idb-bridge/src/MemoryBackend.test.ts
@@ -4,7 +4,8 @@ import BridgeIDBFactory from "./BridgeIDBFactory";
import BridgeIDBRequest from "./BridgeIDBRequest";
import BridgeIDBDatabase from "./BridgeIDBDatabase";
import BridgeIDBTransaction from "./BridgeIDBTransaction";
-
+import BridgeIDBKeyRange from "./BridgeIDBKeyRange";
+import BridgeIDBCursorWithValue from "./BridgeIDBCursorWithValue";
function promiseFromRequest(request: BridgeIDBRequest): Promise<any> {
return new Promise((resolve, reject) => {
@@ -17,11 +18,13 @@ function promiseFromRequest(request: BridgeIDBRequest): Promise<any> {
});
}
-function promiseFromTransaction(transaction: BridgeIDBTransaction): Promise<any> {
+function promiseFromTransaction(
+ transaction: BridgeIDBTransaction,
+): Promise<any> {
return new Promise((resolve, reject) => {
console.log("attaching event handlers");
transaction.oncomplete = () => {
- console.log("oncomplete was called from promise")
+ console.log("oncomplete was called from promise");
resolve();
};
transaction.onerror = () => {
@@ -51,7 +54,6 @@ test("Spec: Example 1 Part 1", async t => {
t.pass();
});
-
test("Spec: Example 1 Part 2", async t => {
const backend = new MemoryBackend();
const idb = new BridgeIDBFactory(backend);
@@ -70,21 +72,20 @@ test("Spec: Example 1 Part 2", async t => {
const tx = db.transaction("books", "readwrite");
tx.oncomplete = () => {
- console.log("oncomplete called")
+ console.log("oncomplete called");
};
const store = tx.objectStore("books");
-
- store.put({title: "Quarry Memories", author: "Fred", isbn: 123456});
- store.put({title: "Water Buffaloes", author: "Fred", isbn: 234567});
- store.put({title: "Bedrock Nights", author: "Barney", isbn: 345678});
+
+ store.put({ title: "Quarry Memories", author: "Fred", isbn: 123456 });
+ store.put({ title: "Water Buffaloes", author: "Fred", isbn: 234567 });
+ store.put({ title: "Bedrock Nights", author: "Barney", isbn: 345678 });
await promiseFromTransaction(tx);
t.pass();
});
-
test("Spec: Example 1 Part 3", async t => {
const backend = new MemoryBackend();
const idb = new BridgeIDBFactory(backend);
@@ -102,15 +103,12 @@ test("Spec: Example 1 Part 3", async t => {
t.is(db.name, "library");
const tx = db.transaction("books", "readwrite");
- tx.oncomplete = () => {
- console.log("oncomplete called")
- };
const store = tx.objectStore("books");
-
- store.put({title: "Quarry Memories", author: "Fred", isbn: 123456});
- store.put({title: "Water Buffaloes", author: "Fred", isbn: 234567});
- store.put({title: "Bedrock Nights", author: "Barney", isbn: 345678});
+
+ store.put({ title: "Bedrock Nights", author: "Barney", isbn: 345678 });
+ store.put({ title: "Quarry Memories", author: "Fred", isbn: 123456 });
+ store.put({ title: "Water Buffaloes", author: "Fred", isbn: 234567 });
await promiseFromTransaction(tx);
@@ -122,5 +120,38 @@ test("Spec: Example 1 Part 3", async t => {
t.is(result2.author, "Barney");
+ const tx3 = db.transaction(["books"], "readonly");
+ const store3 = tx3.objectStore("books");
+ const index3 = store3.index("by_author");
+ const request3 = index3.openCursor(BridgeIDBKeyRange.only("Fred"));
+
+ await promiseFromRequest(request3);
+
+ let cursor: BridgeIDBCursorWithValue;
+ cursor = request3.result as BridgeIDBCursorWithValue;
+ t.is(cursor.value.author, "Fred");
+ t.is(cursor.value.isbn, 123456);
+
+ cursor.continue();
+
+ await promiseFromRequest(request3);
+
+ cursor = request3.result as BridgeIDBCursorWithValue;
+ t.is(cursor.value.author, "Fred");
+ t.is(cursor.value.isbn, 234567);
+
+ await promiseFromTransaction(tx3);
+
+ const tx4 = db.transaction("books", "readonly");
+ const store4 = tx4.objectStore("books");
+ const request4 = store4.openCursor();
+
+ await promiseFromRequest(request4);
+
+ cursor = request4.result;
+ t.is(cursor.value.isbn, 123456);
+
+ db.close();
+
t.pass();
});