@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
89 lines (71 loc) • 2.65 kB
JavaScript
describe('AggTableGroup Directive', function () {
var _ = require('lodash');
var $ = require('jquery');
var ngMock = require('ngMock');
var expect = require('expect.js');
var fixtures = require('fixtures/fake_hierarchical_data');
var $rootScope;
var $compile;
var tabifyAggResponse;
var Vis;
var indexPattern;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function ($injector, Private) {
tabifyAggResponse = Private(require('ui/agg_response/tabify/tabify'));
indexPattern = Private(require('fixtures/stubbed_logstash_index_pattern'));
Vis = Private(require('ui/Vis'));
$rootScope = $injector.get('$rootScope');
$compile = $injector.get('$compile');
}));
var $scope;
beforeEach(function () {
$scope = $rootScope.$new();
});
afterEach(function () {
$scope.$destroy();
});
it('renders a simple split response properly', function () {
var vis = new Vis(indexPattern, 'table');
$scope.group = tabifyAggResponse(vis, fixtures.metricOnly);
var $el = $('<kbn-agg-table-group group="group"></kbn-agg-table-group>');
$compile($el)($scope);
$scope.$digest();
// should create one sub-tbale
expect($el.find('kbn-agg-table').size()).to.be(1);
});
it('renders nothing if the table list is empty', function () {
var $el = $('<kbn-agg-table-group group="group"></kbn-agg-table-group>');
$scope.group = {
tables: []
};
$compile($el)($scope);
$scope.$digest();
var $subTables = $el.find('kbn-agg-table');
expect($subTables.size()).to.be(0);
});
it('renders a complex response properly', function () {
var vis = new Vis(indexPattern, {
type: 'pie',
aggs: [
{ type: 'avg', schema: 'metric', params: { field: 'bytes' } },
{ type: 'terms', schema: 'split', params: { field: 'extension' } },
{ type: 'terms', schema: 'segment', params: { field: 'geo.src' } },
{ type: 'terms', schema: 'segment', params: { field: 'machine.os' } }
]
});
vis.aggs.forEach(function (agg, i) {
agg.id = 'agg_' + (i + 1);
});
var group = $scope.group = tabifyAggResponse(vis, fixtures.threeTermBuckets);
var $el = $('<kbn-agg-table-group group="group"></kbn-agg-table-group>');
$compile($el)($scope);
$scope.$digest();
var $subTables = $el.find('kbn-agg-table');
expect($subTables.size()).to.be(3);
var $subTableHeaders = $el.find('.agg-table-group-header');
expect($subTableHeaders.size()).to.be(3);
$subTableHeaders.each(function (i) {
expect($(this).text()).to.be(group.tables[i].title);
});
});
});