2021-04-03 07:53:47 -07:00
const PostgresFun = require ( '../../../nodes/Postgres/Postgres.node.functions' )
const pgPromise = require ( 'pg-promise' ) ;
describe ( 'pgUpdate' , ( ) => {
it ( 'runs query to update db' , async ( ) => {
const updateItem = { id : 1234 , name : 'test' } ;
const nodeParams = {
table : 'mytable' ,
schema : 'myschema' ,
updateKey : 'id' ,
2021-04-24 13:55:14 -07:00
columns : 'id,name' ,
additionalFields : { } ,
returnFields : '*' ,
2021-04-03 07:53:47 -07:00
} ;
const getNodeParam = ( key ) => nodeParams [ key ] ;
const pgp = pgPromise ( ) ;
2021-04-24 13:55:14 -07:00
const any = jest . fn ( ) ;
const db = { any } ;
2021-04-03 07:53:47 -07:00
const items = [
{
json : updateItem
}
] ;
2021-04-24 13:55:14 -07:00
await PostgresFun . pgUpdate ( getNodeParam , pgp , db , items )
2021-04-03 07:53:47 -07:00
2021-04-24 13:55:14 -07:00
expect ( db . any ) . toHaveBeenCalledWith ( ` update \" myschema \" . \" mytable \" as t set \" id \" =v. \" id \" , \" name \" =v. \" name \" from (values(1234,'test')) as v( \" id \" , \" name \" ) WHERE v. \" id \" = t. \" id \" RETURNING * ` ) ;
2021-04-03 07:53:47 -07:00
} ) ;
it ( 'runs query to update db if updateKey is not in columns' , async ( ) => {
const updateItem = { id : 1234 , name : 'test' } ;
const nodeParams = {
table : 'mytable' ,
schema : 'myschema' ,
updateKey : 'id' ,
2021-04-24 13:55:14 -07:00
columns : 'name' ,
additionalFields : { } ,
returnFields : '*' ,
2021-04-03 07:53:47 -07:00
} ;
const getNodeParam = ( key ) => nodeParams [ key ] ;
const pgp = pgPromise ( ) ;
2021-04-24 13:55:14 -07:00
const any = jest . fn ( ) ;
const db = { any } ;
2021-04-03 07:53:47 -07:00
const items = [
{
json : updateItem
}
] ;
const results = await PostgresFun . pgUpdate ( getNodeParam , pgp , db , items )
2021-04-24 13:55:14 -07:00
expect ( db . any ) . toHaveBeenCalledWith ( ` update \" myschema \" . \" mytable \" as t set \" id \" =v. \" id \" , \" name \" =v. \" name \" from (values(1234,'test')) as v( \" id \" , \" name \" ) WHERE v. \" id \" = t. \" id \" RETURNING * ` ) ;
2021-04-03 07:53:47 -07:00
} ) ;
it ( 'runs query to update db with cast as updateKey' , async ( ) => {
const updateItem = { id : '1234' , name : 'test' } ;
const nodeParams = {
table : 'mytable' ,
schema : 'myschema' ,
updateKey : 'id:uuid' ,
2021-04-24 13:55:14 -07:00
columns : 'name' ,
additionalFields : { } ,
returnFields : '*' ,
2021-04-03 07:53:47 -07:00
} ;
const getNodeParam = ( key ) => nodeParams [ key ] ;
const pgp = pgPromise ( ) ;
2021-04-24 13:55:14 -07:00
const any = jest . fn ( ) ;
const db = { any } ;
2021-04-03 07:53:47 -07:00
const items = [
{
json : updateItem
}
] ;
2021-04-24 13:55:14 -07:00
await PostgresFun . pgUpdate ( getNodeParam , pgp , db , items )
2021-04-03 07:53:47 -07:00
2021-04-24 13:55:14 -07:00
expect ( db . any ) . toHaveBeenCalledWith ( ` update \" myschema \" . \" mytable \" as t set \" id \" =v. \" id \" , \" name \" =v. \" name \" from (values('1234'::uuid,'test')) as v( \" id \" , \" name \" ) WHERE v. \" id \" = t. \" id \" RETURNING * ` ) ;
2021-04-03 07:53:47 -07:00
} ) ;
it ( 'runs query to update db with cast in target columns' , async ( ) => {
const updateItem = { id : '1234' , name : 'test' } ;
const nodeParams = {
table : 'mytable' ,
schema : 'myschema' ,
updateKey : 'id' ,
2021-04-24 13:55:14 -07:00
columns : 'id:uuid,name' ,
additionalFields : { } ,
returnFields : '*' ,
2021-04-03 07:53:47 -07:00
} ;
const getNodeParam = ( key ) => nodeParams [ key ] ;
const pgp = pgPromise ( ) ;
2021-04-24 13:55:14 -07:00
const any = jest . fn ( ) ;
const db = { any } ;
2021-04-03 07:53:47 -07:00
const items = [
{
json : updateItem
}
] ;
2021-04-24 13:55:14 -07:00
await PostgresFun . pgUpdate ( getNodeParam , pgp , db , items )
2021-04-03 07:53:47 -07:00
2021-04-24 13:55:14 -07:00
expect ( db . any ) . toHaveBeenCalledWith ( ` update \" myschema \" . \" mytable \" as t set \" id \" =v. \" id \" , \" name \" =v. \" name \" from (values('1234'::uuid,'test')) as v( \" id \" , \" name \" ) WHERE v. \" id \" = t. \" id \" RETURNING * ` ) ;
2021-04-03 07:53:47 -07:00
} ) ;
} ) ;
describe ( 'pgInsert' , ( ) => {
it ( 'runs query to insert' , async ( ) => {
const insertItem = { id : 1234 , name : 'test' , age : 34 } ;
const nodeParams = {
table : 'mytable' ,
schema : 'myschema' ,
columns : 'id,name,age' ,
returnFields : '*' ,
2021-04-24 13:55:14 -07:00
additionalFields : { } ,
2021-04-03 07:53:47 -07:00
} ;
const getNodeParam = ( key ) => nodeParams [ key ] ;
const pgp = pgPromise ( ) ;
2021-04-24 13:55:14 -07:00
const any = jest . fn ( ) ;
const db = { any } ;
2021-04-03 07:53:47 -07:00
const items = [
{
json : insertItem ,
} ,
] ;
2021-04-24 13:55:14 -07:00
await PostgresFun . pgInsert ( getNodeParam , pgp , db , items ) ;
2021-04-03 07:53:47 -07:00
2021-04-24 13:55:14 -07:00
expect ( db . any ) . toHaveBeenCalledWith ( ` insert into \" myschema \" . \" mytable \" ( \" id \" , \" name \" , \" age \" ) values(1234,'test',34) RETURNING * ` ) ;
2021-04-03 07:53:47 -07:00
} ) ;
it ( 'runs query to insert with type casting' , async ( ) => {
const insertItem = { id : 1234 , name : 'test' , age : 34 } ;
const nodeParams = {
table : 'mytable' ,
schema : 'myschema' ,
columns : 'id:int,name:text,age' ,
returnFields : '*' ,
2021-04-24 13:55:14 -07:00
additionalFields : { } ,
2021-04-03 07:53:47 -07:00
} ;
const getNodeParam = ( key ) => nodeParams [ key ] ;
const pgp = pgPromise ( ) ;
2021-04-24 13:55:14 -07:00
const any = jest . fn ( ) ;
const db = { any } ;
2021-04-03 07:53:47 -07:00
const items = [
{
json : insertItem ,
} ,
] ;
2021-04-24 13:55:14 -07:00
await PostgresFun . pgInsert ( getNodeParam , pgp , db , items ) ;
2021-04-03 07:53:47 -07:00
2021-04-24 13:55:14 -07:00
expect ( db . any ) . toHaveBeenCalledWith ( ` insert into \" myschema \" . \" mytable \" ( \" id \" , \" name \" , \" age \" ) values(1234::int,'test'::text,34) RETURNING * ` ) ;
2021-04-03 07:53:47 -07:00
} ) ;
} ) ;