joplin/CliClient/tests/test-utils.js

62 lines
1.5 KiB
JavaScript
Raw Normal View History

2017-06-14 19:59:02 +00:00
import fs from 'fs-extra';
import { Database } from 'src/database.js';
import { DatabaseDriverNode } from 'src/database-driver-node.js';
import { BaseModel } from 'src/base-model.js';
import { Synchronizer } from 'src/synchronizer.js';
import { FileApi } from 'src/file-api.js';
import { FileApiDriverMemory } from 'src/file-api-driver-memory.js';
let database_ = null;
let synchronizer_ = null;
let fileApi_ = null;
function setupDatabase(done) {
if (database_) {
let queries = [
'DELETE FROM changes',
'DELETE FROM notes',
'DELETE FROM folders',
'DELETE FROM item_sync_times',
];
return database_.transactionExecBatch(queries).then(() => {
if (done) done();
});
}
const filePath = __dirname + '/data/test.sqlite';
return fs.unlink(filePath).catch(() => {
// Don't care if the file doesn't exist
}).then(() => {
database_ = new Database(new DatabaseDriverNode());
database_.setDebugEnabled(false);
return database_.open({ name: filePath }).then(() => {
BaseModel.db_ = database_;
return setupDatabase(done);
});
});
}
2017-06-17 23:49:52 +00:00
async function setupDatabaseAndSynchronizer() {
await setupDatabase();
if (!synchronizer_) {
let fileDriver = new FileApiDriverMemory();
fileApi_ = new FileApi('/root', fileDriver);
synchronizer_ = new Synchronizer(db(), fileApi_);
}
2017-06-14 19:59:02 +00:00
}
function db() {
return database_;
}
function synchronizer() {
return synchronizer_;
}
function fileApi() {
return fileApi_;
}
export { setupDatabase, setupDatabaseAndSynchronizer, db, synchronizer, fileApi };