@@ -13,6 +13,8 @@ const service = new Service(db)
13
13
14
14
const POSTS = 'posts'
15
15
const COMMENTS = 'comments'
16
+ const OBJECT = 'object'
17
+
16
18
const UNKNOWN_RESOURCE = 'xxx'
17
19
const UNKNOWN_ID = 'xxx'
18
20
@@ -40,10 +42,15 @@ const post3 = {
40
42
const comment1 = { id : '1' , title : 'a' , postId : '1' }
41
43
const items = 3
42
44
45
+ const obj = {
46
+ f1 : 'foo' ,
47
+ }
48
+
43
49
function reset ( ) {
44
50
db . data = structuredClone ( {
45
51
posts : [ post1 , post2 , post3 ] ,
46
52
comments : [ comment1 ] ,
53
+ object : obj ,
47
54
} )
48
55
}
49
56
@@ -57,6 +64,8 @@ type Test = {
57
64
58
65
await test ( 'findById' , ( ) => {
59
66
reset ( )
67
+ if ( ! Array . isArray ( db . data ?. [ POSTS ] ) )
68
+ throw new Error ( 'posts should be an array' )
60
69
assert . deepEqual ( service . findById ( POSTS , '1' , { } ) , db . data ?. [ POSTS ] ?. [ 0 ] )
61
70
assert . equal ( service . findById ( POSTS , UNKNOWN_ID , { } ) , undefined )
62
71
assert . deepEqual ( service . findById ( POSTS , '1' , { _embed : [ 'comments' ] } ) , {
@@ -236,6 +245,10 @@ await test('find', async (t) => {
236
245
name : UNKNOWN_RESOURCE ,
237
246
res : undefined ,
238
247
} ,
248
+ {
249
+ name : OBJECT ,
250
+ res : obj ,
251
+ } ,
239
252
]
240
253
for ( const tc of arr ) {
241
254
await t . test ( `${ tc . name } ${ JSON . stringify ( tc . params ) } ` , ( ) => {
@@ -261,44 +274,65 @@ await test('create', async () => {
261
274
} )
262
275
263
276
await test ( 'update' , async ( ) => {
277
+ reset ( )
278
+ const obj = { f1 : 'bar' }
279
+ const res = await service . update ( OBJECT , obj )
280
+ assert . equal ( res , obj )
281
+
282
+ assert . equal (
283
+ await service . update ( UNKNOWN_RESOURCE , obj ) ,
284
+ undefined ,
285
+ 'should ignore unknown resources' ,
286
+ )
287
+ assert . equal (
288
+ await service . update ( POSTS , { } ) ,
289
+ undefined ,
290
+ 'should ignore arrays' ,
291
+ )
292
+ } )
293
+
294
+ await test ( 'updateById' , async ( ) => {
264
295
reset ( )
265
296
const post = { id : 'xxx' , title : 'updated post' }
266
- const res = await service . update ( POSTS , post1 . id , post )
297
+ const res = await service . updateById ( POSTS , post1 . id , post )
267
298
assert . equal ( res ?. [ 'id' ] , post1 . id , 'id should not change' )
268
299
assert . equal ( res ?. [ 'title' ] , post . title )
269
300
270
301
assert . equal (
271
- await service . update ( UNKNOWN_RESOURCE , post1 . id , post ) ,
302
+ await service . updateById ( UNKNOWN_RESOURCE , post1 . id , post ) ,
272
303
undefined ,
273
304
)
274
- assert . equal ( await service . update ( POSTS , UNKNOWN_ID , post ) , undefined )
305
+ assert . equal ( await service . updateById ( POSTS , UNKNOWN_ID , post ) , undefined )
275
306
} )
276
307
277
- await test ( 'patch ' , async ( ) => {
308
+ await test ( 'patchById ' , async ( ) => {
278
309
reset ( )
279
310
const post = { id : 'xxx' , title : 'updated post' }
280
- const res = await service . patch ( POSTS , post1 . id , post )
311
+ const res = await service . patchById ( POSTS , post1 . id , post )
281
312
assert . notEqual ( res , undefined )
282
313
assert . equal ( res ?. [ 'id' ] , post1 . id )
283
314
assert . equal ( res ?. [ 'title' ] , post . title )
284
315
285
- assert . equal ( await service . patch ( UNKNOWN_RESOURCE , post1 . id , post ) , undefined )
286
- assert . equal ( await service . patch ( POSTS , UNKNOWN_ID , post ) , undefined )
316
+ assert . equal (
317
+ await service . patchById ( UNKNOWN_RESOURCE , post1 . id , post ) ,
318
+ undefined ,
319
+ )
320
+ assert . equal ( await service . patchById ( POSTS , UNKNOWN_ID , post ) , undefined )
287
321
} )
288
322
289
323
await test ( 'destroy' , async ( ) => {
290
324
reset ( )
291
- let prevLength = db . data ?. [ POSTS ] ?. length || 0
292
- await service . destroy ( POSTS , post1 . id )
325
+ let prevLength = Number ( db . data ?. [ POSTS ] ?. length ) || 0
326
+ await service . destroyById ( POSTS , post1 . id )
293
327
assert . equal ( db . data ?. [ POSTS ] ?. length , prevLength - 1 )
294
328
assert . deepEqual ( db . data ?. [ COMMENTS ] , [ { ...comment1 , postId : null } ] )
295
329
296
330
reset ( )
297
331
prevLength = db . data ?. [ POSTS ] ?. length || 0
298
- await service . destroy ( POSTS , post1 . id , [ COMMENTS ] )
332
+ await service . destroyById ( POSTS , post1 . id , [ COMMENTS ] )
299
333
assert . equal ( db . data [ POSTS ] . length , prevLength - 1 )
300
334
assert . equal ( db . data [ COMMENTS ] . length , 0 )
301
335
302
- assert . equal ( await service . destroy ( UNKNOWN_RESOURCE , post1 . id ) , undefined )
303
- assert . equal ( await service . destroy ( POSTS , UNKNOWN_ID ) , undefined )
336
+ assert . equal ( await service . destroyById ( UNKNOWN_RESOURCE , post1 . id ) , undefined )
337
+ assert . equal ( await service . destroyById ( POSTS , UNKNOWN_ID ) , undefined )
304
338
} )
0 commit comments