X-Git-Url: http://git.squeep.com/?p=squeep-indie-auther;a=blobdiff_plain;f=test%2Fsrc%2Fdb%2Ffactory.js;fp=test%2Fsrc%2Fdb%2Ffactory.js;h=7b9402c1cb18c1ca48ac34b55805de1a3f5aa198;hp=0000000000000000000000000000000000000000;hb=b0103b0d496262c438b40bc20304081dbfe41e73;hpb=8ed81748bce7cea7904cac7225b20a60cafdfc16 diff --git a/test/src/db/factory.js b/test/src/db/factory.js new file mode 100644 index 0000000..7b9402c --- /dev/null +++ b/test/src/db/factory.js @@ -0,0 +1,49 @@ +/* eslint-env mocha */ +'use strict'; + +const assert = require('assert'); +const sinon = require('sinon'); // eslint-disable-line node/no-unpublished-require +const common = require('../../../src/common'); +const DB = require('../../../src/db'); +const DBErrors = require('../../../src/db/errors'); +const DatabasePostgres = require('../../../src/db/postgres'); +const DatabaseSQLite = require('../../../src/db/sqlite'); + +describe('DatabaseFactory', function () { + let logger, options; + beforeEach(function () { + logger = common.nullLogger; + options = { + db: { + connectionString: '', + }, + }; + }); + afterEach(function () { + sinon.restore(); + }); + it('gets engines', function () { + const result = DB.Engines; + assert(result instanceof Object); + assert(Object.keys(result).length); + }); + it('creates postgres db', function () { + options.db.connectionString = 'postgresql://blah'; + const db = new DB(logger, options); + assert(db instanceof DatabasePostgres); + }); + it('creates sqlite db', function () { + options.db.connectionString = 'sqlite://:memory:'; + const db = new DB(logger, options); + assert(db instanceof DatabaseSQLite); + }); + it('handles missing db', function () { + delete options.db.connectionString; + try { + new DB(logger, options); + assert.fail('did not get expected exception'); + } catch (e) { + assert(e instanceof DBErrors.UnsupportedEngine); + } + }); +}); // DatabaseFactory