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

108 lines (90 loc) 3.61 kB
describe('Url Format', function () { var $ = require('jquery'); var expect = require('expect.js'); var ngMock = require('ngMock'); var fieldFormats; beforeEach(ngMock.module('kibana')); beforeEach(ngMock.inject(function (Private) { fieldFormats = Private(require('ui/registry/field_formats')); })); describe('Url Format', function () { var Url; beforeEach(function () { Url = fieldFormats.getType('url'); }); it('ouputs a simple <a> tab by default', function () { var url = new Url(); var $a = $(url.convert('http://elastic.co', 'html')); expect($a.is('a')).to.be(true); expect($a.size()).to.be(1); expect($a.attr('href')).to.be('http://elastic.co'); expect($a.attr('target')).to.be('_blank'); expect($a.children().size()).to.be(0); }); it('outputs an <image> if type === "img"', function () { var url = new Url({ type: 'img' }); var $img = $(url.convert('http://elastic.co', 'html')); expect($img.is('img')).to.be(true); expect($img.attr('src')).to.be('http://elastic.co'); }); describe('url template', function () { it('accepts a template', function () { var url = new Url({ urlTemplate: 'url: {{ value }}' }); var $a = $(url.convert('url', 'html')); expect($a.is('a')).to.be(true); expect($a.size()).to.be(1); expect($a.attr('href')).to.be('url: url'); expect($a.attr('target')).to.be('_blank'); expect($a.children().size()).to.be(0); }); it('only outputs the url if the contentType === "text"', function () { var url = new Url(); expect(url.convert('url', 'text')).to.be('url'); }); }); describe('label template', function () { it('accepts a template', function () { var url = new Url({ labelTemplate: 'extension: {{ value }}' }); var $a = $(url.convert('php', 'html')); expect($a.is('a')).to.be(true); expect($a.size()).to.be(1); expect($a.attr('href')).to.be('php'); expect($a.html()).to.be('extension: php'); }); it('uses the label template for text formating', function () { var url = new Url({ labelTemplate: 'external {{value }}'}); expect(url.convert('url', 'text')).to.be('external url'); }); it('can use the raw value', function () { var url = new Url({ labelTemplate: 'external {{value}}' }); expect(url.convert('url?', 'text')).to.be('external url?'); }); it('can use the url', function () { var url = new Url({ urlTemplate: 'http://google.com/{{value}}', labelTemplate: 'external {{url}}' }); expect(url.convert('url?', 'text')).to.be('external http://google.com/url%3F'); }); }); describe('templating', function () { it('ignores unknown variables', function () { var url = new Url({ urlTemplate: '{{ not really a var }}' }); expect(url.convert('url', 'text')).to.be(''); }); it('does not allow executing code in variable expressions', function () { window.SHOULD_NOT_BE_TRUE = false; var url = new Url({ urlTemplate: '{{ (window.SHOULD_NOT_BE_TRUE = true) && value }}' }); expect(url.convert('url', 'text')).to.be(''); }); describe('', function () { it('does not get values from the prototype chain', function () { var url = new Url({ urlTemplate: '{{ toString }}' }); expect(url.convert('url', 'text')).to.be(''); }); }); }); }); });