UNPKG

@spalger/kibana

Version:

Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic

115 lines (96 loc) 3.07 kB
describe('Registry', function () { var _ = require('lodash'); var sinon = require('auto-release-sinon'); var registry = require('ui/registry/_registry'); var expect = require('expect.js'); var ngMock = require('ngMock'); var Private; var IndexedArray; beforeEach(ngMock.module('kibana')); beforeEach(ngMock.inject(function ($injector) { Private = $injector.get('Private'); })); it('is technically a function', function () { var reg = registry(); expect(reg).to.be.a('function'); }); describe('#register', function () { it('accepts a Private module', function () { var reg = registry(); var mod = function SomePrivateModule() {}; reg.register(mod); // modules are not exposed, so this is the most that we can test }); }); describe('as a module', function () { it('exposes the list of registered modules', function () { var reg = registry(); var mod = function SomePrivateModule(Private) { this.PrivateModuleLoader = Private; }; reg.register(mod); var modules = Private(reg); expect(modules).to.have.length(1); expect(modules[0]).to.have.property('PrivateModuleLoader', Private); }); }); describe('spec', function () { it('executes with the module list as "this", and can override it', function () { var i = 0; var self; var reg = registry({ constructor: function () { return { mods: (self = this) }; } }); var modules = Private(reg); expect(modules).to.be.an('object'); expect(modules).to.have.property('mods', self); }); }); describe('spec.name', function () { it('sets the displayName of the registry and the name param on the final instance', function () { var reg = registry({ name: 'visTypes' }); expect(reg).to.have.property('displayName', '[registry visTypes]'); expect(Private(reg)).to.have.property('name', 'visTypes'); }); }); describe('spec.constructor', function () { it('executes before the modules are returned', function () { var i = 0; var reg = registry({ constructor: function () { i = i + 1; } }); var modules = Private(reg); expect(i).to.be(1); }); it('executes with the module list as "this", and can override it', function () { var i = 0; var self; var reg = registry({ constructor: function () { return { mods: (self = this) }; } }); var modules = Private(reg); expect(modules).to.be.an('object'); expect(modules).to.have.property('mods', self); }); }); describe('spec[any]', function () { it('mixes the extra properties into the module list', function () { var reg = registry({ someMethod: function () { return this; } }); var modules = Private(reg); expect(modules).to.have.property('someMethod'); expect(modules.someMethod()).to.be(modules); }); }); });