11import * 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
55import { assertDeepEqual , assertEqual , newOpenFilesContext , tempFolder } from "./testUtils" ;
66import { 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 : / I n v a l i d f o l d e r /
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 ( {
0 commit comments