Skip to content

Commit ce8ef9c

Browse files
committed
test: Add more tests
1 parent 9005ae6 commit ce8ef9c

File tree

6 files changed

+72
-12
lines changed

6 files changed

+72
-12
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@
3333
"devDependencies": {
3434
"@types/node": "^22.7.8",
3535
"typescript": "^5.6.3",
36-
"arrange-act-assert": "^0.0.5"
36+
"arrange-act-assert": "^2.5.1"
3737
}
3838
}
Binary file not shown.
109 Bytes
Binary file not shown.

src/Persistency.test.ts

Lines changed: 66 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as Fs from "fs/promises";
22

3-
import test, { After, asyncMonad } from "arrange-act-assert";
3+
import test, { After, monad } from "arrange-act-assert";
44

55
import { assertDeepEqual, assertEqual, newOpenFilesContext, tempFolder } from "./testUtils";
66
import { Persistency, PersistencyContext, PersistencyOptions } from "./Persistency";
@@ -62,7 +62,7 @@ test.describe("Persistency", test => {
6262
await Fs.writeFile(persistency.entriesFile, buffer);
6363
}
6464
async function newPersistency(after:After, options?:Partial<PersistencyOptions>|null, mock?:PersistencyContext) {
65-
const folder = options?.folder || await tempFolder(after);
65+
const folder = options?.folder ?? await tempFolder(after);
6666
const persistency = after(new Persistency({
6767
folder: folder,
6868
reclaimDelay: options?.reclaimDelay
@@ -125,6 +125,18 @@ test.describe("Persistency", test => {
125125
};
126126
}
127127
// end helpers
128+
test("should error if no folder passed", {
129+
ACT(_, after) {
130+
return monad(() => newPersistency(after, {
131+
folder: ""
132+
}));
133+
},
134+
ASSERT(res) {
135+
res.should.error({
136+
message: /Invalid folder/
137+
});
138+
}
139+
});
128140
test("should set and get data", {
129141
ARRANGE(after) {
130142
return newPersistency(after);
@@ -141,6 +153,18 @@ test.describe("Persistency", test => {
141153
}
142154
}
143155
});
156+
test("should list all data", {
157+
async ARRANGE(after) {
158+
const { persistency } = await newPersistency(after);
159+
persistency.set("test1", value1);
160+
persistency.set("test2", value2);
161+
persistency.set("test3", value3);
162+
return { persistency };
163+
},
164+
SNAPSHOT({ persistency }) {
165+
return Array.from(persistency.cursor());
166+
}
167+
});
144168
test("should set and get empty data", {
145169
ARRANGE(after) {
146170
return newPersistency(after);
@@ -188,6 +212,18 @@ test.describe("Persistency", test => {
188212
}
189213
}
190214
});
215+
test("should list all data loaded from file", {
216+
async ARRANGE(after) {
217+
const { persistency, folder } = await newPersistency(after);
218+
persistency.set("test", value1);
219+
persistency.set("test2", value2);
220+
persistency.close();
221+
return newPersistency(after, { folder });
222+
},
223+
SNAPSHOT({ persistency } ) {
224+
return Array.from(persistency.cursor());
225+
}
226+
});
191227
test("should update data", {
192228
ARRANGE(after) {
193229
return newPersistency(after);
@@ -233,9 +269,12 @@ test.describe("Persistency", test => {
233269
return { persistency };
234270
},
235271
ACT({ persistency }) {
236-
persistency.delete("test");
272+
return persistency.delete("test");
237273
},
238274
ASSERTS: {
275+
"should return if the data was deleted"(res) {
276+
assertEqual(res, true);
277+
},
239278
"should not have first data"(_, { persistency }) {
240279
assertEqual(persistency.get("test"), null);
241280
},
@@ -247,6 +286,20 @@ test.describe("Persistency", test => {
247286
}
248287
}
249288
});
289+
test("should return false if deleted data doesn't exist", {
290+
async ARRANGE(after) {
291+
const { persistency } = await newPersistency(after);
292+
persistency.set("test", value1);
293+
persistency.set("test2", value2);
294+
return { persistency };
295+
},
296+
ACT({ persistency }) {
297+
return persistency.delete("test3");
298+
},
299+
ASSERT(res) {
300+
assertEqual(res, false);
301+
}
302+
});
250303
test("should compact after deleting data", {
251304
async ARRANGE(after) {
252305
const { persistency } = await newPersistency(after, {
@@ -259,9 +312,12 @@ test.describe("Persistency", test => {
259312
return { persistency, size };
260313
},
261314
ACT({ persistency }) {
262-
persistency.delete("test0");
315+
return persistency.delete("test0");
263316
},
264317
ASSERTS: {
318+
"should return if the data was deleted"(res) {
319+
assertEqual(res, true);
320+
},
265321
async "entries file size must match"(_, { persistency, size }) {
266322
assertEqual(await getFileSize(persistency.entriesFile), size.entries);
267323
},
@@ -693,9 +749,12 @@ test.describe("Persistency", test => {
693749
return { persistency, fileSizes };
694750
},
695751
ACT({ persistency }) {
696-
persistency.delete("test3");
752+
return persistency.delete("test3");
697753
},
698754
ASSERTS: {
755+
"should return if the data was deleted"(res) {
756+
assertEqual(res, true);
757+
},
699758
"should not have entry3"(_, { persistency }) {
700759
assertEqual(persistency.get("entry3"), null);
701760
},
@@ -766,7 +825,7 @@ test.describe("Persistency", test => {
766825
return { folder };
767826
},
768827
ACT({ folder }, after) {
769-
return asyncMonad(() => newPersistency(after, { folder }));
828+
return monad(() => newPersistency(after, { folder }));
770829
},
771830
ASSERT(res) {
772831
res.should.error({
@@ -785,7 +844,7 @@ test.describe("Persistency", test => {
785844
return { folder };
786845
},
787846
ACT({ folder }, after) {
788-
return asyncMonad(() => newPersistency(after, { folder }));
847+
return monad(() => newPersistency(after, { folder }));
789848
},
790849
ASSERT(res) {
791850
res.should.error({

src/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export function openFiles(options:{entriesFile:string; dataFile:string;}, contex
9494
} catch (e) {}
9595
}
9696
if (dataFd != null) {
97+
// Unreachable, but keeping the code
9798
try {
9899
context.closeSync(dataFd);
99100
} catch (e) {}

0 commit comments

Comments
 (0)