123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import { describe, expect } from '../../../../../test/lib/common';
- import { DashboardSearchHit, 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 = (dashboardId: number, searchHitId: number) => {
- 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: DashboardSearchHit[] = [
- {
- id: 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 { dashboardId, link, searchHits, linkSrv, sanitize, sanitizeUrl };
- };
- describe('when called', () => {
- it('should filter out the calling dashboardId', () => {
- const { dashboardId, link, searchHits, linkSrv, sanitize, sanitizeUrl } = setupTestContext(1, 1);
- const results = resolveLinks(dashboardId, 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 { dashboardId, link, searchHits, linkSrv, sanitize, sanitizeUrl } = setupTestContext(1, 2);
- const results = resolveLinks(dashboardId, 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 { dashboardId, link, searchHits, linkSrv, sanitize, sanitizeUrl } = setupTestContext(1, 2);
- const results = resolveLinks(dashboardId, 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 { dashboardId, link, searchHits, linkSrv, sanitize, sanitizeUrl } = setupTestContext(1, 2);
- const results = resolveLinks(dashboardId, link, searchHits, { getLinkSrv: () => linkSrv, sanitize, sanitizeUrl });
- expect(results.length).toEqual(1);
- expect(sanitizeUrl).toHaveBeenCalledTimes(1);
- expect(sanitizeUrl).toHaveBeenCalledWith(searchHits[0].url);
- });
- });
- });
|