9
9
} from '../generator' ;
10
10
import Path from 'path' ;
11
11
import { compileTypeScriptCode } from './tsCompiler' ;
12
- import { Gostek , Op } from '../querybuilder/querybuilder' ;
12
+ import { Gostek , Op , WhereOp } from '../querybuilder/querybuilder' ;
13
13
import { User } from './generated/models' ;
14
14
15
15
describe ( 'unit tests' , ( ) => {
@@ -252,7 +252,7 @@ export const User = {
252
252
Gostek . from ( User )
253
253
. select ( [ 'id' ] )
254
254
. select ( '*' )
255
- . where ( [ 'name' , Op . $eq , 'Michał' ] )
255
+ . where ( { [ WhereOp . $and ] : [ [ 'name' , Op . $eq , 'Michał' ] ] } )
256
256
. getQuery ( ) ,
257
257
) . toEqual ( {
258
258
text : 'SELECT * FROM "user" WHERE "name" = $1' ,
@@ -262,13 +262,29 @@ export const User = {
262
262
expect (
263
263
Gostek . from ( User )
264
264
. select ( [ 'id' , 'name' ] )
265
- . where ( [ 'id' , Op . $in , [ 1 , 2 , 3 ] ] )
265
+ . where ( { [ WhereOp . $and ] : [ [ 'id' , Op . $in , [ 1 , 2 , 3 ] ] ] } )
266
266
. getQuery ( ) ,
267
267
) . toEqual ( {
268
268
text :
269
269
'SELECT "user"."id", "user"."name" FROM "user" WHERE "id" in ($1,$2,$3)' ,
270
270
values : [ 1 , 2 , 3 ] ,
271
271
} ) ;
272
+
273
+ expect (
274
+ Gostek . from ( User )
275
+ . select ( [ 'id' , 'name' ] )
276
+ . where ( {
277
+ [ WhereOp . $and ] : [
278
+ [ 'id' , Op . $in , [ 1 , 2 , 3 ] ] ,
279
+ [ 'name' , Op . $eq , 'Kasia' ] ,
280
+ ] ,
281
+ } )
282
+ . getQuery ( ) ,
283
+ ) . toEqual ( {
284
+ text :
285
+ 'SELECT "user"."id", "user"."name" FROM "user" WHERE "id" in ($1,$2,$3) AND "name" = $4' ,
286
+ values : [ 1 , 2 , 3 , 'Kasia' ] ,
287
+ } ) ;
272
288
} ) ;
273
289
274
290
it ( 'can insert a full new entity to database' , async ( ) => {
@@ -293,7 +309,7 @@ export const User = {
293
309
int2Column : 2 ,
294
310
int4Column : 11 ,
295
311
int8Column : 10n ,
296
- numericColumn : 50.5 ,
312
+ numericColumn : ' 50.5' ,
297
313
jsonbColumn : {
298
314
some : 'value' ,
299
315
is : 1 ,
@@ -337,7 +353,7 @@ export const User = {
337
353
int2Column : null ,
338
354
int4Column : 11 ,
339
355
int8Column : null ,
340
- numericColumn : 50.5 ,
356
+ numericColumn : ' 50.5' ,
341
357
jsonbColumn : {
342
358
some : 'value' ,
343
359
is : 1 ,
@@ -357,7 +373,6 @@ export const User = {
357
373
expect ( results [ 0 ] ) . toEqual ( {
358
374
...userObject ,
359
375
dateColumn : nowWithoutTimezoneDatePrecision ,
360
- numericColumn : '50.5' ,
361
376
} ) ;
362
377
} ) ;
363
378
@@ -413,6 +428,8 @@ export const User = {
413
428
varcharColumn : '' ,
414
429
} ;
415
430
431
+ Gostek . to ( User ) . insertOne ( one ) ;
432
+
416
433
await db . none ( `INSERT INTO "user" VALUES (
417
434
1,
418
435
@@ -457,25 +474,95 @@ export const User = {
457
474
two ,
458
475
] ) ;
459
476
460
- expect ( await Gostek . from ( User ) . select ( [ 'id' ] ) . execute ( db ) ) . toEqual ( [
461
- { id : one . id } ,
462
- { id : two . id } ,
463
- ] ) ;
477
+ expect ( await Gostek . from ( User ) . select ( [ 'id' ] ) . execute ( db ) ) . toContainEqual (
478
+ {
479
+ id : expect . toBeNumber ( ) ,
480
+ } ,
481
+ ) ;
464
482
465
483
expect (
466
484
await Gostek . from ( User )
467
485
. select ( [ 'id' ] )
468
486
. select ( '*' )
469
- . where ( [ 'name' , Op . $eq , 'Michał' ] )
487
+ . where ( { [ WhereOp . $and ] : [ [ 'name' , Op . $eq , 'Michał' ] ] } )
488
+ . execute ( db ) ,
489
+ ) . toSatisfyAll ( ( el ) => {
490
+ expect ( el ) . toMatchObject ( {
491
+ id : expect . toBeNumber ( ) ,
492
+ name : 'Michał' ,
493
+ } ) ;
494
+ return true ;
495
+ } ) ;
496
+
497
+ expect (
498
+ await Gostek . from ( User )
499
+ . select ( [ 'id' , 'name' ] )
500
+ . where ( { [ WhereOp . $and ] : [ [ 'id' , Op . $in , [ 1 , 2 , 3 ] ] ] } )
501
+ . execute ( db ) ,
502
+ ) . toSatisfyAll ( ( el ) => {
503
+ expect ( el ) . toEqual ( {
504
+ id : expect . toBeOneOf ( [ 1 , 2 , 3 ] ) ,
505
+ name : expect . toBeString ( ) ,
506
+ } ) ;
507
+ return true ;
508
+ } ) ;
509
+
510
+ expect (
511
+ await Gostek . from ( User )
512
+ . select ( [ 'id' , 'name' ] )
513
+ . where ( {
514
+ [ WhereOp . $and ] : [
515
+ [ 'id' , Op . $in , [ 1 , 2 , 3 ] ] ,
516
+ [ 'name' , Op . $eq , 'Michał' ] ,
517
+ ] ,
518
+ } )
519
+ . execute ( db ) ,
520
+ ) . toSatisfyAll ( ( el ) => {
521
+ expect ( el ) . toEqual ( {
522
+ id : expect . toBeOneOf ( [ 1 , 2 , 3 ] ) ,
523
+ name : 'Michał' ,
524
+ } ) ;
525
+ return true ;
526
+ } ) ;
527
+
528
+ expect (
529
+ await Gostek . from ( User )
530
+ . select ( [ 'id' , 'name' ] )
531
+ . where ( {
532
+ [ WhereOp . $or ] : [
533
+ [ 'id' , Op . $in , [ 1 , 2 , 3 ] ] ,
534
+ [ 'name' , Op . $eq , 'Michal' ] ,
535
+ ] ,
536
+ } )
470
537
. execute ( db ) ,
471
- ) . toEqual ( [ one ] ) ;
538
+ ) . toSatisfyAll ( ( el ) => {
539
+ expect ( el ) . toBeOneOf ( [
540
+ {
541
+ id : expect . toBeOneOf ( [ 1 , 2 , 3 ] ) ,
542
+ name : expect . toBeString ( ) ,
543
+ } ,
544
+ {
545
+ id : expect . toBeNumber ( ) ,
546
+ name : 'Michał' ,
547
+ } ,
548
+ ] ) ;
549
+ return true ;
550
+ } ) ;
472
551
473
552
expect (
474
553
await Gostek . from ( User )
475
554
. select ( [ 'id' , 'name' ] )
476
- . where ( [ 'id' , Op . $in , [ 1 , 2 , 3 ] ] )
555
+ . where ( {
556
+ [ WhereOp . $or ] : [
557
+ [ 'name' , Op . $eq , 'Michał' ] ,
558
+ [ 'name' , Op . $eq , 'Kasia' ] ,
559
+ ] ,
560
+ } )
477
561
. execute ( db ) ,
478
- ) . toEqual ( [ { id : one . id , name : one . name } ] ) ;
562
+ ) . toEqual ( [
563
+ { id : one . id , name : one . name } ,
564
+ { id : two . id , name : two . name } ,
565
+ ] ) ;
479
566
} ) ;
480
567
} ) ;
481
568
} ) ;
0 commit comments