-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
68 lines (49 loc) · 1.64 KB
/
test.js
File metadata and controls
68 lines (49 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"use strict";
const test = require("node:test");
const assert = require("node:assert/strict");
const fs = require("node:fs");
const os = require("node:os");
const path = require("node:path");
const { createDb } = require("./index");
function setup() {
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "db-json-"));
const file = path.join(tmpDir, "data.json");
const db = createDb({ file });
return { tmpDir, file, db };
}
test("insert + all + getById", () => {
const { db } = setup();
db.insert({ id: 1, name: "Alice" });
db.insert({ id: 2, name: "Bob" });
assert.equal(db.all().length, 2);
assert.deepEqual(db.getById(2), { id: 2, name: "Bob" });
});
test("updateById patch partiel", () => {
const { db } = setup();
db.insert({ id: 1, name: "Alice", age: 20 });
const updated = db.updateById(1, { age: 21 });
assert.deepEqual(updated, { id: 1, name: "Alice", age: 21 });
});
test("upsert insere puis remplace", () => {
const { db } = setup();
db.upsert({ id: 1, name: "A" });
db.upsert({ id: 1, name: "B" });
assert.deepEqual(db.all(), [{ id: 1, name: "B" }]);
});
test("find avec objet", () => {
const { db } = setup();
db.insert({ id: 1, role: "admin" });
db.insert({ id: 2, role: "user" });
db.insert({ id: 3, role: "admin" });
assert.equal(db.find({ role: "admin" }).length, 2);
});
test("removeById et clear", () => {
const { db } = setup();
db.insert({ id: 1, name: "Alice" });
db.insert({ id: 2, name: "Bob" });
assert.equal(db.removeById(2), true);
assert.equal(db.removeById(3), false);
assert.deepEqual(db.all(), [{ id: 1, name: "Alice" }]);
db.clear();
assert.deepEqual(db.all(), []);
});