mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-25 14:26:00 +00:00
fixed postgres export + export tests #970
This commit is contained in:
@@ -2,10 +2,11 @@ const engines = require('../engines');
|
|||||||
const stream = require('stream');
|
const stream = require('stream');
|
||||||
const { testWrapper } = require('../tools');
|
const { testWrapper } = require('../tools');
|
||||||
const tableWriter = require('dbgate-api/src/shell/tableWriter');
|
const tableWriter = require('dbgate-api/src/shell/tableWriter');
|
||||||
|
const tableReader = require('dbgate-api/src/shell/tableReader');
|
||||||
const copyStream = require('dbgate-api/src/shell/copyStream');
|
const copyStream = require('dbgate-api/src/shell/copyStream');
|
||||||
const importDatabase = require('dbgate-api/src/shell/importDatabase');
|
const importDatabase = require('dbgate-api/src/shell/importDatabase');
|
||||||
const fakeObjectReader = require('dbgate-api/src/shell/fakeObjectReader');
|
const fakeObjectReader = require('dbgate-api/src/shell/fakeObjectReader');
|
||||||
const { runQueryOnDriver } = require('dbgate-tools');
|
const { runQueryOnDriver, runCommandOnDriver } = require('dbgate-tools');
|
||||||
|
|
||||||
function createImportStream() {
|
function createImportStream() {
|
||||||
const pass = new stream.PassThrough({
|
const pass = new stream.PassThrough({
|
||||||
@@ -23,7 +24,16 @@ function createImportStream() {
|
|||||||
return pass;
|
return pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('DB Import', () => {
|
function createExportStream() {
|
||||||
|
const writable = new Stream.Writable({ objectMode: true });
|
||||||
|
writable.result = [];
|
||||||
|
writable._write = (object, encoding, done) => {
|
||||||
|
result.push(object);
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('DB Import/export', () => {
|
||||||
test.each(engines.map(engine => [engine.label, engine]))(
|
test.each(engines.map(engine => [engine.label, engine]))(
|
||||||
'Import one table - %s',
|
'Import one table - %s',
|
||||||
testWrapper(async (conn, driver, engine) => {
|
testWrapper(async (conn, driver, engine) => {
|
||||||
@@ -99,4 +109,34 @@ describe('DB Import', () => {
|
|||||||
// expect(res2.rows[0].cnt.toString()).toEqual('6');
|
// expect(res2.rows[0].cnt.toString()).toEqual('6');
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test.each(engines.map(engine => [engine.label, engine]))(
|
||||||
|
'Export one table - %s',
|
||||||
|
testWrapper(async (conn, driver, engine) => {
|
||||||
|
// const reader = await fakeObjectReader({ delay: 10 });
|
||||||
|
// const reader = await fakeObjectReader();
|
||||||
|
await runCommandOnDriver(conn, driver, 'create table ~t1 (~id int, ~country varchar(100))');
|
||||||
|
const data = [
|
||||||
|
[1, 'Czechia'],
|
||||||
|
[2, 'Austria'],
|
||||||
|
[3, 'Germany'],
|
||||||
|
[4, 'Romania'],
|
||||||
|
[5, 'Great Britain'],
|
||||||
|
[6, 'Bosna, Hecegovina'],
|
||||||
|
];
|
||||||
|
for (const row of data) {
|
||||||
|
await runCommandOnDriver(conn, driver, 'insert into ~t1(~id, ~country) values (%v, %v)', ...row);
|
||||||
|
}
|
||||||
|
const reader = await tableReader({
|
||||||
|
systemConnection: conn,
|
||||||
|
driver,
|
||||||
|
pureName: 't1',
|
||||||
|
createIfNotExists: true,
|
||||||
|
});
|
||||||
|
const writer = createExportStream();
|
||||||
|
await copyStream(reader, writer);
|
||||||
|
|
||||||
|
expect(writer.result).toEqual(data);
|
||||||
|
})
|
||||||
|
);
|
||||||
});
|
});
|
||||||
@@ -301,7 +301,7 @@ const drivers = driverBases.map(driverBase => ({
|
|||||||
const zippedRow = zipDataRow(row, columns);
|
const zippedRow = zipDataRow(row, columns);
|
||||||
const transformedRow = transformRow(zippedRow, columnsToTransform);
|
const transformedRow = transformRow(zippedRow, columnsToTransform);
|
||||||
|
|
||||||
options.row(transformedRow);
|
pass.write(transformedRow);
|
||||||
});
|
});
|
||||||
|
|
||||||
query.on('end', () => {
|
query.on('end', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user