11import { test } from 'node:test'
22import assert from 'node:assert'
3- import { retry } from '../src/utils'
3+ import { retry , merge } from '../src/utils'
44
55test ( 'It execute at least one time' , async ( ) => {
66 const response = await retry ( ( ) => Promise . resolve ( true ) )
@@ -25,4 +25,34 @@ test('It retries when it fails', async () => {
2525 } , 1 )
2626
2727 assert . ok ( response )
28+ } ) ;
29+
30+ ( [
31+ //objects
32+ [ { a : 'a' } , { a : 'b' } , { a : 'b' } ] ,
33+ [ { a : 'a' , b : 'c' } , { a : 'b' } , { a : 'b' , b : 'c' } ] ,
34+ [ { a : 'a' } , { a : 'b' , b : 'c' } , { a : 'b' , b : 'c' } ] ,
35+ [ { a : { a : 'a' } } , { a : { a : 'b' } } , { a : { a : 'b' } } ] ,
36+ [ { a : { a : 'a' } , b : 'c' } , { a : { a : 'b' } } , { a : { a : 'b' } , b : 'c' } ] ,
37+ //arrays
38+ [ [ 1 ] , [ 2 ] , [ 2 ] ] ,
39+ [ [ 1 ] , [ 2 , 3 ] , [ 2 , 3 ] ] ,
40+ [ [ 1 , 2 ] , [ 3 ] , [ 3 , 2 ] ] ,
41+ [ [ [ 1 ] ] , [ [ 2 ] ] , [ [ 2 ] ] ] ,
42+ [ [ [ 1 ] , 2 ] , [ [ 2 ] ] , [ [ 2 ] , 2 ] ] ,
43+ [ [ [ 1 ] ] , [ [ 2 ] , 3 ] , [ [ 2 ] , 3 ] ] ,
44+ //mixed types
45+ [ { a : [ 1 ] } , { a : 1 } , { a : 1 } ] ,
46+ [ { a : 1 } , { a : [ 1 ] } , { a : [ 1 ] } ] ,
47+ [ { a : { b : 'a' } } , { a : [ 1 ] } , { a : [ 1 ] } ] ,
48+ [ [ { a : 'a' , b : 'c' } ] , [ { a : 'b' } ] , [ { a : 'b' , b : 'c' } ] ] ,
49+ //primitives
50+ [ 1 , 2 , 2 ] ,
51+ [ 'a' , 'b' , 'b' ] ,
52+ ] ) . forEach ( ( [ source , target , expected ] , index ) => {
53+ test ( `It merge objects (${ index } )` , async ( ) => {
54+ const result = merge ( source , target )
55+
56+ assert . deepStrictEqual ( result , expected )
57+ } )
2858} )
0 commit comments