@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
122 lines (92 loc) • 3.03 kB
JavaScript
var angular = require('angular');
var expect = require('expect.js');
var $ = require('jquery');
var _ = require('lodash');
var sinon = require('auto-release-sinon');
var searchResponse = require('fixtures/search_response');
var ngMock = require('ngMock');
// Load the kibana app dependencies.
require('ui/private');
require('ui/doc_table');
var $parentScope;
var $scope;
var $timeout;
var searchSource;
var init = function ($elem, props) {
ngMock.inject(function ($rootScope, $compile, _$timeout_) {
$timeout = _$timeout_;
$parentScope = $rootScope;
_.assign($parentScope, props);
$compile($elem)($parentScope);
// I think the prereq requires this?
$timeout(function () {
$elem.scope().$digest();
}, 0);
$scope = $elem.isolateScope();
});
};
var destroy = function () {
$scope.$destroy();
$parentScope.$destroy();
};
describe('docTable', function () {
var $elem;
beforeEach(ngMock.module('kibana'));
beforeEach(function () {
$elem = angular.element('<doc-table search-source="searchSource" columns="columns" sorting="sorting"></doc-table>');
ngMock.inject(function (Private) {
searchSource = Private(require('fixtures/stubbed_search_source'));
});
init($elem, {
searchSource: searchSource,
columns: [],
sorting: ['@timestamp', 'desc']
});
$scope.$digest();
});
afterEach(function () {
destroy();
});
it('should compile', function () {
expect($elem.text()).to.not.be.empty();
});
it('should set the indexPattern to that of the searchSource', function () {
expect($scope.indexPattern).to.be(searchSource.get('index'));
});
it('should set size and sort on the searchSource', function () {
expect($scope.searchSource.sort.called).to.be(true);
expect($scope.searchSource.size.called).to.be(true);
});
it('should have an addRows function that increases the row count', function () {
expect($scope.addRows).to.be.a(Function);
searchSource.crankResults();
$scope.$digest();
expect($scope.limit).to.be(50);
$scope.addRows();
expect($scope.limit).to.be(100);
});
it('should reset the row limit when results are received', function () {
$scope.limit = 100;
expect($scope.limit).to.be(100);
searchSource.crankResults();
$scope.$digest();
expect($scope.limit).to.be(50);
});
it('should put the hits array on scope', function () {
expect($scope.hits).to.be(undefined);
searchSource.crankResults();
$scope.$digest();
expect($scope.hits).to.be.an(Array);
});
it('should destroy the searchSource when the scope is destroyed', function () {
expect(searchSource.destroy.called).to.be(false);
$scope.$destroy();
expect(searchSource.destroy.called).to.be(true);
});
it('should have a header and a table element', function () {
searchSource.crankResults();
$scope.$digest();
expect($elem.find('thead').length).to.be(1);
expect($elem.find('table').length).to.be(1);
});
});