Initial release
[websub-hub] / test / src / db / factory.js
1 /* eslint-env mocha */
2 'use strict';
3
4 const assert = require('assert');
5 const sinon = require('sinon'); // eslint-disable-line node/no-unpublished-require
6 const common = require('../../../src/common');
7 const DB = require('../../../src/db');
8 const DBErrors = require('../../../src/db/errors');
9 const DatabasePostgres = require('../../../src/db/postgres');
10 const DatabaseSQLite = require('../../../src/db/sqlite');
11
12 describe('DatabaseFactory', function () {
13 let logger, options;
14 beforeEach(function () {
15 logger = common.nullLogger;
16 options = {
17 db: {
18 connectionString: '',
19 },
20 };
21 });
22 afterEach(function () {
23 sinon.restore();
24 });
25 it('gets engines', function () {
26 const result = DB.Engines;
27 assert(result instanceof Object);
28 assert(Object.keys(result).length);
29 });
30 it('creates postgres db', function () {
31 options.db.connectionString = 'postgresql://blah';
32 const db = new DB(logger, options);
33 assert(db instanceof DatabasePostgres);
34 });
35 it('creates sqlite db', function () {
36 options.db.connectionString = 'sqlite://:memory:';
37 const db = new DB(logger, options);
38 assert(db instanceof DatabaseSQLite);
39 });
40 it('handles missing db', function () {
41 delete options.db.connectionString;
42 try {
43 new DB(logger, options);
44 assert.fail('did not get expected exception');
45 } catch (e) {
46 assert(e instanceof DBErrors.UnsupportedEngine);
47 }
48 });
49 }); // DatabaseFactory