mirror of
https://github.com/knex/knex.git
synced 2025-11-10 23:04:36 +00:00
60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
const { getAllDbs, getKnexForDb } = require('../util/knex-instance-provider');
|
|
const {
|
|
isSQLite,
|
|
isMssql,
|
|
isOracle,
|
|
isCockroachDB,
|
|
} = require('../../util/db-helpers');
|
|
const { expect } = require('chai');
|
|
|
|
describe('Transaction', () => {
|
|
describe('setReadOnly', () => {
|
|
getAllDbs().forEach((db) => {
|
|
describe(db, () => {
|
|
let knex;
|
|
const tableName = 'key_value';
|
|
|
|
before(() => {
|
|
knex = getKnexForDb(db);
|
|
});
|
|
|
|
after(() => {
|
|
return knex.destroy();
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
await knex.schema.createTable(tableName, (table) => {
|
|
table.integer('id').primary().notNull();
|
|
table.integer('value').notNull();
|
|
});
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await knex.schema.dropTable(tableName);
|
|
});
|
|
|
|
// FixMe this test started failing for some reason: https://github.com/knex/knex/issues/5750
|
|
it.skip('Expect insert in read only transaction to be rejected', async () => {
|
|
if (
|
|
isSQLite(knex) ||
|
|
isOracle(knex) ||
|
|
isMssql(knex) ||
|
|
isCockroachDB(knex)
|
|
) {
|
|
return;
|
|
}
|
|
|
|
await expect(
|
|
knex.transaction(
|
|
async (trx) => {
|
|
await trx(tableName).insert({ id: 1, value: 1 });
|
|
},
|
|
{ readOnly: true }
|
|
)
|
|
).to.be.rejected;
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|