regard
Version:
Sugar-interface to access multiple data sources.
61 lines (52 loc) • 1.76 kB
JavaScript
var _ = require('lodash'),
AbstractManager = require('../../lib/managers/abstract'),
Chai = require('chai'),
ConnectorsManager = require('../../lib/managers/connectors'),
File = require('easy-file'),
Fs = require('fs');
var clazz = ConnectorsManager,
expect = Chai.expect,
foo, bar;
var BAD_CONNECTOR_PATH = __dirname+'/../../lib/connectors/bad';
function createBadConnector() {
File.write(BAD_CONNECTOR_PATH, 'foo:bar');
}
function removeBadConnector() {
Fs.unlinkSync(BAD_CONNECTOR_PATH);
}
describe('ConnectorsManager', function () {
before(createBadConnector);
after(removeBadConnector);
beforeEach(function () {
foo = clazz();
});
it('should return ConnectorsManager instance', function () {
foo = clazz();
expect(foo).is.be.instanceof(AbstractManager);
expect(foo).is.be.instanceof(ConnectorsManager);
foo = new clazz();
expect(foo).is.be.instanceof(AbstractManager);
expect(foo).is.be.instanceof(ConnectorsManager);
});
it('should return a core connector', function () {
expect(foo.core()).to.not.be.ok;
expect(foo.core('foo')).to.not.be.ok;
expect(foo.core('fs')).to.be.a('function');
expect(_.partial(foo.core, 'bad')).to.throw();
});
it('should resolve endpoint connector', function () {
var FsConnector = foo.core('fs');
bar = {};
expect(foo.resolve(bar)).to.not.be.ok;
bar.connector = FsConnector;
expect(foo.resolve(bar)).to.be.ok;
bar.connector = 'fs';
expect(foo.resolve(bar)).to.not.be.ok;
foo.add(FsConnector());
expect(foo.resolve(bar)).to.be.ok;
bar.connector = undefined;
expect(foo.resolve(bar)).to.not.be.ok;
bar.parent = {connector:'fs'};
expect(foo.resolve(bar)).to.be.ok;
});
});