Files
cloudron-box/src/test/database-test.js
Girish Ramakrishnan 1672217dd9 replace mysql module with mysql2
mysql is deprecated since years now
2025-06-19 12:41:49 +02:00

96 lines
3.1 KiB
JavaScript

/* global it, describe, before, after */
'use strict';
const BoxError = require('../boxerror.js'),
database = require('../database'),
expect = require('expect.js'),
safe = require('safetydance');
describe('database', function () {
describe('init', function () {
it('can init database', async function () {
await database.initialize();
});
it('can clear database', async function () {
await database._clear();
});
it('can uninitialize database', async function () {
await database.uninitialize();
});
});
describe('query', function () {
before(async () => { await database.initialize(); });
after(async () => { await database.uninitialize(); });
it('basic query', async function () {
const result = await database.query('SELECT COUNT(*) as count FROM apps');
expect(result[0].count).to.be(0);
});
it('bad queries', async function () {
const queries = [
'SELECT COUNT(*) FROM oops', // bad table
'SELECT', // incomplete
];
for (const query of queries) {
const [error] = await safe(database.query(query));
expect(error.reason).to.be(BoxError.DATABASE_ERROR);
expect(error.sqlMessage).to.be.a('string');
}
});
});
describe('transaction', function () {
before(async () => { await database.initialize(); });
after(async () => { await database.uninitialize(); });
it('basic transaction', async function () {
const results = await database.transaction([
{ query: 'SELECT COUNT(*) as count FROM apps', args: [] },
{ query: 'SELECT COUNT(*) as count FROM settings', args: [] },
]);
expect(results[0][0].count).to.be(0);
expect(results[1][0].count).to.be(0);
});
it('bad transaction', async function () {
const [error] = await safe(database.transaction([
{ query: 'SELECT COUNT(*) as count FROM apps', args: [] },
{ query: 'stuff', args: [] },
]));
expect(error.reason).to.be(BoxError.DATABASE_ERROR);
expect(error.sqlMessage).to.be.a('string');
});
});
describe('import/export', function () {
before(async function () {
await database.initialize();
await database._clear();
});
it('cannot import from non-existent file', async function () {
const [error] = await safe(database.importFromFile('/does/not/exist'));
expect(error).to.be.ok();
});
it('can export to file', async function () {
await database.exportToFile('/tmp/box.mysqldump');
});
it('can import from file', async function () {
await database.importFromFile('/tmp/box.mysqldump');
});
it('can uninitialize database', async function () {
await database.uninitialize();
});
});
});