mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 13:42:15 +08:00
129 lines
2.8 KiB
TypeScript
129 lines
2.8 KiB
TypeScript
import { template } from 'lodash';
|
|
|
|
import { RawTimeRange, PanelPluginMeta, dateMath } from '@grafana/data';
|
|
import config from 'app/core/config';
|
|
import { ContextSrv } from 'app/core/services/context_srv';
|
|
import { PanelModel } from 'app/features/dashboard/state/PanelModel';
|
|
|
|
export function ControllerTestContext(this: any) {
|
|
const self = this;
|
|
|
|
this.datasource = {};
|
|
this.$element = {};
|
|
this.$sanitize = {};
|
|
this.annotationsSrv = {};
|
|
this.contextSrv = {};
|
|
this.timeSrv = new TimeSrvStub();
|
|
this.templateSrv = TemplateSrvStub();
|
|
this.datasourceSrv = {
|
|
getMetricSources: () => {},
|
|
get: () => {
|
|
return {
|
|
then: (callback: (ds: any) => void) => {
|
|
callback(self.datasource);
|
|
},
|
|
};
|
|
},
|
|
};
|
|
this.isUtc = false;
|
|
|
|
this.createPanelController = (Ctrl: any) => {
|
|
return () => {
|
|
self.panel = new PanelModel({ type: 'test' });
|
|
self.dashboard = { meta: {} };
|
|
self.isUtc = false;
|
|
self.dashboard.getTimezone = () => {
|
|
return self.isUtc ? 'utc' : 'browser';
|
|
};
|
|
config.panels['test'] = { info: {} } as PanelPluginMeta;
|
|
};
|
|
};
|
|
|
|
this.setIsUtc = (isUtc = false) => {
|
|
self.isUtc = isUtc;
|
|
};
|
|
}
|
|
|
|
export function DashboardViewStateStub(this: any) {
|
|
this.registerPanel = () => {};
|
|
}
|
|
|
|
export class TimeSrvStub {
|
|
time: RawTimeRange;
|
|
|
|
constructor() {
|
|
this.time = { from: 'now-1h', to: 'now' };
|
|
}
|
|
|
|
init() {}
|
|
|
|
timeRange(parse: boolean) {
|
|
if (parse === false) {
|
|
return this.time;
|
|
}
|
|
return {
|
|
from: dateMath.parse(this.time.from, false),
|
|
to: dateMath.parse(this.time.to, true),
|
|
};
|
|
}
|
|
|
|
setTime(time: RawTimeRange) {
|
|
this.time = time;
|
|
}
|
|
}
|
|
|
|
export class ContextSrvStub extends ContextSrv {
|
|
isGrafanaVisible = jest.fn();
|
|
|
|
getValidInterval() {
|
|
return '10s';
|
|
}
|
|
|
|
hasRole() {
|
|
return true;
|
|
}
|
|
|
|
isAllowedInterval() {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
export function TemplateSrvStub(this: any) {
|
|
this.variables = [];
|
|
this.getVariables = function () {
|
|
return this.variables;
|
|
};
|
|
this.templateSettings = { interpolate: /\[\[([\s\S]+?)\]\]/g };
|
|
this.data = {};
|
|
this.replace = (text: string) => {
|
|
return template(text, this.templateSettings)(this.data);
|
|
};
|
|
this.init = () => {};
|
|
this.getAdhocFilters = () => {
|
|
return [];
|
|
};
|
|
this.fillVariableValuesForUrl = () => {};
|
|
this.updateIndex = () => {};
|
|
this.containsTemplate = () => {
|
|
return false;
|
|
};
|
|
this.variableInitialized = () => {};
|
|
this.highlightVariablesAsHtml = (str: string) => {
|
|
return str;
|
|
};
|
|
this.setGrafanaVariable = function (name: string, value: string) {
|
|
this.data[name] = value;
|
|
};
|
|
}
|
|
|
|
const allDeps = {
|
|
ContextSrvStub,
|
|
TemplateSrvStub,
|
|
TimeSrvStub,
|
|
ControllerTestContext,
|
|
DashboardViewStateStub,
|
|
};
|
|
|
|
// for legacy
|
|
export default allDeps;
|