123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import { VariableSupportType } from '@grafana/data';
- import { LegacyVariableQueryEditor } from './LegacyVariableQueryEditor';
- import { getVariableQueryEditor, StandardVariableQueryEditor } from './getVariableQueryEditor';
- describe('getVariableQueryEditor', () => {
- describe('happy cases', () => {
- describe('when called with a data source with custom variable support', () => {
- it('then it should return correct editor', async () => {
- const editor: any = StandardVariableQueryEditor;
- const datasource: any = {
- variables: { getType: () => VariableSupportType.Custom, query: () => undefined, editor },
- };
- const result = await getVariableQueryEditor(datasource);
- expect(result).toBe(editor);
- });
- });
- describe('when called with a data source with standard variable support', () => {
- it('then it should return correct editor', async () => {
- const editor: any = StandardVariableQueryEditor;
- const datasource: any = {
- variables: { getType: () => VariableSupportType.Standard, toDataQuery: () => undefined },
- };
- const result = await getVariableQueryEditor(datasource);
- expect(result).toBe(editor);
- });
- });
- describe('when called with a data source with datasource variable support', () => {
- it('then it should return correct editor', async () => {
- const editor: any = StandardVariableQueryEditor;
- const plugin = { components: { QueryEditor: editor } };
- const importDataSourcePluginFunc = jest.fn().mockResolvedValue(plugin);
- const datasource: any = { variables: { getType: () => VariableSupportType.Datasource }, meta: {} };
- const result = await getVariableQueryEditor(datasource, importDataSourcePluginFunc);
- expect(result).toBe(editor);
- expect(importDataSourcePluginFunc).toHaveBeenCalledTimes(1);
- expect(importDataSourcePluginFunc).toHaveBeenCalledWith({});
- });
- });
- describe('when called with a data source with legacy variable support', () => {
- it('then it should return correct editor', async () => {
- const editor: any = StandardVariableQueryEditor;
- const plugin = { components: { VariableQueryEditor: editor } };
- const importDataSourcePluginFunc = jest.fn().mockResolvedValue(plugin);
- const datasource: any = { metricFindQuery: () => undefined, meta: {} };
- const result = await getVariableQueryEditor(datasource, importDataSourcePluginFunc);
- expect(result).toBe(editor);
- expect(importDataSourcePluginFunc).toHaveBeenCalledTimes(1);
- expect(importDataSourcePluginFunc).toHaveBeenCalledWith({});
- });
- });
- });
- describe('negative cases', () => {
- describe('when variable support is not recognized', () => {
- it('then it should return null', async () => {
- const datasource: any = {};
- const result = await getVariableQueryEditor(datasource);
- expect(result).toBeNull();
- });
- });
- describe('when called with a data source with datasource variable support but missing QueryEditor', () => {
- it('then it should return throw', async () => {
- const plugin = { components: {} };
- const importDataSourcePluginFunc = jest.fn().mockResolvedValue(plugin);
- const datasource: any = { variables: { getType: () => VariableSupportType.Datasource }, meta: {} };
- await expect(getVariableQueryEditor(datasource, importDataSourcePluginFunc)).rejects.toThrow(
- new Error('Missing QueryEditor in plugin definition.')
- );
- expect(importDataSourcePluginFunc).toHaveBeenCalledTimes(1);
- expect(importDataSourcePluginFunc).toHaveBeenCalledWith({});
- });
- });
- describe('when called with a data source with legacy variable support but missing VariableQueryEditor', () => {
- it('then it should return LegacyVariableQueryEditor', async () => {
- const plugin = { components: {} };
- const importDataSourcePluginFunc = jest.fn().mockResolvedValue(plugin);
- const datasource: any = { metricFindQuery: () => undefined, meta: {} };
- const result = await getVariableQueryEditor(datasource, importDataSourcePluginFunc);
- expect(result).toBe(LegacyVariableQueryEditor);
- expect(importDataSourcePluginFunc).toHaveBeenCalledTimes(1);
- expect(importDataSourcePluginFunc).toHaveBeenCalledWith({});
- });
- });
- });
- });
|