mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-25 20:54:07 -08:00
4dac848758
* ⚡ Extend `.prettierignore` patterns * 🎨 Apply Prettier to `/src` and `/test` * 🎨 Update `.prettierignore` * ✏️ Group dirs with same nesting level * ✏️ Alphabetize credentials
173 lines
4.4 KiB
JavaScript
173 lines
4.4 KiB
JavaScript
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',
|
|
columns: 'id,name',
|
|
additionalFields: {},
|
|
returnFields: '*',
|
|
};
|
|
const getNodeParam = (key) => nodeParams[key];
|
|
const pgp = pgPromise();
|
|
const any = jest.fn();
|
|
const db = { any };
|
|
|
|
const items = [
|
|
{
|
|
json: updateItem,
|
|
},
|
|
];
|
|
|
|
await PostgresFun.pgUpdate(getNodeParam, pgp, db, items);
|
|
|
|
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 *`,
|
|
);
|
|
});
|
|
|
|
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',
|
|
columns: 'name',
|
|
additionalFields: {},
|
|
returnFields: '*',
|
|
};
|
|
const getNodeParam = (key) => nodeParams[key];
|
|
const pgp = pgPromise();
|
|
const any = jest.fn();
|
|
const db = { any };
|
|
|
|
const items = [
|
|
{
|
|
json: updateItem,
|
|
},
|
|
];
|
|
|
|
const results = await PostgresFun.pgUpdate(getNodeParam, pgp, db, items);
|
|
|
|
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 *`,
|
|
);
|
|
});
|
|
|
|
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',
|
|
columns: 'name',
|
|
additionalFields: {},
|
|
returnFields: '*',
|
|
};
|
|
const getNodeParam = (key) => nodeParams[key];
|
|
const pgp = pgPromise();
|
|
const any = jest.fn();
|
|
const db = { any };
|
|
|
|
const items = [
|
|
{
|
|
json: updateItem,
|
|
},
|
|
];
|
|
|
|
await PostgresFun.pgUpdate(getNodeParam, pgp, db, items);
|
|
|
|
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 *`,
|
|
);
|
|
});
|
|
|
|
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',
|
|
columns: 'id:uuid,name',
|
|
additionalFields: {},
|
|
returnFields: '*',
|
|
};
|
|
const getNodeParam = (key) => nodeParams[key];
|
|
const pgp = pgPromise();
|
|
const any = jest.fn();
|
|
const db = { any };
|
|
|
|
const items = [
|
|
{
|
|
json: updateItem,
|
|
},
|
|
];
|
|
|
|
await PostgresFun.pgUpdate(getNodeParam, pgp, db, items);
|
|
|
|
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 *`,
|
|
);
|
|
});
|
|
});
|
|
|
|
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: '*',
|
|
additionalFields: {},
|
|
};
|
|
const getNodeParam = (key) => nodeParams[key];
|
|
const pgp = pgPromise();
|
|
const any = jest.fn();
|
|
const db = { any };
|
|
|
|
const items = [
|
|
{
|
|
json: insertItem,
|
|
},
|
|
];
|
|
|
|
await PostgresFun.pgInsert(getNodeParam, pgp, db, items);
|
|
|
|
expect(db.any).toHaveBeenCalledWith(
|
|
`insert into \"myschema\".\"mytable\"(\"id\",\"name\",\"age\") values(1234,'test',34) RETURNING *`,
|
|
);
|
|
});
|
|
|
|
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: '*',
|
|
additionalFields: {},
|
|
};
|
|
const getNodeParam = (key) => nodeParams[key];
|
|
const pgp = pgPromise();
|
|
const any = jest.fn();
|
|
const db = { any };
|
|
|
|
const items = [
|
|
{
|
|
json: insertItem,
|
|
},
|
|
];
|
|
|
|
await PostgresFun.pgInsert(getNodeParam, pgp, db, items);
|
|
|
|
expect(db.any).toHaveBeenCalledWith(
|
|
`insert into \"myschema\".\"mytable\"(\"id\",\"name\",\"age\") values(1234::int,'test'::text,34) RETURNING *`,
|
|
);
|
|
});
|
|
});
|