@@ -429,36 +429,47 @@ describe('Test PostgresV2, hasJsonDataType', () => {
429
429
} ) ;
430
430
431
431
describe ( 'Test PostgresV2, convertValuesToJsonWithPgp' , ( ) => {
432
- it ( 'should use pgp to properly convert values to JSON' , ( ) => {
433
- const pgp = pgPromise ( ) ;
434
- const pgpJsonSpy = jest . spyOn ( pgp . as , 'json' ) ;
435
-
436
- const schema : ColumnInfo [ ] = [
437
- { column_name : 'data' , data_type : 'json' , is_nullable : 'YES' } ,
438
- { column_name : 'id' , data_type : 'integer' , is_nullable : 'NO' } ,
439
- ] ;
440
- const values = [
441
- {
442
- value : { data : [ ] , id : 1 } ,
443
- expected : { data : '[]' , id : 1 } ,
444
- } ,
445
- {
446
- value : { data : [ 0 ] , id : 1 } ,
447
- expected : { data : '[0]' , id : 1 } ,
448
- } ,
449
- {
450
- value : { data : { key : 2 } , id : 1 } ,
451
- expected : { data : '{"key":2}' , id : 1 } ,
452
- } ,
453
- ] ;
454
-
455
- values . forEach ( ( value ) => {
456
- const data = value . value . data ;
457
-
458
- expect ( convertValuesToJsonWithPgp ( pgp , schema , value . value ) ) . toEqual ( value . expected ) ;
459
- expect ( value . value ) . toEqual ( value . expected ) ;
432
+ const pgp = pgPromise ( ) ;
433
+ const pgpJsonSpy = jest . spyOn ( pgp . as , 'json' ) ;
434
+ const schema : ColumnInfo [ ] = [
435
+ { column_name : 'data' , data_type : 'json' , is_nullable : 'YES' } ,
436
+ { column_name : 'id' , data_type : 'integer' , is_nullable : 'NO' } ,
437
+ ] ;
438
+
439
+ beforeEach ( ( ) => {
440
+ pgpJsonSpy . mockClear ( ) ;
441
+ } ) ;
442
+
443
+ it . each ( [
444
+ {
445
+ value : { data : [ ] , id : 1 } ,
446
+ expected : { data : '[]' , id : 1 } ,
447
+ } ,
448
+ {
449
+ value : { data : [ 0 ] , id : 1 } ,
450
+ expected : { data : '[0]' , id : 1 } ,
451
+ } ,
452
+ {
453
+ value : { data : { key : 2 } , id : 1 } ,
454
+ expected : { data : '{"key":2}' , id : 1 } ,
455
+ } ,
456
+ {
457
+ value : { data : null , id : 1 } ,
458
+ expected : { data : null , id : 1 } ,
459
+ shouldSkipPgp : true ,
460
+ } ,
461
+ {
462
+ value : { data : undefined , id : 1 } ,
463
+ expected : { data : undefined , id : 1 } ,
464
+ shouldSkipPgp : true ,
465
+ } ,
466
+ ] ) ( 'should convert $value.data to json correctly' , ( { value, expected, shouldSkipPgp } ) => {
467
+ const data = value . data ;
468
+ expect ( convertValuesToJsonWithPgp ( pgp , schema , value ) ) . toEqual ( expected ) ;
469
+ expect ( value ) . toEqual ( expected ) ;
470
+ if ( ! shouldSkipPgp ) {
460
471
expect ( pgpJsonSpy ) . toHaveBeenCalledWith ( data , true ) ;
461
- } ) ;
472
+ }
462
473
} ) ;
463
474
} ) ;
464
475
0 commit comments