123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- import { VariableSupportType } from '@grafana/data';
- import { LegacyVariableQueryEditor } from './editor/LegacyVariableQueryEditor';
- import { StandardVariableQueryEditor } from './editor/getVariableQueryEditor';
- import {
- hasCustomVariableSupport,
- hasDatasourceVariableSupport,
- hasLegacyVariableSupport,
- hasStandardVariableSupport,
- isLegacyQueryEditor,
- isQueryEditor,
- } from './guard';
- describe('type guards', () => {
- describe('hasLegacyVariableSupport', () => {
- describe('when called with a legacy data source', () => {
- it('should return true', () => {
- const datasource: any = { metricFindQuery: () => undefined };
- expect(hasLegacyVariableSupport(datasource)).toBe(true);
- });
- });
- describe('when called with data source without metricFindQuery function', () => {
- it('should return false', () => {
- const datasource: any = {};
- expect(hasLegacyVariableSupport(datasource)).toBe(false);
- });
- });
- describe('when called with a legacy data source with variable support', () => {
- it('should return false', () => {
- const datasource: any = { metricFindQuery: () => undefined, variables: {} };
- expect(hasLegacyVariableSupport(datasource)).toBe(false);
- });
- });
- });
- describe('hasStandardVariableSupport', () => {
- describe('when called with a data source with standard variable support', () => {
- it('should return true', () => {
- const datasource: any = {
- metricFindQuery: () => undefined,
- variables: { getType: () => VariableSupportType.Standard, toDataQuery: () => undefined },
- };
- expect(hasStandardVariableSupport(datasource)).toBe(true);
- });
- describe('and with a custom query', () => {
- it('should return true', () => {
- const datasource: any = {
- metricFindQuery: () => undefined,
- variables: {
- getType: () => VariableSupportType.Standard,
- toDataQuery: () => undefined,
- query: () => undefined,
- },
- };
- expect(hasStandardVariableSupport(datasource)).toBe(true);
- });
- });
- });
- describe('when called with a data source with partial standard variable support', () => {
- it('should return false', () => {
- const datasource: any = {
- metricFindQuery: () => undefined,
- variables: { getType: () => VariableSupportType.Standard, query: () => undefined },
- };
- expect(hasStandardVariableSupport(datasource)).toBe(false);
- });
- });
- describe('when called with a data source without standard variable support', () => {
- it('should return false', () => {
- const datasource: any = { metricFindQuery: () => undefined };
- expect(hasStandardVariableSupport(datasource)).toBe(false);
- });
- });
- });
- describe('hasCustomVariableSupport', () => {
- describe('when called with a data source with custom variable support', () => {
- it('should return true', () => {
- const datasource: any = {
- metricFindQuery: () => undefined,
- variables: { getType: () => VariableSupportType.Custom, query: () => undefined, editor: {} },
- };
- expect(hasCustomVariableSupport(datasource)).toBe(true);
- });
- });
- describe('when called with a data source with custom variable support but without editor', () => {
- it('should return false', () => {
- const datasource: any = {
- metricFindQuery: () => undefined,
- variables: { getType: () => VariableSupportType.Custom, query: () => undefined },
- };
- expect(hasCustomVariableSupport(datasource)).toBe(false);
- });
- });
- describe('when called with a data source with custom variable support but without query', () => {
- it('should return false', () => {
- const datasource: any = {
- metricFindQuery: () => undefined,
- variables: { getType: () => VariableSupportType.Custom, editor: {} },
- };
- expect(hasCustomVariableSupport(datasource)).toBe(false);
- });
- });
- describe('when called with a data source without custom variable support', () => {
- it('should return false', () => {
- const datasource: any = { metricFindQuery: () => undefined };
- expect(hasCustomVariableSupport(datasource)).toBe(false);
- });
- });
- });
- describe('hasDatasourceVariableSupport', () => {
- describe('when called with a data source with datasource variable support', () => {
- it('should return true', () => {
- const datasource: any = {
- metricFindQuery: () => undefined,
- variables: { getType: () => VariableSupportType.Datasource },
- };
- expect(hasDatasourceVariableSupport(datasource)).toBe(true);
- });
- });
- describe('when called with a data source without datasource variable support', () => {
- it('should return false', () => {
- const datasource: any = { metricFindQuery: () => undefined };
- expect(hasDatasourceVariableSupport(datasource)).toBe(false);
- });
- });
- });
- });
- describe('isLegacyQueryEditor', () => {
- describe('happy cases', () => {
- describe('when called with a legacy query editor but without a legacy data source', () => {
- it('then is should return true', () => {
- const component: any = LegacyVariableQueryEditor;
- const datasource: any = {};
- expect(isLegacyQueryEditor(component, datasource)).toBe(true);
- });
- });
- describe('when called with a legacy data source but without a legacy query editor', () => {
- it('then is should return true', () => {
- const component: any = StandardVariableQueryEditor;
- const datasource: any = { metricFindQuery: () => undefined };
- expect(isLegacyQueryEditor(component, datasource)).toBe(true);
- });
- });
- });
- describe('negative cases', () => {
- describe('when called without component', () => {
- it('then is should return false', () => {
- const component: any = null;
- const datasource: any = { metricFindQuery: () => undefined };
- expect(isLegacyQueryEditor(component, datasource)).toBe(false);
- });
- });
- describe('when called without a legacy query editor and without a legacy data source', () => {
- it('then is should return false', () => {
- const component: any = StandardVariableQueryEditor;
- const datasource: any = {};
- expect(isLegacyQueryEditor(component, datasource)).toBe(false);
- });
- });
- });
- });
- describe('isQueryEditor', () => {
- describe('happy cases', () => {
- describe('when called without a legacy editor and with a data source with standard variable support', () => {
- it('then is should return true', () => {
- const component: any = StandardVariableQueryEditor;
- const datasource: any = {
- variables: { getType: () => VariableSupportType.Standard, toDataQuery: () => undefined },
- };
- expect(isQueryEditor(component, datasource)).toBe(true);
- });
- });
- describe('when called without a legacy editor and with a data source with custom variable support', () => {
- it('then is should return true', () => {
- const component: any = StandardVariableQueryEditor;
- const datasource: any = {
- variables: { getType: () => VariableSupportType.Custom, query: () => undefined, editor: {} },
- };
- expect(isQueryEditor(component, datasource)).toBe(true);
- });
- });
- describe('when called without a legacy editor and with a data source with datasource variable support', () => {
- it('then is should return true', () => {
- const component: any = StandardVariableQueryEditor;
- const datasource: any = { variables: { getType: () => VariableSupportType.Datasource } };
- expect(isQueryEditor(component, datasource)).toBe(true);
- });
- });
- });
- describe('negative cases', () => {
- describe('when called without component', () => {
- it('then is should return false', () => {
- const component: any = null;
- const datasource: any = { metricFindQuery: () => undefined };
- expect(isQueryEditor(component, datasource)).toBe(false);
- });
- });
- describe('when called with a legacy query editor', () => {
- it('then is should return false', () => {
- const component: any = LegacyVariableQueryEditor;
- const datasource: any = { variables: { getType: () => VariableSupportType.Datasource } };
- expect(isQueryEditor(component, datasource)).toBe(false);
- });
- });
- describe('when called without a legacy query editor but with a legacy data source', () => {
- it('then is should return false', () => {
- const component: any = StandardVariableQueryEditor;
- const datasource: any = { metricFindQuery: () => undefined };
- expect(isQueryEditor(component, datasource)).toBe(false);
- });
- });
- });
- });
|