knex/test/integration2/transaction/set-readonly.spec.js
2023-11-28 02:05:15 +02:00

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;
});
});
});
});
});