Spaces:
Running
Running
; | |
const assert = require('assert').strict; | |
const { PostgresDatabase } = require('../../dist/lib'); | |
function testMod(mod) { | |
try { | |
require(mod); | |
} catch { | |
return it.skip; | |
} | |
return it; | |
} | |
// only run these if you already have postgres configured | |
describe.skip("Postgres features", () => { | |
it("Should be able to connect to a database", async () => { | |
this.database = new PostgresDatabase(); | |
}); | |
it("Should be able to insert data", async () => { | |
await assert.doesNotThrowAsync(async () => { | |
await this.database.query(`CREATE TABLE test (col TEXT, col2 TEXT)`); | |
await this.database.query( | |
`INSERT INTO test (col, col2) VALUES ($1, $2)`, | |
['foo', 'bar'] | |
); | |
}); | |
}); | |
testMod('sql-template-strings')('Should support sql-template-strings', async () => { | |
await assert.doesNotThrowAsync(async () => { | |
const SQL = require('sql-template-strings'); | |
await this.database.query(SQL`INSERT INTO test (col1, col2) VALUES (${'a'}, ${'b'})`); | |
}); | |
}); | |
it("Should be able to run multiple statements in transaction", async () => { | |
await assert.doesNotThrowAsync(async () => { | |
await this.database.transaction(async worker => { | |
const tables = await worker.query( | |
`SELECT tablename FROM pg_catalog.pg_tables ` + | |
`WHERE tablename = 'test' LIMIT 1;` | |
); | |
for (const { tablename } of tables) { | |
await worker.query(`DROP TABLE ` + tablename); | |
} | |
}); | |
}); | |
}); | |
}); | |