mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
* DashList: Stop using IDs * DashLinks: Stop using IDs * BackendSrv: Do not use ID for search endpoint * DashboardDataDTO: Remove ID * Remove unused properties from DashboardSearchItem
135 lines
4.1 KiB
TypeScript
135 lines
4.1 KiB
TypeScript
import { DashboardSearchItem, DashboardSearchItemType } from '../../../search/types';
|
|
import { DashboardLink } from '../../state/DashboardModel';
|
|
|
|
import { resolveLinks, searchForTags } from './DashboardLinksDashboard';
|
|
|
|
describe('searchForTags', () => {
|
|
const setupTestContext = () => {
|
|
const tags = ['A', 'B'];
|
|
const link: DashboardLink = {
|
|
targetBlank: false,
|
|
keepTime: false,
|
|
includeVars: false,
|
|
asDropdown: false,
|
|
icon: 'some icon',
|
|
tags,
|
|
title: 'some title',
|
|
tooltip: 'some tooltip',
|
|
type: 'dashboards',
|
|
url: '/d/6ieouugGk/DashLinks',
|
|
};
|
|
const backendSrv: any = {
|
|
search: jest.fn((args) => []),
|
|
};
|
|
|
|
return { link, backendSrv };
|
|
};
|
|
|
|
describe('when called', () => {
|
|
it('then tags from link should be used in search and limit should be 100', async () => {
|
|
const { link, backendSrv } = setupTestContext();
|
|
|
|
const results = await searchForTags(link.tags, { getBackendSrv: () => backendSrv });
|
|
|
|
expect(results.length).toEqual(0);
|
|
expect(backendSrv.search).toHaveBeenCalledWith({ tag: ['A', 'B'], limit: 100 });
|
|
expect(backendSrv.search).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('resolveLinks', () => {
|
|
const setupTestContext = (dashboardUID: string, searchHitId: string) => {
|
|
const link: DashboardLink = {
|
|
targetBlank: false,
|
|
keepTime: false,
|
|
includeVars: false,
|
|
asDropdown: false,
|
|
icon: 'some icon',
|
|
tags: [],
|
|
title: 'some title',
|
|
tooltip: 'some tooltip',
|
|
type: 'dashboards',
|
|
url: '/d/6ieouugGk/DashLinks',
|
|
};
|
|
const searchHits: DashboardSearchItem[] = [
|
|
{
|
|
uid: searchHitId,
|
|
title: 'DashLinks',
|
|
url: '/d/6ieouugGk/DashLinks',
|
|
isStarred: false,
|
|
items: [],
|
|
tags: [],
|
|
uri: 'db/DashLinks',
|
|
type: DashboardSearchItemType.DashDB,
|
|
},
|
|
];
|
|
const linkSrv: any = {
|
|
getLinkUrl: jest.fn((args) => args.url),
|
|
};
|
|
const sanitize = jest.fn((args) => args);
|
|
const sanitizeUrl = jest.fn((args) => args);
|
|
|
|
return { dashboardUID, link, searchHits, linkSrv, sanitize, sanitizeUrl };
|
|
};
|
|
|
|
describe('when called', () => {
|
|
it('should filter out the calling dashboardUID', () => {
|
|
const { dashboardUID, link, searchHits, linkSrv, sanitize, sanitizeUrl } = setupTestContext('1', '1');
|
|
|
|
const results = resolveLinks(dashboardUID, link, searchHits, {
|
|
getLinkSrv: () => linkSrv,
|
|
sanitize,
|
|
sanitizeUrl,
|
|
});
|
|
|
|
expect(results.length).toEqual(0);
|
|
expect(linkSrv.getLinkUrl).toHaveBeenCalledTimes(0);
|
|
expect(sanitize).toHaveBeenCalledTimes(0);
|
|
expect(sanitizeUrl).toHaveBeenCalledTimes(0);
|
|
});
|
|
|
|
it('should resolve link url', () => {
|
|
const { dashboardUID, link, searchHits, linkSrv, sanitize, sanitizeUrl } = setupTestContext('1', '2');
|
|
|
|
const results = resolveLinks(dashboardUID, link, searchHits, {
|
|
getLinkSrv: () => linkSrv,
|
|
sanitize,
|
|
sanitizeUrl,
|
|
});
|
|
|
|
expect(results.length).toEqual(1);
|
|
expect(linkSrv.getLinkUrl).toHaveBeenCalledTimes(1);
|
|
expect(linkSrv.getLinkUrl).toHaveBeenCalledWith({ ...link, url: searchHits[0].url });
|
|
});
|
|
|
|
it('should sanitize title', () => {
|
|
const { dashboardUID, link, searchHits, linkSrv, sanitize, sanitizeUrl } = setupTestContext('1', '2');
|
|
|
|
const results = resolveLinks(dashboardUID, link, searchHits, {
|
|
getLinkSrv: () => linkSrv,
|
|
sanitize,
|
|
sanitizeUrl,
|
|
});
|
|
|
|
expect(results.length).toEqual(1);
|
|
expect(sanitize).toHaveBeenCalledTimes(1);
|
|
expect(sanitize).toHaveBeenCalledWith(searchHits[0].title);
|
|
});
|
|
|
|
it('should sanitize url', () => {
|
|
const { dashboardUID, link, searchHits, linkSrv, sanitize, sanitizeUrl } = setupTestContext('1', '2');
|
|
|
|
const results = resolveLinks(dashboardUID, link, searchHits, {
|
|
getLinkSrv: () => linkSrv,
|
|
sanitize,
|
|
sanitizeUrl,
|
|
});
|
|
|
|
expect(results.length).toEqual(1);
|
|
expect(sanitizeUrl).toHaveBeenCalledTimes(1);
|
|
expect(sanitizeUrl).toHaveBeenCalledWith(searchHits[0].url);
|
|
});
|
|
});
|
|
});
|