aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/ark-store-test.js21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/ark-store-test.js b/tools/ark-store-test.js
index 4e02fa0..a72ad81 100644
--- a/tools/ark-store-test.js
+++ b/tools/ark-store-test.js
@@ -87,4 +87,25 @@ assert.equal(broken.lsMode, true, 'a refusing IndexedDB drops to localStorage');
assert.equal(broken.get(K)._rev, 1);
console.log('✓ localStorage fallback');
+// ---- peek: the stored object, no copy; a write is seen at once ----
+const ls4 = new Storage();
+ls4.setItem(K, JSON.stringify({ _rev: 3, vtxos: [] }));
+const pk = new ArkStore({ backend: memoryBackend(), ls: () => ls4 });
+const before = pk.peek(K);
+assert.equal(before._rev, 3, 'before opening, peek reads localStorage');
+assert.equal(pk.peek(K), before, 'and keeps the parse');
+await pk.open();
+assert.equal(pk.peek(K), pk.peek(K), 'opened: the same object every time');
+assert.notEqual(pk.get(K), pk.peek(K), 'get still copies');
+pk.set(K, { _rev: 4, vtxos: [] });
+assert.equal(pk.peek(K)._rev, 4, 'a write shows in the next peek');
+pk.remove(K);
+assert.equal(pk.peek(K), null);
+const pl = new ArkStore({ backend: null, ls: () => ls4 });
+pl.set(K, { _rev: 5, vtxos: [] });
+assert.equal(pl.peek(K)._rev, 5);
+pl.set(K, { _rev: 6, vtxos: [] });
+assert.equal(pl.peek(K)._rev, 6, 'localStorage mode: a write drops the kept parse');
+console.log('✓ peek reads without copying');
+
console.log('\n✅ ark store behaves');