1- const jest = require ( 'jest' ) ;
2- const QueryTemplater = require ( 'query-template' ) ;
3-
4- jest . mock ( 'query-template' ) ;
1+ // const jest = require('jest');
2+ const PostgresConnection = require ( '../connections/postgres-connection.js' ) ;
53
64describe ( 'Postgres connection' , ( ) => {
5+ const client = {
6+ query : jest . fn ( ( query , params ) => Promise . resolve ( { query, params} ) ) ,
7+ } ;
8+
9+ beforeEach ( ( ) => {
10+ client . query . mockClear ( ) ;
11+ } ) ;
12+
13+ const pq = new PostgresConnection ( {
14+ client,
15+ type : 'pg' ,
16+ } ) ;
17+
18+ test ( 'should handle simple query with right format' , async ( ) => {
19+ const query = {
20+ sql : 'SELECT * FROM table WHERE field1 = :field1 {{t1}}' ,
21+ addons : {
22+ t1 : {
23+ sql : 'AND field2 = :field2' ,
24+ options : { propertyName : 'field2t' } ,
25+ } ,
26+ } ,
27+ } ;
28+
29+ await pq . query ( query , { field1 : 1 , field2 : 2 } , { templateParams : { field2t : true } } ) ;
30+ expect ( client . query . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'SELECT * FROM table WHERE field1 = $1 AND field2 = $2' ) ;
31+ expect ( client . query . mock . calls [ 0 ] [ 1 ] ) . toMatchObject ( [ 1 , 2 ] ) ;
32+ } ) ;
33+
34+ test ( 'should handle simple query without template params' , async ( ) => {
35+ const query = {
36+ sql : 'SELECT * FROM table WHERE field1 = :field1 {{t1}}' ,
37+ addons : {
38+ t1 : {
39+ sql : 'AND field2 = :field2' ,
40+ options : { propertyName : 'field2' } ,
41+ } ,
42+ } ,
43+ } ;
44+
45+ await pq . query ( query , { field1 : 1 , field2 : 2 } ) ;
46+ expect ( client . query . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'SELECT * FROM table WHERE field1 = $1 AND field2 = $2' ) ;
47+ expect ( client . query . mock . calls [ 0 ] [ 1 ] ) . toMatchObject ( [ 1 , 2 ] ) ;
48+ } ) ;
49+
50+ test ( 'should handle simple query without templates' , async ( ) => {
51+ const query = {
52+ sql : 'SELECT * FROM table WHERE field1 = :field1' ,
53+ } ;
54+
55+ await pq . query ( query , { field1 : 1 , field2 : 2 } ) ;
56+ expect ( client . query . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'SELECT * FROM table WHERE field1 = $1' ) ;
57+ expect ( client . query . mock . calls [ 0 ] [ 1 ] ) . toMatchObject ( [ 1 ] ) ;
58+ } ) ;
59+
60+ test ( 'should throw on invalid query format' , async ( ) => {
61+ const query = {
62+ addons : {
63+ t1 : {
64+ sql : 'AND field2 = :field2' ,
65+ options : { propertyName : 'field2' } ,
66+ } ,
67+ } ,
68+ } ;
769
8- } ) ;
70+ expect ( ( ) => pq . query ( query , { field1 : 1 , field2 : 2 } ) ) . toThrow ( / s q l / ) ;
71+ } ) ;
72+ } ) ;
0 commit comments