admin-bro
Version:
Admin panel for apps written in node.js
79 lines (70 loc) • 2.93 kB
JavaScript
var _path = _interopRequireDefault(require("path"));
var _adminBro = _interopRequireDefault(require("./admin-bro"));
var _baseDatabase = _interopRequireDefault(require("./backend/adapters/base-database"));
var _baseResource = _interopRequireDefault(require("./backend/adapters/base-resource"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('AdminBro', function () {
beforeEach(function () {
_adminBro.default.registeredAdapters = [];
});
describe('#constructor', function () {
it('sets default root path when no given', function () {
expect(new _adminBro.default().options.rootPath).to.equal('/admin');
});
});
describe('.AdminBro.registerAdapter', function () {
beforeEach(function () {
class Database extends _baseDatabase.default {}
class Resource extends _baseResource.default {}
this.DatabaseAdapter = {
Database,
Resource
};
});
it('adds given adapter to list off all available adapters', function () {
_adminBro.default.registerAdapter(this.DatabaseAdapter);
expect(_adminBro.default.registeredAdapters).to.have.lengthOf(1);
});
it('throws an error when adapter is not full', function () {
expect(() => {
_adminBro.default.registerAdapter({
Resource: _adminBro.default.BaseResource
});
}).to.throw('Adapter has to have both Database and Resource');
});
it('throws an error when adapter has elements not being subclassed from base adapter', function () {
expect(() => {
_adminBro.default.registerAdapter({
Resource: {},
Database: {}
});
}).to.throw('Adapter elements has to be subclassess of AdminBro.BaseResource and AdminBro.BaseDatabase');
});
});
describe('.require', function () {
afterEach(function () {
_adminBro.default.UserComponents = {};
});
context('file exists', function () {
beforeEach(function () {
this.result = _adminBro.default.bundle('../spec/fixtures/example-component');
});
it('adds given file to a UserComponents object', function () {
expect(Object.keys(_adminBro.default.UserComponents)).to.have.lengthOf(1);
});
it('returns uniq id', function () {
expect(_adminBro.default.UserComponents[this.result]).not.to.be.undefined;
expect(this.result).to.be.a('string');
});
it('converts relative path to absolute path', function () {
expect(_adminBro.default.UserComponents[this.result]).to.equal(_path.default.join(__dirname, '../spec/fixtures/example-component'));
});
});
it('throws an error when component doesn\t exist', function () {
expect(() => {
_adminBro.default.bundle('./fixtures/example-components');
}).to.throw().property('name', 'ConfigurationError');
});
});
});
;