summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
authorHeyang Zhou <zhy20000919@hotmail.com>2023-12-14 00:58:20 +0800
committerGitHub <noreply@github.com>2023-12-14 00:58:20 +0800
commit10ab8c1ef1ccc93bd810c5636e2a70bb7c37e91e (patch)
tree889605d974ed6d06ee74a44c624e7a1d7c986559 /cli/tests
parent76a6ea57753be420398d3eba8f313a6c98eab8c3 (diff)
feat(unstable): append commit versionstamp to key (#21556)
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/unit/kv_test.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/cli/tests/unit/kv_test.ts b/cli/tests/unit/kv_test.ts
index f46099ed1..28c913f21 100644
--- a/cli/tests/unit/kv_test.ts
+++ b/cli/tests/unit/kv_test.ts
@@ -2216,3 +2216,35 @@ dbTest("key watch", async (db) => {
await work;
await reader.cancel();
});
+
+dbTest("set with key versionstamp suffix", async (db) => {
+ const result1 = await Array.fromAsync(db.list({ prefix: ["a"] }));
+ assertEquals(result1, []);
+
+ const setRes1 = await db.set(["a", db.commitVersionstamp()], "b");
+ assert(setRes1.ok);
+ assert(setRes1.versionstamp > ZERO_VERSIONSTAMP);
+
+ const result2 = await Array.fromAsync(db.list({ prefix: ["a"] }));
+ assertEquals(result2.length, 1);
+ assertEquals(result2[0].key[1], setRes1.versionstamp);
+ assertEquals(result2[0].value, "b");
+ assertEquals(result2[0].versionstamp, setRes1.versionstamp);
+
+ const setRes2 = await db.atomic().set(["a", db.commitVersionstamp()], "c")
+ .commit();
+ assert(setRes2.ok);
+ assert(setRes2.versionstamp > setRes1.versionstamp);
+
+ const result3 = await Array.fromAsync(db.list({ prefix: ["a"] }));
+ assertEquals(result3.length, 2);
+ assertEquals(result3[1].key[1], setRes2.versionstamp);
+ assertEquals(result3[1].value, "c");
+ assertEquals(result3[1].versionstamp, setRes2.versionstamp);
+
+ await assertRejects(
+ async () => await db.set(["a", db.commitVersionstamp(), "a"], "x"),
+ TypeError,
+ "expected string, number, bigint, ArrayBufferView, boolean",
+ );
+});