knex/test/integration2/dialects/cockroachdb.spec.js

63 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

'use strict';
const { expect } = require('chai');
const {
Db,
getKnexForDb,
getAllDbs,
} = require('../util/knex-instance-provider');
describe('CockroachDB dialect', () => {
getAllDbs()
.filter((db) => db === Db.CockroachDB)
.forEach((db) => {
describe(db, () => {
let knex;
before(async () => {
knex = getKnexForDb(db);
await knex.schema.createTable('test', function () {
this.increments('id').primary();
this.decimal('balance');
this.string('name');
});
});
after(async () => {
await knex.schema.dropTable('test');
await knex.destroy();
});
describe('Upsert into query with unique', () => {
it('select empty table', async () => {
const results = await knex('test').select();
expect(results).is.empty;
});
it('upsert id=1 with result insert', async () => {
const results = await knex('test').upsert({ id: 1, balance: 10 });
expect(results.command).to.eql('INSERT');
expect(results.rowCount).to.eql(1);
});
it('select rows', async () => {
const results = await knex('test').select();
expect(results).to.eql([{ id: '1', balance: '10.00', name: null }]);
});
it('upsert id=1 with result update balance', async () => {
const results = await knex('test').upsert({ id: 1, balance: 5 });
expect(results.command).to.eql('INSERT');
expect(results.rowCount).to.eql(1);
});
it('select rows', async () => {
const results = await knex('test').select();
expect(results.length).to.eql(1);
expect(results).to.eql([{ id: '1', balance: '5.00', name: null }]);
});
});
});
});
});