Skip to content

Commit

Permalink
adding visualize tests (#13957)
Browse files Browse the repository at this point in the history
  • Loading branch information
ppisljar authored Sep 13, 2017
1 parent 70dd9fd commit 9ca9e93
Show file tree
Hide file tree
Showing 7 changed files with 417 additions and 9 deletions.
5 changes: 5 additions & 0 deletions src/fixtures/mock_ui_state.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ export default {
keys[path] = val;
return val;
},
setSilent: function (path, val) {
keys[path] = val;
return val;
},
emit: _.noop,
on: _.noop,
off: _.noop
};
107 changes: 107 additions & 0 deletions src/ui/public/visualize/__tests__/spy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import $ from 'jquery';
import _ from 'lodash';
import expect from 'expect.js';
import ngMock from 'ng_mock';
import { VisProvider } from 'ui/vis';
import FixturesStubbedLogstashIndexPatternProvider from 'fixtures/stubbed_logstash_index_pattern';
import FixturesStubbedSearchSourceProvider from 'fixtures/stubbed_search_source';
import MockState from 'fixtures/mock_state';

describe('visualize spy directive', function () {
let $rootScope;
let $compile;
let $el;
let Vis;
let indexPattern;
let fixtures;
let searchSource;
let appState;
let vis;

beforeEach(ngMock.module('kibana', 'kibana/table_vis'));
beforeEach(ngMock.inject(function (Private, $injector) {
$rootScope = $injector.get('$rootScope');
$compile = $injector.get('$compile');
fixtures = require('fixtures/fake_hierarchical_data');
Vis = Private(VisProvider);
appState = new MockState({ filters: [] });
appState.toJSON = () => { return {}; };
indexPattern = Private(FixturesStubbedLogstashIndexPatternProvider);
searchSource = Private(FixturesStubbedSearchSourceProvider);
const requiresSearch = false;
vis = new CreateVis(null, requiresSearch);
init(vis, fixtures.oneRangeBucket);
}));

// basically a parameterized beforeEach
function init(vis, esResponse) {
vis.aggs.forEach(function (agg, i) { agg.id = 'agg_' + (i + 1); });
$rootScope.spy = {};
$rootScope.vis = vis;
$rootScope.esResponse = esResponse;
$rootScope.uiState = require('fixtures/mock_ui_state');
$rootScope.searchSource = searchSource;
$el = $('<visualize-spy>');
$compile($el)($rootScope);
$rootScope.$apply();
}

function CreateVis(params, requiresSearch) {
const vis = new Vis(indexPattern, {
type: 'table',
params: params || {},
aggs: [
{ type: 'count', schema: 'metric' },
{
type: 'range',
schema: 'bucket',
params: {
field: 'bytes',
ranges: [
{ from: 0, to: 1000 },
{ from: 1000, to: 2000 }
]
}
}
]
});

vis.type.requestHandler = requiresSearch ? 'default' : 'none';
vis.type.responseHandler = 'none';
vis.type.requiresSearch = false;
return vis;
}

it('toggleDisplay toggles spy display', () => {
$rootScope.toggleDisplay();
$rootScope.$apply();
let mode = _.get($rootScope.spy, 'mode.name');
expect(mode).to.equal('table');

$rootScope.toggleDisplay();
$rootScope.$apply();
mode = _.get($rootScope.spy, 'mode.name');
expect(mode).to.be.undefined;
});

it('toggleFullPage toggles full page display', () => {
$rootScope.spy = { mode: { name: 'table' } };
$rootScope.toggleFullPage();
$rootScope.$apply();
let mode = _.get($rootScope.spy, 'mode.fill');
expect(mode).to.equal(true);

$rootScope.toggleFullPage();
$rootScope.$apply();
mode = _.get($rootScope.spy, 'mode.fill');
expect(mode).to.equal(false);
});

it('onSpyModeChange updates the spy display mode', () => {
$rootScope.selectedModeName = 'table';
$rootScope.onSpyModeChange();
$rootScope.$apply();
const mode = _.get($rootScope.spy, 'mode.name');
expect(mode).to.equal('table');
});
});
92 changes: 92 additions & 0 deletions src/ui/public/visualize/__tests__/visualization_editor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
import $ from 'jquery';
import expect from 'expect.js';
import ngMock from 'ng_mock';
import { VisProvider } from 'ui/vis';
import FixturesStubbedLogstashIndexPatternProvider from 'fixtures/stubbed_logstash_index_pattern';
import FixturesStubbedSearchSourceProvider from 'fixtures/stubbed_search_source';
import MockState from 'fixtures/mock_state';

describe('visualization_editor directive', function () {
let $rootScope;
let $compile;
let $scope;
let $el;
let Vis;
let indexPattern;
let fixtures;
let searchSource;
let appState;
let $timeout;
let vis;

beforeEach(ngMock.module('kibana', 'kibana/table_vis'));
beforeEach(ngMock.inject(function (Private, $injector) {
$rootScope = $injector.get('$rootScope');
$compile = $injector.get('$compile');
$timeout = $injector.get('$timeout');
fixtures = require('fixtures/fake_hierarchical_data');
Vis = Private(VisProvider);
appState = new MockState({ filters: [] });
appState.toJSON = () => { return {}; };
indexPattern = Private(FixturesStubbedLogstashIndexPatternProvider);
searchSource = Private(FixturesStubbedSearchSourceProvider);

const requiresSearch = false;
vis = new CreateVis(null, requiresSearch);
init(vis, fixtures.oneRangeBucket);
$timeout.flush();
$timeout.verifyNoPendingTasks();
}));

// basically a parameterized beforeEach
function init(vis, esResponse) {
vis.aggs.forEach(function (agg, i) { agg.id = 'agg_' + (i + 1); });

$rootScope.vis = vis;
$rootScope.visData = esResponse;
$rootScope.uiState = require('fixtures/mock_ui_state');
$rootScope.searchSource = searchSource;
$el = $('<visualization-editor vis="vis" vis-data="visData" ui-state="uiState" search-source="searchSource">');
$compile($el)($rootScope);
$rootScope.$apply();

$scope = $el.isolateScope();
}

function CreateVis(params, requiresSearch) {
const vis = new Vis(indexPattern, {
type: 'table',
params: params || {},
aggs: [
{ type: 'count', schema: 'metric' },
{
type: 'range',
schema: 'bucket',
params: {
field: 'bytes',
ranges: [
{ from: 0, to: 1000 },
{ from: 1000, to: 2000 }
]
}
}
]
});

vis.type.requestHandler = requiresSearch ? 'default' : 'none';
vis.type.responseHandler = 'none';
vis.type.requiresSearch = requiresSearch;
return vis;
}

it('calls render complete when editor is rendered', function () {
let renderComplete = 0;
$scope.renderFunction = () => {
renderComplete++;
};

$scope.$emit('render');
$scope.$apply();
expect(renderComplete).to.equal(1);
});
});
40 changes: 37 additions & 3 deletions src/ui/public/visualize/__tests__/visualize.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,15 @@ describe('visualize directive', function () {
appState.toJSON = () => { return {}; };
indexPattern = Private(FixturesStubbedLogstashIndexPatternProvider);
searchSource = Private(FixturesStubbedSearchSourceProvider);

const requiresSearch = false;
init(new CreateVis(null, requiresSearch), fixtures.oneRangeBucket);
}));

afterEach(() => {
$scope.$destroy();
});

// basically a parameterized beforeEach
function init(vis, esResponse) {
vis.aggs.forEach(function (agg, i) { agg.id = 'agg_' + (i + 1); });
Expand All @@ -37,6 +44,7 @@ describe('visualize directive', function () {
$rootScope.esResponse = esResponse;
$rootScope.uiState = require('fixtures/mock_ui_state');
$rootScope.appState = appState;
$rootScope.appState.vis = vis.getState();
$rootScope.searchSource = searchSource;
$rootScope.savedObject = {
vis: vis,
Expand Down Expand Up @@ -76,11 +84,37 @@ describe('visualize directive', function () {
}

it('searchSource.onResults should not be called when requiresSearch is false', function () {
const requiresSearch = false;
init(new CreateVis(null, requiresSearch), fixtures.oneRangeBucket);

searchSource.crankResults();
$scope.$digest();
expect(searchSource.getOnResultsCount()).to.be(0);
});

it('fetches new data on update event', () => {
let counter = 0;
$scope.fetch = () => { counter++; };
$scope.vis.emit('update');
expect(counter).to.equal(1);
});

it('updates the appState in editor mode on update event', () => {
$scope.editorMode = true;
$scope.appState.vis = {};
$scope.vis.emit('update');
expect($scope.appState.vis).to.not.equal({});
});

it('sets force flag on force event', () => {
$scope.vis.emit('reload');
expect($scope.vis.reload).to.equal(true);
});

it('renderComplete is triggered on the element', () => {
let counter = 0;
$el.on('renderComplete', () => {
counter++;
});
$scope.$emit('renderComplete');
expect(counter).to.equal(1);
});

});
Loading

0 comments on commit 9ca9e93

Please sign in to comment.