@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
74 lines (63 loc) • 3.18 kB
JavaScript
describe('Highlight', function () {
var angular = require('angular');
var expect = require('expect.js');
var ngMock = require('ngMock');
require('ui/highlight');
var filter;
var tags;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (highlightFilter, highlightTags) {
filter = highlightFilter;
tags = highlightTags;
}));
var text = '' +
'Bacon ipsum dolor amet pork loin pork cow pig beef chuck ground round shankle sirloin landjaeger kevin ' +
'venison sausage ribeye tongue. Chicken bacon ball tip pork. Brisket pork capicola spare ribs pastrami rump ' +
'sirloin, t-bone ham shoulder jerky turducken bresaola. Chicken cow beef picanha. Picanha hamburger alcatra ' +
'cupim. Salami capicola boudin pork belly shank picanha.';
it('should not modify text if highlight is empty', function () {
expect(filter(text, undefined)).to.be(text);
expect(filter(text, null)).to.be(text);
expect(filter(text, [])).to.be(text);
});
it('should highlight a single result', function () {
var highlights = [
tags.pre + 'hamburger' + tags.post + ' alcatra cupim. Salami capicola boudin pork belly shank picanha.'
];
var result = filter(text, highlights);
expect(result.indexOf('<mark>hamburger</mark>')).to.be.greaterThan(-1);
expect(result.split('<mark>hamburger</mark>').length).to.be(text.split('hamburger').length);
});
it('should highlight multiple results', function () {
var highlights = [
'kevin venison sausage ribeye tongue. ' + tags.pre + 'Chicken' + tags.post + ' bacon ball tip pork. Brisket ' +
'pork capicola spare ribs pastrami rump sirloin, t-bone ham shoulder jerky turducken bresaola. ' + tags.pre +
'Chicken' + tags.post + ' cow beef picanha. Picanha'
];
var result = filter(text, highlights);
expect(result.indexOf('<mark>Chicken</mark>')).to.be.greaterThan(-1);
expect(result.split('<mark>Chicken</mark>').length).to.be(text.split('Chicken').length);
});
it('should highlight multiple hits in a result', function () {
var highlights = [
'Bacon ipsum dolor amet ' + tags.pre + 'pork' + tags.post + ' loin ' +
'' + tags.pre + 'pork' + tags.post + ' cow pig beef chuck ground round shankle ' +
'sirloin landjaeger',
'kevin venison sausage ribeye tongue. Chicken bacon ball tip ' +
'' + tags.pre + 'pork' + tags.post + '. Brisket ' +
'' + tags.pre + 'pork' + tags.post + ' capicola spare ribs',
'hamburger alcatra cupim. Salami capicola boudin ' + tags.pre + 'pork' + tags.post + ' ' +
'belly shank picanha.'
];
var result = filter(text, highlights);
expect(result.indexOf('<mark>pork</mark>')).to.be.greaterThan(-1);
expect(result.split('<mark>pork</mark>').length).to.be(text.split('pork').length);
});
it('should accept an object and return a string containing its properties', function () {
var obj = {foo: 1, bar: 2};
var result = filter(obj, null);
expect(result.indexOf('' + obj)).to.be(-1);
expect(result.indexOf('foo')).to.be.greaterThan(-1);
expect(result.indexOf('bar')).to.be.greaterThan(-1);
});
});