mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 08:35:43 -06:00
* DataLinks: Removes getDataSourceSettingsByUid from applyFieldOverrides and data linking code * Fixed test * Fixed a few tests * Fixed unit tests * Removed old getDataSourceSettingsByUid from interface, still there for runtime backward compatability
96 lines
2.4 KiB
TypeScript
96 lines
2.4 KiB
TypeScript
import { getFieldLinksForExplore } from './links';
|
|
import { ArrayVector, DataLink, dateTime, Field, FieldType, LinkModel, ScopedVars, TimeRange } from '@grafana/data';
|
|
import { setLinkSrv } from '../../panel/panellinks/link_srv';
|
|
|
|
describe('getFieldLinksForExplore', () => {
|
|
it('returns correct link model for external link', () => {
|
|
const { field, range } = setup({
|
|
title: 'external',
|
|
url: 'http://regionalhost',
|
|
});
|
|
const links = getFieldLinksForExplore(field, 0, jest.fn(), range);
|
|
|
|
expect(links[0].href).toBe('http://regionalhost');
|
|
expect(links[0].title).toBe('external');
|
|
});
|
|
|
|
it('returns generates title for external link', () => {
|
|
const { field, range } = setup({
|
|
title: '',
|
|
url: 'http://regionalhost',
|
|
});
|
|
const links = getFieldLinksForExplore(field, 0, jest.fn(), range);
|
|
|
|
expect(links[0].href).toBe('http://regionalhost');
|
|
expect(links[0].title).toBe('regionalhost');
|
|
});
|
|
|
|
it('returns correct link model for internal link', () => {
|
|
const { field, range } = setup({
|
|
title: '',
|
|
url: '',
|
|
internal: {
|
|
query: { query: 'query_1' },
|
|
datasourceUid: 'uid_1',
|
|
datasourceName: 'test_ds',
|
|
},
|
|
});
|
|
const splitfn = jest.fn();
|
|
const links = getFieldLinksForExplore(field, 0, splitfn, range);
|
|
|
|
expect(links[0].href).toBe(
|
|
'/explore?left={"range":{"from":"now-1h","to":"now"},"datasource":"test_ds","queries":[{"query":"query_1"}]}'
|
|
);
|
|
expect(links[0].title).toBe('test_ds');
|
|
|
|
if (links[0].onClick) {
|
|
links[0].onClick({});
|
|
}
|
|
|
|
expect(splitfn).toBeCalledWith({
|
|
datasourceUid: 'uid_1',
|
|
query: { query: 'query_1' },
|
|
range,
|
|
});
|
|
});
|
|
});
|
|
|
|
function setup(link: DataLink) {
|
|
setLinkSrv({
|
|
getDataLinkUIModel(link: DataLink, scopedVars: ScopedVars, origin: any): LinkModel<any> {
|
|
return {
|
|
href: link.url,
|
|
title: link.title,
|
|
target: '_blank',
|
|
origin: origin,
|
|
};
|
|
},
|
|
getAnchorInfo(link: any) {
|
|
return { ...link };
|
|
},
|
|
getLinkUrl(link: any) {
|
|
return link.url;
|
|
},
|
|
});
|
|
|
|
const field: Field<string> = {
|
|
name: 'flux-dimensions',
|
|
type: FieldType.string,
|
|
values: new ArrayVector([]),
|
|
config: {
|
|
links: [link],
|
|
},
|
|
};
|
|
|
|
const range: TimeRange = {
|
|
from: dateTime('2020-10-14T00:00:00'),
|
|
to: dateTime('2020-10-14T01:00:00'),
|
|
raw: {
|
|
from: 'now-1h',
|
|
to: 'now',
|
|
},
|
|
};
|
|
|
|
return { range, field };
|
|
}
|