EVOLUTION-MANAGER
Edit File: ShareModalCtrl.test.ts
import config from 'app/core/config'; import { LinkSrv } from 'app/features/panel/panellinks/link_srv'; import { ShareModalCtrl } from './ShareModalCtrl'; import { TemplateSrv } from 'app/features/templating/template_srv'; describe('ShareModalCtrl', () => { const ctx = { timeSrv: { timeRange: () => { return { from: new Date(1000), to: new Date(2000) }; }, }, $location: { absUrl: () => 'http://server/#!/test', search: () => { return { from: '', to: '' }; }, }, scope: { dashboard: { meta: { isSnapshot: true, }, }, }, templateSrv: { fillVariableValuesForUrl: () => {}, }, } as any; (window as any).Intl.DateTimeFormat = () => { return { resolvedOptions: () => { return { timeZone: 'UTC' }; }, }; }; beforeEach(() => { config.bootData = { user: { orgId: 1, }, }; // @ts-ignore ctx.ctrl = new ShareModalCtrl( ctx.scope, {} as any, ctx.$location, {}, ctx.timeSrv, ctx.templateSrv, new LinkSrv({} as TemplateSrv, ctx.stimeSrv) ); }); describe('shareUrl with current time range and panel', () => { it('should generate share url absolute time', () => { ctx.scope.panel = { id: 22 }; ctx.scope.init(); expect(ctx.scope.shareUrl).toBe('http://server/#!/test?from=1000&to=2000&orgId=1&panelId=22&fullscreen'); }); it('should generate render url', () => { ctx.$location.absUrl = () => 'http://dashboards.grafana.com/d/abcdefghi/my-dash'; ctx.scope.panel = { id: 22 }; ctx.scope.init(); const base = 'http://dashboards.grafana.com/render/d-solo/abcdefghi/my-dash'; const params = '?from=1000&to=2000&orgId=1&panelId=22&width=1000&height=500&tz=UTC'; expect(ctx.scope.imageUrl).toContain(base + params); }); it('should generate render url for scripted dashboard', () => { ctx.$location.absUrl = () => 'http://dashboards.grafana.com/dashboard/script/my-dash.js'; ctx.scope.panel = { id: 22 }; ctx.scope.init(); const base = 'http://dashboards.grafana.com/render/dashboard-solo/script/my-dash.js'; const params = '?from=1000&to=2000&orgId=1&panelId=22&width=1000&height=500&tz=UTC'; expect(ctx.scope.imageUrl).toContain(base + params); }); it('should remove panel id when no panel in scope', () => { ctx.$location.absUrl = () => 'http://server/#!/test'; ctx.scope.options.forCurrent = true; ctx.scope.panel = null; ctx.scope.init(); expect(ctx.scope.shareUrl).toBe('http://server/#!/test?from=1000&to=2000&orgId=1'); }); it('should add theme when specified', () => { ctx.scope.options.theme = 'light'; ctx.scope.panel = null; ctx.scope.init(); expect(ctx.scope.shareUrl).toBe('http://server/#!/test?from=1000&to=2000&orgId=1&theme=light'); }); it('should remove fullscreen from image url when is first param in querystring and modeSharePanel is true', () => { ctx.$location.search = () => { return { fullscreen: true, edit: true }; }; ctx.$location.absUrl = () => 'http://server/#!/test?fullscreen&edit'; ctx.scope.modeSharePanel = true; ctx.scope.panel = { id: 1 }; ctx.scope.buildUrl(); expect(ctx.scope.shareUrl).toContain('?fullscreen&edit&from=1000&to=2000&orgId=1&panelId=1'); expect(ctx.scope.imageUrl).toContain('?from=1000&to=2000&orgId=1&panelId=1&width=1000&height=500&tz=UTC'); }); it('should remove edit from image url when is first param in querystring and modeSharePanel is true', () => { ctx.$location.search = () => { return { edit: true, fullscreen: true }; }; ctx.$location.absUrl = () => 'http://server/#!/test?edit&fullscreen'; ctx.scope.modeSharePanel = true; ctx.scope.panel = { id: 1 }; ctx.scope.buildUrl(); expect(ctx.scope.shareUrl).toContain('?edit&fullscreen&from=1000&to=2000&orgId=1&panelId=1'); expect(ctx.scope.imageUrl).toContain('?from=1000&to=2000&orgId=1&panelId=1&width=1000&height=500&tz=UTC'); }); it('should include template variables in url', () => { ctx.$location.search = () => { return {}; }; ctx.$location.absUrl = () => 'http://server/#!/test'; ctx.scope.options.includeTemplateVars = true; ctx.templateSrv.fillVariableValuesForUrl = (params: any) => { params['var-app'] = 'mupp'; params['var-server'] = 'srv-01'; }; ctx.scope.buildUrl(); expect(ctx.scope.shareUrl).toContain( 'http://server/#!/test?from=1000&to=2000&orgId=1&var-app=mupp&var-server=srv-01' ); }); }); });